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
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]")
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]")
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.")
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]")
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'
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]")
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]")
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'
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]")
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)
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]")
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
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)