Files
VisualSapfor/src/_VisualDVM/TestingSystem/SAPFOR/PerformSapforTask.java

130 lines
4.9 KiB
Java
Raw Normal View History

2024-10-09 22:21:57 +03:00
package _VisualDVM.TestingSystem.SAPFOR;
2024-10-07 14:22:52 +03:00
import Common.Utils.CommonUtils;
2024-10-09 22:01:19 +03:00
import _VisualDVM.Constants;
import _VisualDVM.Utils;
2024-10-09 22:21:57 +03:00
import _VisualDVM.GlobalData.Tasks.TaskState;
import _VisualDVM.Repository.Component.Sapfor.Sapfor;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforVersion_json;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
2024-10-09 23:37:58 +03:00
import Visual_DVM_2021.Passes.PassCode;
2024-10-10 23:57:36 +03:00
import Common.Passes.Pass;
2023-09-22 00:16:46 +03:00
import java.io.File;
import java.nio.file.Paths;
2023-09-30 00:18:44 +03:00
import java.util.Arrays;
import java.util.Comparator;
import java.util.Date;
2023-09-30 00:18:44 +03:00
import java.util.Vector;
2024-10-09 23:37:58 +03:00
public class PerformSapforTask extends Pass<SapforTask> {
@Override
public String getDescription() {
return "";
// "Запуск задачи SAPFOR"; Оставляем пустое описание чтобы не засорять журнал.
}
@Override
protected boolean needsAnimation() {
return false;
}
//--
2023-09-30 00:18:44 +03:00
File sapfor_drv;
SapforVersion_json version_json;
2023-09-30 00:18:44 +03:00
//-----
2023-10-29 01:03:37 +03:00
File root;
2023-09-30 00:18:44 +03:00
File parentTask;
File task;
//-----
@Override
protected boolean canStart(Object... args) throws Exception {
//--
target = (SapforTask) args[0];
sapfor_drv = (File) args[1];
//--
version_json = null;
//--->>
2024-10-08 22:33:49 +03:00
parentTask = Paths.get(CommonUtils.getHomePath(),
String.valueOf(target.set_id),
String.valueOf(target.sapfor_configuration_id),
target.test_description).toFile();
2024-10-08 22:33:49 +03:00
root = Paths.get(CommonUtils.getHomePath(), String.valueOf(target.set_id), String.valueOf(target.sapfor_configuration_id)).toFile();
task = null;
//--->>
return true;
}
2023-09-30 00:18:44 +03:00
protected boolean parse() throws Exception {
if (Sapfor.parse(sapfor_drv, parentTask, target.flags)) {
2023-09-30 00:18:44 +03:00
return true;
} else {
target.state = TaskState.DoneWithErrors;
2023-09-30 00:18:44 +03:00
return false;
}
}
//слегка изменить подход.
2024-10-09 23:37:58 +03:00
protected boolean transformation(PassCode code) throws Exception {
2023-09-30 00:18:44 +03:00
task = new File(parentTask, "v1");
Utils.CheckAndCleanDirectory(task); //папка для преобразования.
//если версия пустая, это тоже результат тестирования. Поэтому должна учитываться в древе.
target.versions.add(version_json = new SapforVersion_json(
2023-10-29 01:03:37 +03:00
root.getAbsolutePath(),
task.getAbsolutePath(), code.getDescription()));
//---
if (Sapfor.performScript(
"transformation",
sapfor_drv,
parentTask,
2024-10-07 14:22:52 +03:00
code.getTestingCommand() + " -F " + CommonUtils.DQuotes(task.getAbsolutePath()),
target.flags,
Constants.out_file,
Constants.err_file
2023-09-30 00:18:44 +03:00
)) {
target.state = TaskState.Done;
2023-09-30 00:18:44 +03:00
parentTask = task;
return true;
}
target.state = TaskState.DoneWithErrors;
2023-09-30 00:18:44 +03:00
return false;
}
protected void variants() throws Exception {
//папки вариантов создается самим сапфором.
target.state = Sapfor.performScript(
"create_variants",
sapfor_drv,
parentTask,
" -t 13 -allVars",// -tinfo",
target.flags,
Constants.out_file,
Constants.err_file
) ? TaskState.Done : TaskState.DoneWithErrors;
//найти папки с вариантами.
File[] files_ = parentTask.listFiles((dir, name) -> dir.isDirectory() && Utils.isParallelVersionName(name));
if ((files_ != null) && (files_.length > 0)) {
Vector<File> files = new Vector<>(Arrays.asList(files_));
files.sort(Comparator.comparingInt(o -> Integer.parseInt(o.getName().substring(1))));
for (File file : files)
2023-10-29 01:03:37 +03:00
target.variants.add(
new SapforVersion_json(
root.getAbsolutePath(),
2024-10-09 23:37:58 +03:00
file.getAbsolutePath(), PassCode.SPF_CreateParallelVariant.getDescription()));
2023-09-30 00:18:44 +03:00
}
}
//-------------------------------------------------->>
@Override
protected void body() throws Exception {
target.StartDate = new Date().getTime();
target.versions.add(version_json = new SapforVersion_json(target.test_description, "исходная"));
String [] data = target.codes.split(" ");
for (String code_s: data){
2024-10-09 23:37:58 +03:00
PassCode code = PassCode.valueOf(code_s);
//--
2023-09-30 00:18:44 +03:00
if (parse()) {
2024-10-09 23:37:58 +03:00
if (code.equals(PassCode.CreateParallelVariants))
2023-09-30 00:18:44 +03:00
variants();
else if (!transformation(code))
break;
} else
break;
//--
2023-09-30 00:18:44 +03:00
}
target.ChangeDate = new Date().getTime();
}
2023-09-21 21:17:02 +03:00
}