def test_g_Splitters(self): from Ganga.GPI import Job, GenericSplitter, GangaDataset, GangaDatasetSplitter, LocalFile # -- SPLITTERS BASICUSE START j = Job() j.splitter = GenericSplitter() j.splitter.attribute = 'application.args' j.splitter.values = [['hello', 1], ['world', 2], ['again', 3]] j.submit() # -- SPLITTERS BASICUSE STOP # -- SPLITTERS SUBJOBCHECK START j.subjobs j.subjobs(0).peek("stdout") # -- SPLITTERS SUBJOBCHECK STOP # -- SPLITTERS MULTIATTRS START j = Job() j.splitter = GenericSplitter() j.splitter.multi_attrs = {'application.args': ['hello1', 'hello2'], 'application.env': [{'MYENV':'test1'}, {'MYENV':'test2'}]} j.submit() # -- SPLITTERS MULTIATTRS STOP # -- SPLITTERS DATASETSPLITTER START j = Job() j.application.exe = 'more' j.application.args = ['__GangaInputData.txt__'] j.inputdata = GangaDataset( files=[ LocalFile('*.txt') ] ) j.splitter = GangaDatasetSplitter() j.splitter.files_per_subjob = 2 j.submit()
def test_g_Splitters(self): from Ganga.GPI import Job, GenericSplitter, GangaDataset, GangaDatasetSplitter, LocalFile # -- SPLITTERS BASICUSE START j = Job() j.splitter = GenericSplitter() j.splitter.attribute = 'application.args' j.splitter.values = [['hello', 1], ['world', 2], ['again', 3]] j.submit() # -- SPLITTERS BASICUSE STOP # -- SPLITTERS SUBJOBCHECK START j.subjobs j.subjobs(0).peek("stdout") # -- SPLITTERS SUBJOBCHECK STOP # -- SPLITTERS MULTIATTRS START j = Job() j.splitter = GenericSplitter() j.splitter.multi_attrs = { 'application.args': ['hello1', 'hello2'], 'application.env': [{ 'MYENV': 'test1' }, { 'MYENV': 'test2' }] } j.submit() # -- SPLITTERS MULTIATTRS STOP # -- SPLITTERS DATASETSPLITTER START j = Job() j.application.exe = 'more' j.application.args = ['__GangaInputData.txt__'] j.inputdata = GangaDataset(files=[LocalFile('*.txt')]) j.splitter = GangaDatasetSplitter() j.splitter.files_per_subjob = 2 j.submit()
def testKilling(self): """ Create some subjobs and kill them """ from Ganga.GPI import Job, GenericSplitter, Local from GangaTest.Framework.utils import sleep_until_state j = Job() j.application.exe = "sleep" j.splitter = GenericSplitter() j.splitter.attribute = 'application.args' j.splitter.values = [['400'] for _ in range(0, 5)] j.backend = Local() j.submit() sleep_until_state(j, None, 'running') assert j.status == 'running' j.subjobs(0).kill() assert j.subjobs(0).status == 'killed' assert j.subjobs(1).status != 'killed' j.kill() assert j.status == 'killed' assert all(sj.status == 'killed' for sj in j.subjobs)
def testKilling(self): """ Create some subjobs and kill them """ from Ganga.GPI import Job, GenericSplitter, Local from GangaTest.Framework.utils import sleep_until_state j = Job() j.application.exe = "sleep" j.splitter = GenericSplitter() j.splitter.attribute = 'application.args' j.splitter.values = [['400'] for _ in range(0, 5)] j.backend = Local() j.submit() sleep_until_state(j, None, 'running') assert j.status == 'running' j.subjobs(0).kill() assert j.subjobs(0).status == 'killed' assert j.subjobs(1).status != 'killed' j.kill() assert j.status == 'killed' assert all(sj.status == 'killed' for sj in j.subjobs)
def test_e_testInMemory(self): """ Test the resubmit on a job in memory vs a job which has been loaded from disk """ from Ganga.GPI import Job, Local j = Job() j.splitter = self._getSplitter() j.backend = Local() j.submit() from GangaTest.Framework.utils import sleep_until_completed sleep_until_completed(j) # Job has ben created, split, run and now exists in Memory (NOT SJXML) from Ganga.Utility.Config import setConfigOption setConfigOption('Configuration', 'resubmitOnlyFailedSubjobs', 'True') j.resubmit() sleep_until_completed(j) j.subjobs(0).resubmit() # We should get here if calling resubmit doesn't stall j.subjobs(0).force_status('failed', force=True) j.resubmit() sleep_until_completed(j) assert j.subjobs(0).status == 'completed' # Test resubmit from the master job worked j.subjobs(0).force_status('failed') j.subjobs(0).resubmit() sleep_until_completed(j) assert j.subjobs(0).status == 'completed' # Test that the resubmit from the subjob worked setConfigOption('Configuration', 'resubmitOnlyFailedSubjobs', 'False') j.resubmit() sleep_until_completed(j) j.subjobs(0).force_status('failed') j.resubmit() sleep_until_completed(j)
def test_e_testInMemory(self): """ Test the resubmit on a job in memory vs a job which has been loaded from disk """ from Ganga.GPI import Job, Local j=Job() j.splitter = self._getSplitter() j.backend = Local() j.submit() from GangaTest.Framework.utils import sleep_until_completed sleep_until_completed(j) # Job has ben created, split, run and now exists in Memory (NOT SJXML) from Ganga.Utility.Config import setConfigOption setConfigOption('Configuration', 'resubmitOnlyFailedSubjobs', 'True') j.resubmit() sleep_until_completed(j) j.subjobs(0).resubmit() # We should get here if calling resubmit doesn't stall j.subjobs(0).force_status('failed') j.resubmit() sleep_until_completed(j) assert j.subjobs(0).status == 'completed' # Test resubmit from the master job worked j.subjobs(0).force_status('failed') j.subjobs(0).resubmit() sleep_until_completed(j) assert j.subjobs(0).status == 'completed' # Test that the resubmit from the subjob worked setConfigOption('Configuration', 'resubmitOnlyFailedSubjobs', 'False') j.resubmit() sleep_until_completed(j) j.subjobs(0).force_status('failed') j.resubmit() sleep_until_completed(j)