Files
VisualSapfor/src/SapforTestingSystem/PackageModeSupervisor/PackageModeSupervisor.java

73 lines
3.2 KiB
Java
Raw Normal View History

2023-10-15 20:50:33 +03:00
package SapforTestingSystem.PackageModeSupervisor;
import Common.Constants;
import Common.Global;
import Common.Utils.Utils;
2023-10-26 23:56:39 +03:00
import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforTasksPackage_json;
import SapforTestingSystem.Json.SapforTasksResults_json;
import SapforTestingSystem.Json.SapforTest_json;
2023-10-15 20:50:33 +03:00
import SapforTestingSystem.PerformSapforTask;
import SapforTestingSystem.SapforTask.SapforTask;
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
2023-10-24 19:42:01 +03:00
import Visual_DVM_2021.Passes.PassCode_2021;
2023-10-15 20:50:33 +03:00
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Date;
import java.util.Vector;
2023-10-15 20:50:33 +03:00
public class PackageModeSupervisor extends ThreadsPlanner {
SapforTasksPackage_json package_json = null;
SapforTasksResults_json results_json = new SapforTasksResults_json();
public PackageModeSupervisor() throws Exception {
super(2000);
package_json = (SapforTasksPackage_json) Utils.jsonFromFile(new File(Global.Home, Constants.package_json), SapforTasksPackage_json.class);
2023-10-15 21:58:23 +03:00
Date startDate = new Date();
results_json.StartDate = startDate.getTime();
File started = new File(Constants.STARTED);
FileUtils.writeStringToFile(started, String.valueOf(startDate));
2023-10-15 20:50:33 +03:00
//формирование списка задач.
File sapfor_drv = new File(Global.Home, package_json.sapfor_drv);
setMaxKernels(package_json.kernels);
for (SapforConfiguration_json sapforConfiguration_json : package_json.configurations) {
for (SapforTest_json test : package_json.tests) {
2023-10-15 20:50:33 +03:00
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
SapforTask task = new SapforTask();
task.group_description = test.group_description;
task.test_description = test.test_description;
2023-10-18 22:16:22 +03:00
task.flags = sapforConfiguration_json.flags;
task.sapfor_configuration_id = sapforConfiguration_json.id;
2023-10-15 20:50:33 +03:00
results_json.tasks.add(task);
2023-10-24 19:42:01 +03:00
Vector<String> codes_s = new Vector<>();
for (PassCode_2021 code: sapforConfiguration_json.codes){
codes_s.add(code.toString());
}
task.codes = String.join(" ", codes_s);
2023-10-15 20:50:33 +03:00
//---
addThread(() -> {
while (!task.state.isComplete()) {
task.Reset();
new PerformSapforTask().Do(
sapfor_drv,
sapforConfiguration_json,
task
);
}
});
2023-10-15 20:50:33 +03:00
}
}
interruptThread.start();
}
@Override
protected void finalize() {
results_json.EndDate = new Date().getTime();
//записать результаты всех задач.
try {
Utils.jsonToFile(results_json, new File(Global.Home, Constants.results_json));
2023-10-15 20:50:33 +03:00
FileUtils.writeStringToFile(new File(Constants.DONE), "");
} catch (Exception e) {
Global.Log.PrintException(e);
}
System.exit(0);
}
}