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