2023-11-19 02:12:44 +03:00
|
|
|
|
package TestingSystem.SAPFOR;
|
2023-10-15 20:50:33 +03:00
|
|
|
|
import Common.Constants;
|
|
|
|
|
|
import Common.Global;
|
|
|
|
|
|
import Common.Utils.Utils;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import TestingSystem.SAPFOR.Json.SapforConfiguration_json;
|
2023-12-25 00:33:14 +03:00
|
|
|
|
import TestingSystem.SAPFOR.Json.SapforPackage_json;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import TestingSystem.SAPFOR.Json.SapforTest_json;
|
2023-12-25 00:33:14 +03:00
|
|
|
|
import TestingSystem.SAPFOR.Json.SapforTestingSet_json;
|
2023-11-19 02:12:44 +03:00
|
|
|
|
import TestingSystem.SAPFOR.SapforTask.SapforTask;
|
|
|
|
|
|
import TestingSystem.Common.TaskThread;
|
|
|
|
|
|
import TestingSystem.Common.ThreadsPlanner.ThreadsPlanner;
|
|
|
|
|
|
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;
|
2023-12-16 03:57:01 +03:00
|
|
|
|
import java.nio.charset.Charset;
|
2023-10-15 20:50:33 +03:00
|
|
|
|
import java.util.Date;
|
2023-10-22 23:22:49 +03:00
|
|
|
|
import java.util.Vector;
|
2023-10-15 20:50:33 +03:00
|
|
|
|
public class PackageModeSupervisor extends ThreadsPlanner {
|
2023-12-25 00:33:14 +03:00
|
|
|
|
SapforPackage_json package_json = null;
|
2023-12-16 03:57:01 +03:00
|
|
|
|
File sapfor_drv=null;
|
|
|
|
|
|
|
2023-10-15 20:50:33 +03:00
|
|
|
|
public PackageModeSupervisor() throws Exception {
|
|
|
|
|
|
super(2000);
|
2023-12-25 00:33:14 +03:00
|
|
|
|
package_json = (SapforPackage_json) Utils.jsonFromFile(new File(Constants.package_json), SapforPackage_json.class);
|
2023-12-16 03:57:01 +03:00
|
|
|
|
//--
|
|
|
|
|
|
File sapfor_src = new File(package_json.sapfor_drv);
|
|
|
|
|
|
sapfor_drv = new File(Global.Home,Utils.getDateName("SAPFOR_F"));
|
|
|
|
|
|
FileUtils.copyFile(sapfor_src, sapfor_drv);
|
|
|
|
|
|
if (!sapfor_drv.setExecutable(true))
|
|
|
|
|
|
throw new Exception("Не удалось сделать файл " + sapfor_drv.getName() + " исполняемым!");
|
|
|
|
|
|
File PID = new File( "PID");
|
|
|
|
|
|
FileUtils.writeStringToFile(PID, sapfor_drv.getName(), Charset.defaultCharset());
|
|
|
|
|
|
//---
|
2023-10-15 21:58:23 +03:00
|
|
|
|
Date startDate = new Date();
|
|
|
|
|
|
File started = new File(Constants.STARTED);
|
|
|
|
|
|
FileUtils.writeStringToFile(started, String.valueOf(startDate));
|
2023-10-15 20:50:33 +03:00
|
|
|
|
//формирование списка задач.
|
|
|
|
|
|
setMaxKernels(package_json.kernels);
|
2023-12-16 03:57:01 +03:00
|
|
|
|
int max_rask_id=0;
|
2023-12-25 00:33:14 +03:00
|
|
|
|
for (SapforTestingSet_json set_json: package_json.testingSets) {
|
|
|
|
|
|
for (SapforConfiguration_json sapforConfiguration_json : set_json.configurations) {
|
|
|
|
|
|
for (SapforTest_json test : set_json.tests) {
|
|
|
|
|
|
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
|
|
|
|
|
|
SapforTask task = new SapforTask();
|
|
|
|
|
|
task.id = max_rask_id++;
|
|
|
|
|
|
task.group_description = test.group_description;
|
|
|
|
|
|
task.test_description = test.description;
|
|
|
|
|
|
task.flags = sapforConfiguration_json.flags;
|
|
|
|
|
|
task.sapfor_configuration_id = sapforConfiguration_json.id;
|
|
|
|
|
|
task.sapfortaskspackage_id = Integer.parseInt(new File(Global.Home).getName());
|
|
|
|
|
|
package_json.tasks.add(task);
|
|
|
|
|
|
Vector<String> codes_s = new Vector<>();
|
|
|
|
|
|
for (PassCode_2021 code : sapforConfiguration_json.codes) {
|
|
|
|
|
|
codes_s.add(code.toString());
|
|
|
|
|
|
}
|
|
|
|
|
|
task.codes = String.join(" ", codes_s);
|
|
|
|
|
|
//---
|
|
|
|
|
|
addThread(new TaskThread(task,
|
|
|
|
|
|
sapfor_drv,
|
|
|
|
|
|
set_json,
|
|
|
|
|
|
sapforConfiguration_json)
|
|
|
|
|
|
);
|
2023-10-24 19:42:01 +03:00
|
|
|
|
}
|
2023-10-15 20:50:33 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
interruptThread.start();
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
2023-11-14 16:19:31 +03:00
|
|
|
|
public String printThread(Integer id) {
|
|
|
|
|
|
TaskThread taskThread = (TaskThread) threads.get(id);
|
|
|
|
|
|
return taskThread.task.getSummary();
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
2023-10-15 20:50:33 +03:00
|
|
|
|
protected void finalize() {
|
|
|
|
|
|
//записать результаты всех задач.
|
|
|
|
|
|
try {
|
2023-12-16 03:57:01 +03:00
|
|
|
|
Utils.jsonToFile(package_json, new File(Constants.package_json));
|
2023-10-15 20:50:33 +03:00
|
|
|
|
FileUtils.writeStringToFile(new File(Constants.DONE), "");
|
2023-12-16 03:57:01 +03:00
|
|
|
|
//--
|
|
|
|
|
|
//Очистка
|
|
|
|
|
|
|
|
|
|
|
|
//очистка служебных файлов.
|
|
|
|
|
|
Utils.deleteFilesByExtensions(new File(Global.Home),
|
|
|
|
|
|
"proj", "dep", "jar"
|
|
|
|
|
|
// ,"sh", "exe", "bat"
|
|
|
|
|
|
);
|
|
|
|
|
|
//удаление сапфора
|
|
|
|
|
|
|
|
|
|
|
|
if (sapfor_drv.exists())
|
|
|
|
|
|
FileUtils.forceDelete(sapfor_drv);
|
2023-10-15 20:50:33 +03:00
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
Global.Log.PrintException(e);
|
|
|
|
|
|
}
|
|
|
|
|
|
System.exit(0);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|