Files
VisualSapfor/Planner/RunTask.h

97 lines
2.8 KiB
C++

#pragma once
#include "CompilationTask.h"
class RunTask : public Task {
long testcompilationtask_id;
String binary_name;
String matrix;
String environments;
String usr_par;
String args;
CompilationTask* parent;
public:
virtual void print() const {
printf("id=%ld; maxtime=%d; testcompilationtask_id=%ld; matrix=%s; environments=%s; usr_par=%s; args=%s kernels=%d\n",
id,
maxtime,
testcompilationtask_id,
matrix.getCharArray(),
environments.getCharArray(),
usr_par.getCharArray(),
args.getCharArray(),
kernels
);
}
int setKernels(String* kernels_s) {
return kernels = atoi(kernels_s->getCharArray());
}
long setTestCompilationTaskId(String* id_s) {
return testcompilationtask_id = strtol(id_s->getCharArray(), NULL, 10);
}
long getTestCompilationTaskId() {
return testcompilationtask_id;
}
void setMatrix(String* matrix_in) {
matrix = String(matrix_in->getCharArray());
}
void setEnvironments(String* environments_in) {
environments = String(environments_in->getCharArray());
}
void setUsrPar(String* usr_par_in) {
usr_par = String(usr_par_in->getCharArray(), '|');
}
void setArgs(String* args_in) {
args = String(args_in->getCharArray());
}
void setParent(CompilationTask* parent_in) {
parent = parent_in;
binary_name = "spf_" + String(id) + "_" + matrix.Replace(' ', '_');
}
CompilationTask* getParent() {
return parent;
}
RunTask(Text* lines, int offset) :Task(lines, offset) {
setTestCompilationTaskId(lines->get(offset + 2));
setMatrix(lines->get(offset + 3));
setEnvironments(lines->get(offset + 4));
setUsrPar(lines->get(offset + 5));
setArgs(lines->get(offset + 6));
setKernels(lines->get(offset + 7));
}
virtual String getLaunchScriptText() {
String modules = userWorkspace + "/modules";
String starterCall = modules + "/starter";
String launcherCall = modules + "/launcher";
//-
String dvm_start = String::DQuotes(dvm_drv) + " run ";
if (!matrix.isEmpty())
dvm_start = dvm_start + matrix + " ";
dvm_start = dvm_start + String::DQuotes("./" + binary_name);
if (!args.isEmpty())
dvm_start = dvm_start + " " + args;
return String::DQuotes(starterCall) + " " +
String::DQuotes(launcherCall) + " " +
String(maxtime) + " " +
String::DQuotes("killall -SIGKILL " + binary_name) + " " +
dvm_start;
}
virtual void prepareWorkspace() {
String binary_src = parent->getWorkspace() + "/0";
String binary_dst = workspace + "/" + binary_name;
Utils::Copy(binary_src, binary_dst);
if (!usr_par.isEmpty()) {
String parPath = String(id) + "/usr.par";
File parFile = File(parPath, usr_par);
}
}
virtual String getStartCommand() {
String res = workspace + "/run";
if (!environments.isEmpty())
res = environments + " " + res;
printf("START %ld: %s\n", id, res.getCharArray());
return res;
}
};