in fiosynth_lib/fiosynth.py [0:0]
def run_fio(p, VAL, dut_list, args, run, rtype):
resultsFileName = "%s/%s_run%d.json" % (FioDUT.fname, p[rtype][VAL]["alias"], run)
exitall_flag = " "
if args.exitall:
exitall_flag = " --exitall "
fioCmd = "fio --output-format=json%s--output=%s " % (
exitall_flag,
resultsFileName,
)
fioCmd += " " + args.expert.lstrip().rstrip() + " "
currDir = os.getcwd()
tmpJobDir = ""
if not dut_list[0].inLocalMode():
tmpJobDir = os.path.join(currDir, "tmpJobFiles")
cmdline("rm -rf %s" % (tmpJobDir))
cmdline("mkdir %s" % (tmpJobDir))
for dut in dut_list:
template = os.path.join(FioDUT.jobfiles, p[rtype][VAL]["template"])
f = dut.factor
jobVars = getJobVars(dut, p[rtype][VAL]["values"], f)
if args.misc != "":
jobVars["MISC"] = args.misc
if p["devices_in_global"] == "N":
template = createTempJobTemplate(dut, template)
if dut.inLocalMode():
for k, v in jobVars.items():
fioCmd = k + "=" + str(v) + " " + fioCmd
fioCmd = fioCmd + template
else:
f = open(template, "r")
tmpJbStr = f.read()
f.close()
for var in jobVars.keys():
tmpJbStr = tmpJbStr.replace("${%s}" % str(var), str(jobVars[var]))
tmpJbFileName = dut.serverName + "tmpJbFile"
tmpJbFilePath = os.path.join(tmpJobDir, tmpJbFileName)
cmdline("touch %s" % tmpJbFilePath)
try:
tmpFile = open(tmpJbFilePath, "w")
tmpFile.write(tmpJbStr)
finally:
tmpFile.close()
if dut.tunnel:
fioCmd = fioCmd + (
" --client=ip6:localhost,%d %s" % (dut.sshTunnelPort, tmpJbFilePath)
)
else:
fioCmd = fioCmd + (
" --client=ip6:%s %s" % (dut.serverName, tmpJbFilePath)
)
if args.dryrun == "n":
cmdline(fioCmd)
else:
print(fioCmd)
return resultsFileName