Source code for toil.test.batchSystems.test_lsf_helper
"""lsfHelper.py shouldn't need a batch system and so the unit tests here should aim to run on any system."""
from toil.batchSystems.lsfHelper import parse_mem_and_cmd_from_output
from toil.test import ToilTest
[docs]
class LSFHelperTest(ToilTest):
[docs]
def test_parse_mem_and_cmd_from_output(self):
# https://github.com/DataBiosphere/toil/pull/3475
output = ('\nJob <2924748>, Job Name <toil_job_64>, User <thiagogenez>, Project <default>, S'
'\n tatus <RUN>, Queue <research-rh74>, Job Priority <50>, Com'
'\n mand <_toil_worker CactusBarRecursion file:/hps/nobackup/p'
'\n roduction/ensembl/thiagogenez/pairwises/arabidopsis/run/jo'
'\n bstore/3 kind-CactusBarRecursion/instance-iu6wo56x --conte'
'\n xt gAShortenedh32xqlE51Yi4=>, Share group charged </thiago'
'\n genez>, Esub <esub>'
'\nThu Mar 18 02:06:32: Submitted from host <noah-login-01>, CWD </hps/nobackup/pr'
'\n oduction/ensembl/thiagogenez/pairwises/arabidopsis/run>, S'
'\n pecified CWD </hps/nobackup/production/ensembl/thiagogenez'
'\n /pairwises/arabidopsis/run/.>, Output File </tmp/toil_work'
'\n flow_10e83102-2e4b-4093-9128-2a52f4bbc65a_job_64_batch_lsf'
'\n _2924748_std_output.log>, Error File </tmp/toil_workflow_1'
'\n 0e83102-2e4b-4093-9128-2a52f4bbc65a_job_64_batch_lsf_29247'
'\n 48_std_error.log>, Requested Resources <select[(mem>4000)]'
'\n rusage[mem=4000:duration=480, numcpus=1:duration=480]>;'
'\nThu Mar 18 02:06:33: Started on <hx-noah-31-02>, Execution Home </homes/thiagog'
'\n enez>, Execution CWD </hps/nobackup/production/ensembl/thi'
'\n agogenez/pairwises/arabidopsis/run/.>;'
'\nThu Mar 18 17:07:47: Resource usage collected.'
'\n The CPU time used is 53936 seconds.'
'\n MEM: 344 Mbytes; SWAP: 1.3 Gbytes; NTHREAD: 5'
'\n PGID: 433168; PIDs: 433168 433177 433179 444026 '
'\n'
'\n RUNLIMIT '
'\n 10085.0 min'
'\n'
'\n CORELIMIT MEMLIMIT'
'\n 0 M 3.9 G '
'\n'
'\n MEMORY USAGE:'
'\n MAX MEM: 2.5 Gbytes; AVG MEM: 343 Mbytes'
'\n'
'\n SCHEDULING PARAMETERS:'
'\n r15s r1m r15m ut pg io ls it tmp swp mem'
'\n loadSched - - - - 10.0 - - - 500M - 1000M '
'\n loadStop - - - - - - - - - - - '
'\n'
'\n availcpus '
'\n loadSched 1.0 '
'\n loadStop - '
'\n'
'\n RESOURCE REQUIREMENT DETAILS:'
'\n Combined: select[((mem>4000)) && (type == local)] order[r15s:pg] rusage[mem=40'
'\n 00.00:duration=8h:decay=0,numcpus=1.00:duration=8h:decay=0'
'\n ] span[hosts=1]'
'\n Effective: select[(((mem>4000))) && (type == local)] order[r15s:pg] rusage[mem'
'\n =4000.00:duration=8h:decay=0,numcpus=1.00:duration=8h:deca'
'\n y=0] span[hosts=1] '
'\n'
'\n')
max_mem, command = parse_mem_and_cmd_from_output(output=output)
assert len(max_mem.groups()) == 1
expected_mem = '2.5 Gbytes'
assert max_mem.group(1) == expected_mem, f'Actual: {max_mem.group(1)}, Expected: "{expected_mem}"'
assert len(command.groups()) == 1
expected_command = ('_toil_worker CactusBarRecursion file:/hps/nobackup/production/ensembl/thiagogenez/'
'pairwises/arabidopsis/run/jobstore/3 kind-CactusBarRecursion/instance-iu6wo56x '
'--context gAShortenedh32xqlE51Yi4=')
assert command.group(1) == expected_command, f'Actual: {command.group(1)}, Expected: "{expected_command}"'
print(command)
max_mem, command = parse_mem_and_cmd_from_output(output='')
assert max_mem == None
assert command == None