промежуточный. изменен механизм формирования задач для тестирования SAPFOR. Теперь они создаются на стадии черновика, при публикации только обновляются ссылки на родительский пакет. При добавлении задач в пакет идет проверка по ключам на их существование.

This commit is contained in:
2024-03-07 18:56:47 +03:00
parent 2b9cfc3af1
commit e7c8810291
11 changed files with 168 additions and 108 deletions

View File

@@ -15,6 +15,7 @@ import TestingSystem.SAPFOR.Json.SapforTestingSet_json;
import TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommand;
import TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import TestingSystem.SAPFOR.SapforTask.SapforTask;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
@@ -24,13 +25,14 @@ import java.util.Vector;
public class AddTasksToSapforPackage extends Pass_2021<SapforPackage> {
SapforTestingSet_json testing_set; //то, что добавляем.
//--
protected int setTasksCount = 0;
protected LinkedHashMap<Integer, Vector<Integer>> groupsTests = null;
protected LinkedHashMap<String, Test> testsByDescriptions = null;
protected Vector<String> testsNames_lower = null; //все тесты что участвуют здесь
protected Vector<LanguageName> groupsLanguages = null;
protected File sapfor = null;
//--
protected Vector<SapforTask> new_tasks = null;
//--
@Override
public String getIconPath() {
return "/icons/AddTasks.png";
@@ -79,10 +81,6 @@ public class AddTasksToSapforPackage extends Pass_2021<SapforPackage> {
//--
//--
public boolean checkConfigurationCommands(SapforConfiguration sapforConfiguration) {
if (target.package_json.hasConfiguration(sapforConfiguration.id)){
Log.Writeln_("Конфигурация "+sapforConfiguration.id+" уже присутствует в пакете. Повторение конфигураций запрещено!");
return false;
}
//1. получить список всех команд.
Vector<PassCode_2021> codes = new Vector<>();
//-- счетчик завершающих команд.
@@ -180,7 +178,6 @@ public class AddTasksToSapforPackage extends Pass_2021<SapforPackage> {
return false;
}
//---
setTasksCount = 0;
groupsTests = new LinkedHashMap<>();
testsNames_lower = new Vector<>();
testsByDescriptions = new LinkedHashMap<>();
@@ -218,52 +215,68 @@ public class AddTasksToSapforPackage extends Pass_2021<SapforPackage> {
return false;
}
//--
for (int i = 0; i < Global.testingServer.db.sapforConfigurations.getCheckedCount(); ++i) {
for (Vector<Integer> tests : groupsTests.values())
setTasksCount += tests.size();
testing_set = new SapforTestingSet_json();
testing_set.id = target.package_json.getMaxSetId();
for (Test test : testsByDescriptions.values()) {
SapforTest_json test_json = new SapforTest_json();
test_json.id = test.id;
test_json.description = test.description;
test_json.group_description = Global.testingServer.db.groups.get(test.group_id).description;
testing_set.tests.add(test_json);
}
return UI.Question("Будет добавлено " + setTasksCount + " задач. Продолжить");
for (SapforConfiguration configuration : Global.testingServer.db.sapforConfigurations.getCheckedItems()) {
//--
SapforConfiguration_json configuration_json = new SapforConfiguration_json();
configuration_json.id = configuration.id;
configuration_json.flags = configuration.getFlags();
Vector<PassCode_2021> codes = configuration.getPassCodes();
//--- коррекцию кода нельзя вызвать если инклуды есть. в общем случае.
if (!codes.firstElement().equals(PassCode_2021.SPF_InsertIncludesPass))
configuration_json.codes.add(PassCode_2021.SPF_CorrectCodeStylePass); //всегда добавляется.
//--
configuration_json.codes.addAll(codes);
//--->>
testing_set.configurations.add(configuration_json);
//-->>
}
Vector<SapforTask> possible_tasks = testing_set.createTasks();
Vector<String> keys = target.package_json.getTasksKeys();
new_tasks = new Vector<>();
for (SapforTask task : possible_tasks) {
String key = task.getUniqueKey();
if (!keys.contains(key)) {
keys.add(key);
new_tasks.add(task);
}
}
if (new_tasks.size()==0){
Log.Writeln_("Не сформировано ни одной новой задачи.\n" +
"Задачи уже присутствуют в пакете, или не отмечено ни одного теста.");
return false;
}
return UI.Question("Будет добавлено " + new_tasks.size() + " задач. Продолжить");
}
//
return false;
}
@Override
protected void body() throws Exception {
testing_set = new SapforTestingSet_json();
testing_set.id = target.package_json.getMaxSetId();
Vector<String> testsNames = new Vector<>();
for (Test test : testsByDescriptions.values()) {
SapforTest_json test_json = new SapforTest_json();
test_json.id = test.id;
test_json.description = test.description;
test_json.group_description = Global.testingServer.db.groups.get(test.group_id).description;
testing_set.tests.add(test_json);
//-
testsNames.add(test.description);
}
for (SapforConfiguration configuration : Global.testingServer.db.sapforConfigurations.getCheckedItems()) {
//--
SapforConfiguration_json configuration_json = new SapforConfiguration_json();
configuration_json.id = configuration.id;
configuration_json.flags = configuration.getFlags();
Vector<PassCode_2021> codes = configuration.getPassCodes();
//--- коррекцию кода нельзя вызвать если инклуды есть. в общем случае.
if (!codes.firstElement().equals(PassCode_2021.SPF_InsertIncludesPass))
configuration_json.codes.add(PassCode_2021.SPF_CorrectCodeStylePass); //всегда добавляется.
//--
configuration_json.codes.addAll(codes);
//--->>
testing_set.configurations.add(configuration_json);
//-->>
}
//-->>
target.package_json.testingSets.add(testing_set);
target.tasksCount += setTasksCount;
target.testsNames += String.join(";", testsNames) + ";";
for (SapforTask task: new_tasks){
task.id = target.package_json.getMaxTaskId();
target.package_json.tasks.add(task);
}
target.tasksCount += new_tasks.size();
target.testsNames = String.join(";", target.package_json.getTestsNames());
Global.testingServer.db.Update(target);
}
@Override
protected void showDone() throws Exception {
Global.testingServer.db.sapforPackages.ShowUI(target.id);
//----
Utils.CheckAndCleanDirectory(target.getLocalWorkspace());
target.saveJson();
//---
}
}

View File

@@ -1,4 +1,5 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Utils;
@@ -36,12 +37,15 @@ public class CompareDVMRunTasks extends Pass_2021<Vector<DVMRunTask>> {
} else if (target.size() == 1) {
master = target.get(0);
slave = null;
return UI.Question("Отобразить задачу " + Utils.Brackets(target.get(0).getPK()));
} else if (target.size() != 2) {
Log.Writeln_("Для сравнения требуется отметить две задачи.\nДля отображения требуется отметить одну задачу");
return UI.Question("Отобразить задачу " + Utils.Brackets(master.getPK()));
} else if ((target.size() == 0) && (Current.HasDVMRunTask())) {
master = Current.getDVMRunTask();
slave = null;
return UI.Question("Отобразить задачу " + Utils.Brackets(master.getPK()));
} else {
Log.Writeln_("Для сравнения требуется отметить две задачи.\nДля отображения требуется отметить одну задачу,или выделить её.");
return false;
}
return true;
}
@Override
protected void body() throws Exception {

View File

@@ -1,4 +1,5 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Utils;
@@ -36,12 +37,15 @@ public class CompareSapforPackages extends Pass_2021<Vector<SapforPackage>> {
} else if (target.size() == 1) {
master = target.get(0);
slave = null;
return UI.Question("Отобразить пакет " + Utils.Brackets(target.get(0).getPK()));
} else if (target.size() != 2) {
Log.Writeln_("Для сравнения требуется отметить два пакета.\nДля отображения требуется отметить один пакет");
return UI.Question("Отобразить пакет " + Utils.Brackets(master.getPK()));
} else if ((target.size() == 0) && (Current.HasSapforPackage())) {
master = Current.getSapforPackage();
slave = null;
return UI.Question("Отобразить пакет " + Utils.Brackets(master.getPK()));
} else {
Log.Writeln_("Для сравнения требуется отметить два пакета.\nДля отображения требуется отметить один пакет,или выделить его");
return false;
}
return true;
}
@Override
protected void body() throws Exception {