def setUp(self): webdir = config.config_dict()['WebDir'] if os.path.exists(webdir): shutil.rmtree(webdir) # This fills the database with sites picker.pick_site()
def test_no_ral_or_fnal(self): # Set all T2s to running self.loop('^T2_') # Set all other T1s self.loop('(?<!(K_RAL|_FNAL))_Disk') # Pick RAL self.assertEqual(picker.pick_site('UK_RAL'), 'T1_UK_RAL_Disk') # Only FNAL is left self.assertEqual(picker.pick_site(), 'T1_US_FNAL_Disk') self.assertRaises(picker.NoMatchingSite, picker.pick_site)
def test_forceentry(self): os.environ['ListAge'] = '5' os.environ['InventoryAge'] = '5' summary.opts.UPDATESUMMARY = True main.main(picker.pick_site()) self.assertTrue(self.entry())
def test_yesmore(self): dynamo_consistency.opts.MORELOGS = True site = picker.pick_site() main.main(site) unmerged = history.unmerged_files(site) self.assertTrue('/store/logs/prod/recent/test.tar.gz' in unmerged) self.assertFalse('/store/logs/prod/nope/test.tar.gz' in unmerged)
def test_no_ral(self): # Set all T2s to running self.loop('^T2_') # Set all other T1s self.loop('(?<!_RAL)_Disk') # Only RAL is left self.assertEqual(picker.pick_site(), 'T1_UK_RAL_Disk') self.assertRaises(picker.NoMatchingSite, picker.pick_site)
def test_act(self): site = picker.pick_site() history.start_run() history.report_empty([('/store/test/empty/dir', 100)]) history.finish_run() self.assertEqual(history.empty_directories(site), ['/store/test/empty/dir']) self.assertEqual(history.empty_directories(site, True), ['/store/test/empty/dir']) self.assertFalse(history.empty_directories(site))
def test_othersite(self): dynamo_consistency.opts.MORELOGS = True config.config_dict() config.CONFIG['AdditionalLogDeletions']['TEST_SITE2'] = config.CONFIG['AdditionalLogDeletions'].pop('TEST_SITE') site = picker.pick_site() main.main(site) self.assertTrue(history.orphan_files(site)) unmerged = history.unmerged_files(site) self.assertFalse('/store/logs/prod/recent/test.tar.gz' in unmerged) self.assertFalse('/store/logs/prod/nope/test.tar.gz' in unmerged)
def test_crash(self): site = picker.pick_site() summary.running(site) main.main(site) summary.unlock_site(site) self.assertFalse(history.unmerged_files(site)) # Test for completed run report conn = summary.LockedConn() results = conn.execute('SELECT * FROM stats;') self.assertTrue(list(results))
def test_prevmissing(self): # Check that missing only shows up after two consecutive, if missing file there site = picker.pick_site() with open('www/%s_compare_missing.txt' % site, 'w') as missing: pass main.main(site) self.assertFalse(main.registry.transfered) self.assertFalse(history.missing_files(site)) main.main(site) self.assertEqual(history.missing_files(main.config.SITE), ['/store/data/runB/0003/missing.root'])
def test_signaling(self): site = picker.pick_site() main.main(site) summary.unlock_site(site) self.assertEqual(summary.get_status(site), summary.READY) signaling.halt(2, 'dummy') self.assertEqual(summary.get_status(site), summary.HALT) summary.set_status(site, summary.DISABLED) signaling.halt(2, 'dummy') self.assertEqual(summary.get_status(site), summary.DISABLED)
def test_main(self): main.main(picker.pick_site()) self.assertFalse(history.RUN) # See dynamo_consistency.backend.test for expected results self.assertEqual(history.missing_files(main.config.SITE), ['/store/data/runB/0003/missing.root']) self.assertEqual(history.orphan_files(main.config.SITE), ['/store/data/runB/0001/orphan.root']) self.assertEqual(history.empty_directories(main.config.SITE), [ '/store/data/runC/0000/emtpy/dir', '/store/data/runC/0000/emtpy', '/store/data/runC/0000', '/store/data/runC' ])
def test_multiplemissing(self): site = picker.pick_site() history.start_run() history.report_empty([('/store/test/empty/dir', 100)]) history.report_empty([('/store/test/empty/dir', 100)]) history.finish_run() self.assertEqual(history.empty_directories(site), ['/store/test/empty/dir']) history.start_run() history.report_empty([('/store/test/empty/dir2', 100), ('/store/test/empty/dir2', 100)]) history.finish_run() self.assertEqual(history.empty_directories(site), ['/store/test/empty/dir2'])
def test_duplog(self): summary.unlock_site('TEST_SITE') logsetup.change_logfile('logs/test.log') main.main(picker.pick_site('TEST_SITE')) summary.unlock_site('TEST_SITE') deletion_lines = 0 with open('logs/test.log', 'r') as check: for line in check: if 'INFO:dynamo_consistency.dynamo.v1.registry: Deleting /store/data/runC/0000/emtpy/dir' in line: deletion_lines += 1 self.assertEqual(deletion_lines, 1)
def test_getnolock(self): self.assertEqual(picker.pick_site(lockname=''), 'TEST_SITE')
def setUp(self): for dirname in ['www', 'var']: if os.path.exists(dirname): shutil.rmtree(dirname) summary.unlock_site(picker.pick_site())
def test_nomore(self): site = picker.pick_site() main.main(site) unmerged = history.unmerged_files(site) self.assertFalse('/store/logs/prod/recent/test.tar.gz' in unmerged) self.assertFalse('/store/logs/prod/nope/test.tar.gz' in unmerged)
def loop(self, pattern): try: while True: self.assertFalse(picker.pick_site(pattern) == 'T1_UK_RAL_Disk') except picker.NoMatchingSite: pass
def test_noentry(self): os.environ['ListAge'] = '5' os.environ['InventoryAge'] = '5' main.main(picker.pick_site()) self.assertFalse(self.entry())
def test_regular(self): main.main(picker.pick_site()) self.assertTrue(self.entry())
def do_more_setup(self): # Run the main program main.main(picker.pick_site())
def test_normal(self): self.assertEqual(picker.pick_site('TEST'), 'TEST_SITE') self.assertEqual(picker.pick_site('GFAL'), 'GFAL_SITE') self.assertRaises(picker.NoMatchingSite, picker.pick_site, 'BAD')
def test_gfal(self): self.assertRaises(picker.NoMatchingSite, picker.pick_site, 'TEST', 'gfal') self.assertEqual(picker.pick_site('GFAL', 'gfal'), 'GFAL_SITE')
def test_getgfal(self): self.assertEqual(picker.pick_site(lockname='gfal'), 'GFAL_SITE')
def test_nolock(self): self.assertEqual(picker.pick_site('TEST', ''), 'TEST_SITE') self.assertRaises(picker.NoMatchingSite, picker.pick_site, 'GFAL', '')