2023-10-15 20:50:33 +03:00
|
|
|
package SapforTestingSystem.PackageModeSupervisor;
|
|
|
|
|
import Common.Constants;
|
|
|
|
|
import Common.Global;
|
|
|
|
|
import Common.Utils.Utils;
|
2023-10-22 23:22:49 +03:00
|
|
|
import ProjectData.Files.DBProjectFile;
|
|
|
|
|
import ProjectData.Files.FileType;
|
|
|
|
|
import SapforTestingSystem.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;
|
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 {
|
|
|
|
|
SapforTasksPackage_json package_json = null;
|
|
|
|
|
SapforTasksResults_json results_json = new SapforTasksResults_json();
|
|
|
|
|
public PackageModeSupervisor() throws Exception {
|
|
|
|
|
super(2000);
|
2023-10-18 14:05:51 +03:00
|
|
|
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) {
|
2023-10-21 02:47:21 +03:00
|
|
|
for (SapforTest_json test : package_json.tests) {
|
2023-10-15 20:50:33 +03:00
|
|
|
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
|
|
|
|
|
SapforTask task = new SapforTask();
|
2023-10-21 02:47:21 +03:00
|
|
|
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
|
|
|
//---
|
2023-10-23 01:32:28 +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 {
|
2023-10-22 23:22:49 +03:00
|
|
|
for (SapforTask task : results_json.tasks) {
|
|
|
|
|
//--
|
2023-10-25 16:33:02 +03:00
|
|
|
task.filesList = new Vector<>();
|
2023-10-22 23:22:49 +03:00
|
|
|
//--
|
|
|
|
|
if (task.versions.size() > 1) {
|
|
|
|
|
SapforVersion_json correctness = task.versions.get(1); //0 - исходная, 1 коррекция стиля кода.
|
|
|
|
|
File home = new File(correctness.version);
|
|
|
|
|
//задача, получить список файлов. нет вложенных папок.
|
|
|
|
|
File[] files_ = home.listFiles();
|
|
|
|
|
if (files_ != null) {
|
|
|
|
|
for (File file : files_) {
|
|
|
|
|
if (file.isFile()) {
|
|
|
|
|
DBProjectFile pf = new DBProjectFile(); //только для определения типа файла.
|
|
|
|
|
pf.file = file;
|
|
|
|
|
pf.AutoDetectProperties();
|
|
|
|
|
if (pf.fileType != FileType.forbidden)
|
2023-10-25 16:33:02 +03:00
|
|
|
task.filesList.add(pf.file.getName());
|
2023-10-22 23:22:49 +03:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|