Ejemplo n.º 1
0
    def test_create_release(self):
        """ Test creation of upgrades """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        from invenio.modules.upgrader.commands import \
            cmd_upgrade_create_standard_recipe, \
            cmd_upgrade_create_release_recipe

        engine = InvenioUpgrader(packages=[
            'invenio_upgrader_test', 'invenio_upgrader_test.mymod'])

        cmd_upgrade_create_standard_recipe(
            'invenio_upgrader_test', depends_on=[]
        )
        cmd_upgrade_create_standard_recipe(
            'invenio_upgrader_test.mymod', depends_on=[]
        )

        cmd_upgrade_create_release_recipe(
            'invenio_upgrader_test', repository='invenio', upgrader=engine
        )

        # Find all endpoints in all repositories
        upgrades = engine.get_upgrades(remove_applied=False)
        for u in upgrades:
            if u['id'] == 'invenio_release_x_y_z':
                assert len(u['depends_on']) == 2
Ejemplo n.º 2
0
    def test_two_graphs(self):
        """
        Two independent graphs
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1'], 'invenio'),
            TestUpgrade('a', [], 'other'),
            TestUpgrade('b', ['a'], 'other'),
            TestUpgrade('c', ['a'], 'other'),
            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', [
                '5',
            ], 'invenio'),
            TestUpgrade('d', ['b'], 'other'),
            TestUpgrade('e', ['c', 'd'], 'other'),
            TestUpgrade('f', [
                'e',
            ], 'other'),
        ])

        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades)),
                         "[1, 2, 4, 3, 5, 6, a, b, d, c, e, f]")
Ejemplo n.º 3
0
    def test_two_graphs(self):
        """
        Two independent graphs
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1'], 'invenio'),

            TestUpgrade('a', [], 'other'),
            TestUpgrade('b', ['a'], 'other'),
            TestUpgrade('c', ['a'], 'other'),

            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', ['5', ], 'invenio'),

            TestUpgrade('d', ['b'], 'other'),
            TestUpgrade('e', ['c', 'd'], 'other'),
            TestUpgrade('f', ['e', ], 'other'),
        ])

        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades)),
                         "[1, 2, 4, 3, 5, 6, a, b, d, c, e, f]")
Ejemplo n.º 4
0
def populate(default_data=True, truncate_tables_first=False):
    """Populate database with default data"""

    from invenio.config import CFG_PREFIX
    from invenio.base.scripts.config import get_conf

    if not default_data:
        print('>>> No data filled...')
        return

    print(">>> Going to fill tables...")

    load_fixtures(truncate_tables_first=truncate_tables_first)

    conf = get_conf()

    from invenio.legacy.inveniocfg import cli_cmd_reset_sitename, \
        cli_cmd_reset_siteadminemail, cli_cmd_reset_fieldnames

    cli_cmd_reset_sitename(conf)
    cli_cmd_reset_siteadminemail(conf)
    cli_cmd_reset_fieldnames(conf)

    for cmd in ["%s/bin/webaccessadmin -u admin -c -a" % CFG_PREFIX]:
        if os.system(cmd):
            print("ERROR: failed execution of", cmd)
            sys.exit(1)

    from invenio.modules.upgrader.engine import InvenioUpgrader
    iu = InvenioUpgrader()
    map(iu.register_success, iu.get_upgrades())

    print(">>> Tables filled successfully.")
Ejemplo n.º 5
0
    def test_normal(self):
        """
        Normal dependency graph
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1'], 'invenio'),
            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', ['5', ], 'invenio'),
        ])

        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades)),
                         "[1, 2, 4, 3, 5, 6]")
Ejemplo n.º 6
0
    def test_create_load_engine(self):
        """ Test creation and loading of upgrades with engine """
        from invenio.modules.upgrader.commands import \
            cmd_upgrade_create_standard_recipe

        cmd_upgrade_create_standard_recipe('invenio_upgrader_test',
                                           depends_on=[])

        expexted_name = "invenio_upgrader_test_%s_rename_me" % \
            date.today().strftime("%Y_%m_%d")

        # Test if upgrade can be found from the Upgrade
        from invenio.modules.upgrader.engine import InvenioUpgrader
        eng = InvenioUpgrader(packages=['invenio_upgrader_test'])
        upgrades = eng.get_upgrades(remove_applied=False)
        assert len(upgrades) == 1
        assert upgrades[0]['id'] == expexted_name
        assert upgrades[0]['repository'] == 'invenio_upgrader_test'
Ejemplo n.º 7
0
    def test_cross_graph_dependency(self):
        """
        Missing dependency 0
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1', 'b'], 'invenio'),
            TestUpgrade('a', [], 'other'),
            TestUpgrade('b', ['a'], 'other'),
            TestUpgrade('c', ['2'], 'other'),
        ])

        m = InvenioUpgrader()
        #self.assertRaises(StandardError, m.order_upgrades, upgrades)
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades)),
                         "[1, 2, c, a, b, 3]")
Ejemplo n.º 8
0
    def test_cross_graph_dependency(self):
        """
        Missing dependency 0
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1', 'b'], 'invenio'),
            TestUpgrade('a', [], 'other'),
            TestUpgrade('b', ['a'], 'other'),
            TestUpgrade('c', ['2'], 'other'),
        ])

        m = InvenioUpgrader()
        #self.assertRaises(StandardError, m.order_upgrades, upgrades)
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades)),
                         "[1, 2, c, a, b, 3]")
Ejemplo n.º 9
0
    def test_normal(self):
        """
        Normal dependency graph
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1'], 'invenio'),
            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', [
                '5',
            ], 'invenio'),
        ])

        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades)),
                         "[1, 2, 4, 3, 5, 6]")
Ejemplo n.º 10
0
    def test_create_load_engine(self):
        """ Test creation and loading of upgrades with engine """
        from invenio.modules.upgrader.commands import \
            cmd_upgrade_create_standard_recipe

        cmd_upgrade_create_standard_recipe(
            'invenio_upgrader_test',
            depends_on=[]
        )

        expexted_name = "invenio_upgrader_test_%s_rename_me" % \
            date.today().strftime("%Y_%m_%d")

        # Test if upgrade can be found from the Upgrade
        from invenio.modules.upgrader.engine import InvenioUpgrader
        eng = InvenioUpgrader(packages=['invenio_upgrader_test'])
        upgrades = eng.get_upgrades(remove_applied=False)
        assert len(upgrades) == 1
        assert upgrades[0]['id'] == expexted_name
        assert upgrades[0]['repository'] == 'invenio_upgrader_test'
Ejemplo n.º 11
0
    def test_history(self):
        """
        History
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1'], 'invenio'),
            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', [
                '5',
            ], 'invenio'),
        ])

        history = dictify(['1', '2', '4'], value=1)
        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades, history)),
                         "[3, 5, 6]")

        history = dictify(['3', '5'], value=1)
        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades, history)),
                         "[6]")
Ejemplo n.º 12
0
    def test_missing_dependency(self):
        """
        Missing dependency 0
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1', '0'], 'invenio'),
        ])

        m = InvenioUpgrader()
        self.assertRaises(StandardError, m.order_upgrades, upgrades)
Ejemplo n.º 13
0
    def test_history(self):
        """
        History
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1'], 'invenio'),
            TestUpgrade('3', ['1'], 'invenio'),
            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', ['5', ], 'invenio'),
        ])

        history = dictify(['1', '2', '4'], value=1)
        m = InvenioUpgrader()
        self.assertEqual(upgrades_str(m.order_upgrades(upgrades, history)),
                         "[3, 5, 6]")

        history = dictify(['3', '5'], value=1)
        m = InvenioUpgrader()
        self.assertEqual(
            upgrades_str(m.order_upgrades(upgrades, history)), "[6]")
Ejemplo n.º 14
0
    def test_create_release(self):
        """ Test creation of upgrades """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        from invenio.modules.upgrader.commands import \
            cmd_upgrade_create_standard_recipe, \
            cmd_upgrade_create_release_recipe

        engine = InvenioUpgrader(
            packages=['invenio_upgrader_test', 'invenio_upgrader_test.mymod'])

        cmd_upgrade_create_standard_recipe('invenio_upgrader_test',
                                           depends_on=[])
        cmd_upgrade_create_standard_recipe('invenio_upgrader_test.mymod',
                                           depends_on=[])

        cmd_upgrade_create_release_recipe('invenio_upgrader_test',
                                          repository='invenio',
                                          upgrader=engine)

        # Find all endpoints in all repositories
        upgrades = engine.get_upgrades(remove_applied=False)
        for u in upgrades:
            if u['id'] == 'invenio_release_x_y_z':
                assert len(u['depends_on']) == 2
Ejemplo n.º 15
0
    def test_cycle(self):
        """
        Cycle 2, 4, 3.
        """
        from invenio.modules.upgrader.engine import InvenioUpgrader
        upgrades = dictify([
            TestUpgrade('1', [], 'invenio'),
            TestUpgrade('2', ['1', '3'], 'invenio'),
            TestUpgrade('3', ['1', '4'], 'invenio'),
            TestUpgrade('4', ['2'], 'invenio'),
            TestUpgrade('5', ['3', '4'], 'invenio'),
            TestUpgrade('6', [
                '5',
            ], 'invenio'),
        ])

        m = InvenioUpgrader()
        self.assertRaises(StandardError, m.order_upgrades, upgrades)