import re
import os
-from MBIutils import *
+import subprocess
+import MBIutils as mbi
-class Tool(AbstractTool):
+class Tool(mbi.AbstractTool):
def identify(self):
return "SimGrid wrapper"
os.chdir(here)
- def ensure_image(self):
- AbstractTool.ensure_image(self, "-x simgrid")
+ def ensure_image(self, params=None, dockerparams=None):
+ mbi.AbstractTool.ensure_image(self, "-x simgrid")
def setup(self, rootdir):
os.environ['PATH'] = os.environ['PATH'] + ":" + rootdir + "/builds/SimGrid/bin"
os.environ['VERBOSE'] = '1'
- def run(self, execcmd, filename, binary, id, timeout, batchinfo):
- cachefile = f'{binary}_{id}'
+ def run(self, execcmd, filename, binary, num_id, timeout, batchinfo):
+ cachefile = f'{binary}_{num_id}'
if not os.path.exists("cluster.xml"):
with open('cluster.xml', 'w') as outfile:
outfile.write(' <cluster id="acme" prefix="node-" radical="0-99" suffix="" speed="1Gf" bw="125MBps" lat="50us"/>\n')
outfile.write('</platform>\n')
- execcmd = execcmd.replace("mpirun", "smpirun -wrapper simgrid-mc -platform ./cluster.xml -analyze --cfg=smpi/finalization-barrier:on --cfg=smpi/list-leaks:10 --cfg=model-check/max-depth:10000")
+ execcmd = execcmd.replace("mpirun", "smpirun -wrapper simgrid-mc -platform ./cluster.xml -analyze --cfg=smpi/barrier-finalization:on --cfg=smpi/list-leaks:10 --cfg=model-check/max-depth:10000")
execcmd = execcmd.replace('${EXE}', binary)
execcmd = execcmd.replace('$zero_buffer', "--cfg=smpi/buffering:zero")
execcmd = execcmd.replace('$infty_buffer', "--cfg=smpi/buffering:infty")
- run_cmd(
+ mbi.run_cmd(
buildcmd=f"smpicc {filename} -trace-call-location -g -Wl,-znorelro -Wl,-znoseparate-code -o {binary}",
execcmd=execcmd,
cachefile=cachefile,
batchinfo=batchinfo)
def teardown(self):
- subprocess.run("find -type f -a -executable | xargs rm -f", shell=True, check=True) # Remove generated cruft (binary files)
- subprocess.run("rm -f smpitmp-* core", shell=True, check=True)
+ subprocess.run("find -type f -a -executable -exec rm -f {} +", shell=True, check=True) # Remove generated cruft (binary files)
+ subprocess.run("rm -f smpitmp-* core", shell=True, check=True)
def parse(self, cachefile):
if os.path.exists(f'{cachefile}.timeout') or os.path.exists(f'logs/simgrid/{cachefile}.timeout'):
with open(f'{cachefile}.txt' if os.path.exists(f'{cachefile}.txt') else f'logs/simgrid/{cachefile}.txt', 'r') as infile:
output = infile.read()
- if re.search('Compilation of .*? raised an error \(retcode: ', output):
+ if re.search(r'Compilation of .*? raised an error \(retcode: ', output):
return 'UNIMPLEMENTED'
if re.search('MBI_MSG_RACE', output):
if re.search('DFS exploration ended.', output):
return 'OK'
- print (f">>>>[ INCONCLUSIVE ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ({cachefile})")
+ print(f">>>>[ INCONCLUSIVE ]>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ({cachefile})")
print(output)
- print ("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
+ print("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
return 'other'