diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 5c23b014..ffbcfb9c 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -9,6 +9,7 @@
+
diff --git a/src/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java b/src/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java
index c45a6383..4ab475c9 100644
--- a/src/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java
+++ b/src/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java
@@ -105,9 +105,11 @@ public class SapforConfiguration extends Configuration {
if (!groupsLanguages.contains(group.language))
groupsLanguages.add(group.language);
}
- if ((groupsLanguages.size() > 1)||(!groupsLanguages.contains(LanguageName.fortran))) {
- Log.Writeln_("Запуск тестов на разных языках в рамках одного пакета запрещен!\n" +
- "Поддерживается пакетный режим только для языка Fortran");
+ if (groupsLanguages.size()>1){
+ Log.Writeln_("Запуск тестов на разных языках в рамках одного пакета запрещен!\n");
+ }
+ if ((!groupsLanguages.contains(LanguageName.fortran))) {
+ Log.Writeln_("Поддерживается пакетный режим только для языка Fortran");
}
//-
return Log.isEmpty();
diff --git a/src/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java b/src/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java
index bbe092d3..fea11bbf 100644
--- a/src/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java
+++ b/src/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java
@@ -3,16 +3,25 @@ import Common.Constants;
import Common.Current;
import Common.Database.DBObject;
import Common.Global;
+import Common.UI.VisualCache.ConfigurationCache;
+import Common.UI.VisualCache.VisualCaches;
+import Common.Utils.TextLog;
import Common.Utils.Utils;
import GlobalData.Account.Account;
import TestingSystem.Common.TasksPackageState;
+import TestingSystem.Common.Test.Test;
import TestingSystem.Common.TestingPackage.TestingPackage;
+import TestingSystem.SAPFOR.Json.SapforConfiguration_json;
import TestingSystem.SAPFOR.Json.SapforPackage_json;
+import TestingSystem.SAPFOR.Json.SapforTest_json;
import TestingSystem.SAPFOR.Json.SapforTestingSet_json;
+import TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import TestingSystem.SAPFOR.SapforTask.SapforTask;
import TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
+import Visual_DVM_2021.Passes.PassCode_2021;
import java.io.File;
+import java.util.LinkedHashMap;
import java.util.Vector;
public class SapforPackage extends TestingPackage {
public int sapforId = Constants.Nan; // так как сапфор на машине.
@@ -84,4 +93,87 @@ public class SapforPackage extends TestingPackage {
(!SapforPackageDBTable.filterActive || state.isActive())
;
}
+ //---------
+ //конструктор. если 0 задач по итогу,значит пакет не запускаем вообще, и смотрим журнал.
+ public SapforPackage(Account account, ServerSapfor serverSapfor, Vector configurations, TextLog Log) throws Exception{
+ id = Constants.Nan;
+ sender_name = account.name;
+ sender_address = account.email;
+ //-
+ sapforId = serverSapfor.id;
+ //-
+ drv = serverSapfor.call_command;
+ version = serverSapfor.version;
+ needsEmail = Global.properties.EmailOnTestingProgress ? 1 : 0;
+ ///-------------------------------
+ package_json = new SapforPackage_json();
+ package_json.sapfor_drv = serverSapfor.call_command;
+ //-
+ state = TasksPackageState.Queued;
+ //--
+ boolean valid = true;
+ //проверка исходных данных тестов и групп
+ LinkedHashMap testsByDescriptions =new LinkedHashMap<>();
+ //--
+ kernels=1;
+ for (SapforConfiguration configuration : configurations) {
+ kernels = Math.max(configuration.kernels, kernels);
+ configuration.validate(Log);
+ //-
+ ConfigurationCache cache = (ConfigurationCache) VisualCaches.GetCache(configuration);
+ //--
+ for (Test test : cache.getTests()) {
+ String l_description = test.description.toLowerCase();
+ if (testsByDescriptions.containsKey(l_description)) {
+ Log.Writeln_("В пакет не могут входить тесты с одинаковыми именами (без учета регистра):" + test.description.toLowerCase());
+ valid=false;
+ } else {
+ testsByDescriptions.put(l_description, test);
+ }
+ }
+ }
+ valid= Log.isEmpty();
+ //формирование задач.
+ if (valid){
+ //--
+ tasksCount=0;
+ package_json.kernels = kernels;
+ //--
+ SapforTestingSet_json testingSet = new SapforTestingSet_json();
+ Vector new_tasks = new Vector<>();
+ //--
+ testingSet.id = 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;
+ testingSet.tests.add(test_json);
+ }
+ for (SapforConfiguration configuration : configurations) {
+ //--
+ SapforConfiguration_json configuration_json = new SapforConfiguration_json();
+ configuration_json.id = configuration.id;
+ configuration_json.name = configuration.description;
+ configuration_json.flags = configuration.getFlags();
+ Vector codes = configuration.getPassCodes();
+ //--- коррекцию кода нельзя вызвать если инклуды есть. в общем случае.
+ if (!codes.firstElement().equals(PassCode_2021.SPF_InsertIncludesPass))
+ configuration_json.codes.add(PassCode_2021.SPF_CorrectCodeStylePass); //всегда добавляется.
+ //--
+ configuration_json.codes.addAll(codes);
+ //--->>
+ testingSet.configurations.add(configuration_json);
+ //-->>
+ }
+ new_tasks = getActualTestingSetTasks(testingSet);
+ saveConfigurationsAsJson(configurations);
+ package_json.testingSets.add(testingSet);
+ for (SapforTask task : new_tasks) {
+ task.id = package_json.getMaxTaskId();
+ package_json.tasks.add(task);
+ }
+ tasksCount += new_tasks.size();
+ }
+ }
}
diff --git a/src/Visual_DVM_2021/Passes/All/StartSelectedSAPFORConfigurations.java b/src/Visual_DVM_2021/Passes/All/StartSelectedSAPFORConfigurations.java
index e03e6a36..7d741a1e 100644
--- a/src/Visual_DVM_2021/Passes/All/StartSelectedSAPFORConfigurations.java
+++ b/src/Visual_DVM_2021/Passes/All/StartSelectedSAPFORConfigurations.java
@@ -1,20 +1,15 @@
package Visual_DVM_2021.Passes.All;
-import Common.Constants;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.UI.VisualCache.ConfigurationCache;
import Common.UI.VisualCache.VisualCaches;
-import Common.Utils.Index;
-import ProjectData.LanguageName;
-import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import TestingSystem.Common.TestingServer;
import TestingSystem.SAPFOR.Json.SapforConfiguration_json;
import TestingSystem.SAPFOR.Json.SapforTest_json;
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 TestingSystem.SAPFOR.ServerSapfor.ServerSapforState;
@@ -26,12 +21,12 @@ import java.util.LinkedHashMap;
import java.util.Vector;
public class StartSelectedSAPFORConfigurations extends PublishServerObject {
Vector configurations;
- SapforTestingSet_json testingSet; //то, что добавляем.
+ // SapforTestingSet_json testingSet; //то, что добавляем.
//--
- protected LinkedHashMap testsByDescriptions = null;
+ // protected LinkedHashMap testsByDescriptions = null;
protected File sapfor = null;
//--
- protected Vector new_tasks = null;
+ // protected Vector new_tasks = null;
@Override
public String getIconPath() {
return "/icons/Start.png";
@@ -43,9 +38,9 @@ public class StartSelectedSAPFORConfigurations extends PublishServerObject();
+ // testsByDescriptions = new LinkedHashMap<>();
//--
- new_tasks= new Vector<>();
+ // new_tasks = new Vector<>();
//--
if (!Current.getAccount().CheckRegistered(Log)) {
return false;
@@ -63,69 +58,11 @@ public class StartSelectedSAPFORConfigurations extends PublishServerObjecttests= cache.getTests();
- for (Test test:tests){
- String l_description = test.description.toLowerCase();
- if (testsByDescriptions.containsKey(l_description)) {
- Log.Writeln_("В пакет не могут входить тесты с одинаковыми именами (без учета регистра):" + test.description.toLowerCase());
- return false;
- }else {
- testsByDescriptions.put(l_description, test);
- }
- }
- }
- target = new SapforPackage(Current.getAccount(), Current.getServerSapfor(), max_kernels);
- //--
- testingSet = new SapforTestingSet_json();
- testingSet.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;
- testingSet.tests.add(test_json);
- }
- for (SapforConfiguration configuration : configurations) {
- //--
- SapforConfiguration_json configuration_json = new SapforConfiguration_json();
- configuration_json.id = configuration.id;
- configuration_json.name = configuration.description;
- configuration_json.flags = configuration.getFlags();
- Vector codes = configuration.getPassCodes();
- //--- коррекцию кода нельзя вызвать если инклуды есть. в общем случае.
- if (!codes.firstElement().equals(PassCode_2021.SPF_InsertIncludesPass))
- configuration_json.codes.add(PassCode_2021.SPF_CorrectCodeStylePass); //всегда добавляется.
- //--
- configuration_json.codes.addAll(codes);
- //--->>
- testingSet.configurations.add(configuration_json);
- //-->>
- }
- new_tasks = target.getActualTestingSetTasks(testingSet);
- if (new_tasks.size() == 0) {
- Log.Writeln_("Не сформировано ни одной новой задачи.\n" +
- "Задачи уже присутствуют в пакете, или не отмечено ни одного теста.");
+ target = new SapforPackage(Current.getAccount(), Current.getServerSapfor(), configurations, Log);
+ if (target.tasksCount==0){
+ Log.Writeln_("Не сформировано ни одной новой задачи.");
return false;
}
- if (UI.Question("Будет добавлено " + new_tasks.size() + " задач. Продолжить")){
- target.saveConfigurationsAsJson(configurations);
- target.package_json.testingSets.add(testingSet);
- for (SapforTask task : new_tasks) {
- task.id = target.package_json.getMaxTaskId();
- target.package_json.tasks.add(task);
- }
- target.tasksCount += new_tasks.size();
- return true;
- }
- //
- return false;
+ return (UI.Question("Будет запущено " + target.tasksCount + " задач. Продолжить"));
}
}