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

132 lines
5.0 KiB
Java
Raw Normal View History

package TestingSystem.SAPFOR;
2023-10-04 22:01:09 +03:00
import Common.Constants;
2023-09-30 18:22:14 +03:00
import Common.Global;
2023-09-30 00:18:44 +03:00
import Common.Utils.Utils;
import GlobalData.Tasks.TaskState;
import Repository.Component.Sapfor.Sapfor;
import TestingSystem.SAPFOR.Json.SapforConfiguration_json;
import TestingSystem.SAPFOR.Json.SapforTestingSet_json;
import TestingSystem.SAPFOR.Json.SapforVersion_json;
import TestingSystem.SAPFOR.SapforTask.SapforTask;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
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;
public class PerformSapforTask extends Pass_2021<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;
//--->>
parentTask = Paths.get(Global.Home,
String.valueOf(target.set_id),
String.valueOf(target.sapfor_configuration_id),
target.test_description).toFile();
root = Paths.get(Global.Home, 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;
}
}
//слегка изменить подход.
2023-09-30 00:18:44 +03:00
protected boolean transformation(PassCode_2021 code) throws Exception {
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,
2023-09-30 00:18:44 +03:00
code.getTestingCommand() + " -F " + Utils.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(),
file.getAbsolutePath(), PassCode_2021.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){
PassCode_2021 code = PassCode_2021.valueOf(code_s);
//--
2023-09-30 00:18:44 +03:00
if (parse()) {
if (code.equals(PassCode_2021.CreateParallelVariants))
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
}