рефакторинг. перевод формирования пакета задач сапфор в его конструктор. нужно для автоматического запуска.
This commit is contained in:
1
.idea/workspace.xml
generated
1
.idea/workspace.xml
generated
@@ -9,6 +9,7 @@
|
||||
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
|
||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/SapforConfiguration/SapforConfiguration.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSelectedSAPFORConfigurations.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSelectedSAPFORConfigurations.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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<SapforPackage_json> {
|
||||
public int sapforId = Constants.Nan; // так как сапфор на машине.
|
||||
@@ -84,4 +93,87 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
|
||||
(!SapforPackageDBTable.filterActive || state.isActive())
|
||||
;
|
||||
}
|
||||
//---------
|
||||
//конструктор. если 0 задач по итогу,значит пакет не запускаем вообще, и смотрим журнал.
|
||||
public SapforPackage(Account account, ServerSapfor serverSapfor, Vector<SapforConfiguration> 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<String, Test> 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<SapforTask> 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<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);
|
||||
//--->>
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<TestingServer, SapforPackage> {
|
||||
Vector<SapforConfiguration> configurations;
|
||||
SapforTestingSet_json testingSet; //то, что добавляем.
|
||||
// SapforTestingSet_json testingSet; //то, что добавляем.
|
||||
//--
|
||||
protected LinkedHashMap<String, Test> testsByDescriptions = null;
|
||||
// protected LinkedHashMap<String, Test> testsByDescriptions = null;
|
||||
protected File sapfor = null;
|
||||
//--
|
||||
protected Vector<SapforTask> new_tasks = null;
|
||||
// protected Vector<SapforTask> new_tasks = null;
|
||||
@Override
|
||||
public String getIconPath() {
|
||||
return "/icons/Start.png";
|
||||
@@ -43,9 +38,9 @@ public class StartSelectedSAPFORConfigurations extends PublishServerObject<Testi
|
||||
@Override
|
||||
protected boolean canStart(Object... args) throws Exception {
|
||||
//--
|
||||
testsByDescriptions = new LinkedHashMap<>();
|
||||
// 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 PublishServerObject<Testi
|
||||
Log.Writeln_("Не отмечено ни одной конфигурации, или отсутствует текущая конфигурация.");
|
||||
return false;
|
||||
}
|
||||
int max_kernels = 1;
|
||||
for (SapforConfiguration configuration : configurations) {
|
||||
max_kernels = Math.max(configuration.kernels, max_kernels);
|
||||
if (!(configuration.validate(Log)))
|
||||
return false;
|
||||
//-
|
||||
ConfigurationCache cache = (ConfigurationCache) VisualCaches.GetCache(configuration);
|
||||
//--
|
||||
Vector<Test>tests= 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<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);
|
||||
//--->>
|
||||
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 + " задач. Продолжить"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user