постепенный перевод на сервер механизма тестирования.
This commit is contained in:
@@ -89,6 +89,7 @@ public class Global {
|
||||
public static File DataBackUpsDirectory;
|
||||
public static File PackagesDirectory;
|
||||
public static File SapforsDirectory;
|
||||
public static File ScenariosDirectory;
|
||||
//------------------------------------------------------------------
|
||||
public static Visualiser visualiser = null;
|
||||
public static Visualizer_2 visualizer_2 = null;
|
||||
@@ -145,6 +146,7 @@ public class Global {
|
||||
Utils.CheckDirectory(RepoDirectory = Paths.get(Home, Repo).toFile());
|
||||
Utils.CheckDirectory(PackagesDirectory = Paths.get(Home, Packages).toFile());
|
||||
Utils.CheckDirectory(SapforsDirectory = Paths.get(Home, "Sapfors").toFile());
|
||||
Utils.CheckDirectory(ScenariosDirectory = Paths.get(Home, "Scenarios").toFile());
|
||||
}
|
||||
public static void CreateLog() {
|
||||
Log = new Loggable() {
|
||||
|
||||
@@ -3,7 +3,7 @@ import Common.UI.Menus_2023.DataMenuBar;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
public class SapforConfigurationsMenuBar extends DataMenuBar {
|
||||
public SapforConfigurationsMenuBar() {
|
||||
super("конфигурации", PassCode_2021.StartSapforTests,
|
||||
super("конфигурации", PassCode_2021.StartSapforTestsOnServer,
|
||||
PassCode_2021.PublishSapforConfiguration,
|
||||
PassCode_2021.EditSapforConfiguration,
|
||||
PassCode_2021.DeleteSapforConfiguration
|
||||
|
||||
@@ -35,7 +35,6 @@ import GlobalData.User.UsersDBTable;
|
||||
import Repository.Component.ComponentType;
|
||||
import SapforTestingSystem.SapforScenario.SapforScenariosDBTable;
|
||||
import SapforTestingSystem.SapforTask.SapforTaskResult;
|
||||
import SapforTestingSystem.SapforTask.SapforTask;
|
||||
import SapforTestingSystem.SapforTask.SapforTasksDBTable;
|
||||
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
|
||||
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackagesDBTable;
|
||||
@@ -159,15 +158,17 @@ public class GlobalDatabase extends SQLiteDatabase {
|
||||
Global.properties.Update();
|
||||
return res;
|
||||
}
|
||||
/*
|
||||
public LinkedHashMap<Long, SapforTask> getSapforPackageTasks(int package_id) throws Exception {
|
||||
LinkedHashMap<Long, SapforTask> res = new LinkedHashMap<>();
|
||||
for (SapforTask task : sapforTasks.Data.values()) {
|
||||
if (task.sapfortaskspackage_2023_id == package_id) {
|
||||
if (task.sapfor_configuration_id == package_id) {
|
||||
res.put(task.id, task);
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
*/
|
||||
public DataSet<String, SapforTaskResult> getSapforPackagesMasterDataSet(SapforTasksPackage package_in) throws Exception {
|
||||
DataSet<String, SapforTaskResult> res = new DataSet<String, SapforTaskResult>(String.class, SapforTaskResult.class) {
|
||||
@Override
|
||||
@@ -207,9 +208,11 @@ public class GlobalDatabase extends SQLiteDatabase {
|
||||
return Current.SapforEtalonTaskResult;
|
||||
}
|
||||
};
|
||||
/*
|
||||
for (SapforTask task : sapforTasks.Data.values())
|
||||
if (task.sapfortaskspackage_2023_id == package_in.id)
|
||||
if (task.sapfor_configuration_id == package_in.id)
|
||||
res.put(task.test_description, new SapforTaskResult(package_in, task));
|
||||
*/
|
||||
return res;
|
||||
}
|
||||
//--
|
||||
@@ -256,9 +259,11 @@ public class GlobalDatabase extends SQLiteDatabase {
|
||||
return Current.SapforTaskResult;
|
||||
}
|
||||
};
|
||||
/*
|
||||
for (SapforTask task : sapforTasks.Data.values())
|
||||
if (task.sapfortaskspackage_2023_id == package_in.id)
|
||||
if (task.sapfor_configuration_id == package_in.id)
|
||||
res.put(task.test_description, new SapforTaskResult(package_in, task));
|
||||
*/
|
||||
return res;
|
||||
}
|
||||
//--
|
||||
|
||||
@@ -67,5 +67,6 @@ public enum ServerCode {
|
||||
DVMConvertProject,
|
||||
SetRole,
|
||||
InstallSapforForTesting,
|
||||
StartSapforTests,
|
||||
OLD
|
||||
}
|
||||
|
||||
@@ -3,11 +3,11 @@ import com.google.gson.annotations.Expose;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
public class SapforScenario_json {
|
||||
public class PackageModeScenario_json {
|
||||
@Expose
|
||||
public String sapfor_drv = ""; //файл с сапфором. Имя уникально для сценария.
|
||||
@Expose
|
||||
public List<String> tests = new Vector<>();
|
||||
@Expose
|
||||
public List<SapforPackage_json> packages = new Vector<>();
|
||||
public List<SapforConfiguration_json> packages = new Vector<>();
|
||||
}
|
||||
@@ -4,7 +4,7 @@ import com.google.gson.annotations.Expose;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
public class SapforPackage_json {
|
||||
public class SapforConfiguration_json {
|
||||
@Expose
|
||||
public String id = "";
|
||||
@Expose
|
||||
@@ -4,7 +4,7 @@ import Common.Global;
|
||||
import Common.Utils.Utils;
|
||||
import GlobalData.Tasks.TaskState;
|
||||
import ProjectData.Project.db_project_info;
|
||||
import SapforTestingSystem.Json.SapforPackage_json;
|
||||
import SapforTestingSystem.Json.SapforConfiguration_json;
|
||||
import SapforTestingSystem.Json.SapforVersion_json;
|
||||
import SapforTestingSystem.SapforTask.SapforTask;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
@@ -29,7 +29,7 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
|
||||
}
|
||||
//--
|
||||
File sapfor_drv;
|
||||
SapforPackage_json sapforPackage_json;
|
||||
SapforConfiguration_json sapforConfiguration_json;
|
||||
//-----
|
||||
File parentTask;
|
||||
File task;
|
||||
@@ -46,14 +46,14 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
|
||||
@Override
|
||||
protected boolean canStart(Object... args) throws Exception {
|
||||
sapfor_drv = (File) args[0];
|
||||
sapforPackage_json = (SapforPackage_json) args[1];
|
||||
sapforConfiguration_json = (SapforConfiguration_json) args[1];
|
||||
String testDescription = (String) args[2];
|
||||
target = (SapforTask) args[3];
|
||||
//--->>
|
||||
parentTask = Paths.get(Global.Home, sapforPackage_json.id, testDescription).toFile();
|
||||
parentTask = Paths.get(Global.Home, sapforConfiguration_json.id, testDescription).toFile();
|
||||
task = null;
|
||||
//--->>
|
||||
target.sapfortaskspackage_2023_id = Integer.parseInt(sapforPackage_json.id);
|
||||
target.sapfor_configuration_id = sapforConfiguration_json.id;
|
||||
target.test_description = testDescription;
|
||||
target.root = parentTask.getAbsolutePath();
|
||||
return true;
|
||||
@@ -86,7 +86,7 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
|
||||
File file = new File(data_workspace, name + (Global.isWindows ? ".bat" : ".sh"));
|
||||
FileUtils.write(file,
|
||||
Utils.DQuotes(sapfor_drv.getAbsolutePath())
|
||||
+ (sapforPackage_json.flags.isEmpty() ? "" : (" " + sapforPackage_json.flags))
|
||||
+ (sapforConfiguration_json.flags.isEmpty() ? "" : (" " + sapforConfiguration_json.flags))
|
||||
+ " -noLogo"
|
||||
+ " " + command +
|
||||
" 1>" +
|
||||
@@ -158,8 +158,8 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
|
||||
}
|
||||
@Override
|
||||
protected void body() throws Exception {
|
||||
System.out.println(target.root + " " + Utils.Brackets(sapforPackage_json.flags));//!!
|
||||
for (PassCode_2021 code : sapforPackage_json.codes) {
|
||||
System.out.println(target.root + " " + Utils.Brackets(sapforConfiguration_json.flags));//!!
|
||||
for (PassCode_2021 code : sapforConfiguration_json.codes) {
|
||||
System.out.println(code); //!!
|
||||
if (parse()) {
|
||||
if (code.equals(PassCode_2021.CreateParallelVariants))
|
||||
@@ -169,11 +169,5 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
|
||||
} else
|
||||
break;
|
||||
}
|
||||
/*
|
||||
//Запись результатов. todo сделать единый файл со списком итогов. уже после выполнения нитей.
|
||||
File data_workspace = new File(target.root, db_project_info.data);
|
||||
Utils.CheckDirectory(data_workspace);
|
||||
Utils.jsonToFile(target, new File(data_workspace, "result.txt"));
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
15
src/SapforTestingSystem/SapforServerScenario_info.java
Normal file
15
src/SapforTestingSystem/SapforServerScenario_info.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package SapforTestingSystem;
|
||||
import Common.Constants.Constants;
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
public class SapforServerScenario_info implements Serializable {
|
||||
@Expose
|
||||
public int sapforId = Constants.Nan; //файл с сапфором
|
||||
@Expose
|
||||
public List<String> testsIds = new Vector<>();
|
||||
@Expose
|
||||
public List<String> configurationsIds = new Vector<>();
|
||||
}
|
||||
@@ -14,7 +14,7 @@ public class SapforTask extends DBObject {
|
||||
public long id = Constants.Nan;
|
||||
@Description("DEFAULT '-1'")
|
||||
@Expose
|
||||
public int sapfortaskspackage_2023_id = Constants.Nan;
|
||||
public String sapfor_configuration_id = "";
|
||||
//------------------------------------->>
|
||||
@Description("DEFAULT ''")
|
||||
@Expose
|
||||
@@ -50,7 +50,7 @@ public class SapforTask extends DBObject {
|
||||
super.SynchronizeFields(object);
|
||||
SapforTask t = (SapforTask) object;
|
||||
id = t.id;
|
||||
sapfortaskspackage_2023_id = t.sapfortaskspackage_2023_id;
|
||||
sapfor_configuration_id = t.sapfor_configuration_id;
|
||||
test_description = t.test_description;
|
||||
state = t.state;
|
||||
}
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
package SapforTestingSystem.SapforTestingPlaner;
|
||||
import Common.Global;
|
||||
import Common.Utils.Utils;
|
||||
import SapforTestingSystem.Json.SapforPackage_json;
|
||||
import SapforTestingSystem.Json.SapforConfiguration_json;
|
||||
import SapforTestingSystem.Json.SapforScenarioResults_json;
|
||||
import SapforTestingSystem.Json.SapforScenario_json;
|
||||
import SapforTestingSystem.Json.PackageModeScenario_json;
|
||||
import SapforTestingSystem.PerformSapforTask;
|
||||
import SapforTestingSystem.SapforTask.SapforTask;
|
||||
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
|
||||
@@ -11,15 +11,15 @@ import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
|
||||
import java.io.File;
|
||||
import java.util.Date;
|
||||
public class SapforTestingPlanner extends ThreadsPlanner {
|
||||
SapforScenario_json scenario_json = null;
|
||||
PackageModeScenario_json scenario_json = null;
|
||||
SapforScenarioResults_json results_json = new SapforScenarioResults_json();
|
||||
public SapforTestingPlanner() throws Exception {
|
||||
super(Global.properties.threadsTimeout, Global.properties.threadsNum);
|
||||
scenario_json = (SapforScenario_json) Utils.jsonFromFile(new File(Global.Home, "scenario"), SapforScenario_json.class);
|
||||
scenario_json = (PackageModeScenario_json) Utils.jsonFromFile(new File(Global.Home, "scenario"), PackageModeScenario_json.class);
|
||||
results_json.StartDate = new Date().getTime();
|
||||
//формирование списка задач.
|
||||
File sapfor_drv = new File(Global.Home, scenario_json.sapfor_drv);
|
||||
for (SapforPackage_json sapforPackage_json : scenario_json.packages) {
|
||||
for (SapforConfiguration_json sapforConfiguration_json : scenario_json.packages) {
|
||||
for (String testName : scenario_json.tests) {
|
||||
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
|
||||
SapforTask task = new SapforTask();
|
||||
@@ -27,7 +27,7 @@ public class SapforTestingPlanner extends ThreadsPlanner {
|
||||
//---
|
||||
addThread(() -> new PerformSapforTask().Do(
|
||||
sapfor_drv,
|
||||
sapforPackage_json,
|
||||
sapforConfiguration_json,
|
||||
testName,
|
||||
task
|
||||
));
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
package TestingSystem;
|
||||
import Common.Current;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Database.rDBObject;
|
||||
import Common.Global;
|
||||
import Common.GlobalProperties;
|
||||
import Common.Utils.Utils;
|
||||
import GlobalData.Machine.Machine;
|
||||
import GlobalData.RemoteFile.RemoteFile;
|
||||
@@ -9,13 +11,16 @@ import GlobalData.Tasks.TaskState;
|
||||
import GlobalData.User.User;
|
||||
import ProjectData.LanguageName;
|
||||
import ProjectData.Project.db_project_info;
|
||||
import Repository.Component.Component;
|
||||
import Repository.Component.Sapfor.Sapfor_F;
|
||||
import Repository.RepositoryRefuseException;
|
||||
import Repository.RepositoryServer;
|
||||
import Repository.Server.ServerCode;
|
||||
import Repository.Server.ServerExchangeUnit_2021;
|
||||
import SapforTestingSystem.ServerSapfor.ServerSapfor;
|
||||
import SapforTestingSystem.Json.PackageModeScenario_json;
|
||||
import SapforTestingSystem.Json.SapforConfiguration_json;
|
||||
import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
|
||||
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
|
||||
import SapforTestingSystem.SapforScenario.SapforScenario;
|
||||
import SapforTestingSystem.SapforServerScenario_info;
|
||||
import TestingSystem.Group.Group;
|
||||
import TestingSystem.Group.GroupInterface;
|
||||
import TestingSystem.Tasks.TestCompilationTask;
|
||||
@@ -26,7 +31,6 @@ import TestingSystem.TasksPackageToKill.TasksPackageToKill;
|
||||
import TestingSystem.Test.Test;
|
||||
import TestingSystem.Test.TestInterface;
|
||||
import TestingSystem.Test.TestType;
|
||||
import Visual_DVM_2021.Passes.All.BuildComponent;
|
||||
import Visual_DVM_2021.Passes.All.DownloadRepository;
|
||||
import Visual_DVM_2021.Passes.All.UnzipFolderPass;
|
||||
import Visual_DVM_2021.Passes.All.ZipFolderPass;
|
||||
@@ -294,54 +298,69 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
groups.sort(Comparator.comparing(o -> o.description));
|
||||
return groups;
|
||||
}
|
||||
public ServerSapfor InstallSapforForTesting() throws Exception {
|
||||
Sapfor_F sapfor_f = new Sapfor_F();
|
||||
public void StartSapforTests(SapforServerScenario_info scenario_info) throws Exception {
|
||||
//--
|
||||
PackageModeScenario_json scenario_json = new PackageModeScenario_json();
|
||||
for (String test_id : scenario_info.testsIds)
|
||||
scenario_json.tests.add(db.tests.get(test_id).description);
|
||||
//создание объекта набора задач и его папки
|
||||
SapforScenario scenario = new SapforScenario(); //?может быть все же поменять ключ на сгенерированный из даты.
|
||||
db.Insert(scenario);
|
||||
//создании рабочего пространства для пакетного режима
|
||||
File scenarioWorkspace = new File(Global.ScenariosDirectory, String.valueOf(scenario.id));
|
||||
Utils.CheckAndCleanDirectory(scenarioWorkspace);
|
||||
scenario.workspace = scenarioWorkspace.getAbsolutePath();
|
||||
//копирование тестов по конфигурациям.
|
||||
for (String configuration_id : scenario_info.configurationsIds) {
|
||||
SapforConfiguration configuration = db.sapforConfigurations.get(configuration_id);
|
||||
//--
|
||||
SapforConfiguration_json package_json = new SapforConfiguration_json();
|
||||
package_json.id = String.valueOf(configuration_id);
|
||||
package_json.flags = SapforConfigurationInterface.getFlags(configuration);
|
||||
package_json.codes.addAll(SapforConfigurationInterface.getPassCodes(configuration));
|
||||
//--->>
|
||||
scenario_json.packages.add(package_json);
|
||||
//-->>
|
||||
File configurationWorkspace = new File(scenarioWorkspace, configuration_id);
|
||||
FileUtils.forceMkdir(configurationWorkspace);
|
||||
for (String test_id : scenario_info.testsIds) {
|
||||
Test test = db.tests.get(test_id);
|
||||
File test_root = new File(configurationWorkspace, test.description);
|
||||
Utils.CheckAndCleanDirectory(test_root);
|
||||
FileUtils.copyDirectory(new File(Global.TestsDirectory, test.id), test_root);
|
||||
}
|
||||
}
|
||||
//копирование SAPFOR
|
||||
File sapfor = new File(scenario.workspace, Utils.getDateName("SAPFOR_F"));
|
||||
FileUtils.copyFile(new File(db.serverSapfors.get(scenario_info.sapforId).call_command), sapfor);
|
||||
if (!sapfor.setExecutable(true))
|
||||
throw new RepositoryRefuseException("Не удалось сделать файл " + sapfor.getName() + " исполняемым!");
|
||||
scenario_json.sapfor_drv = sapfor.getName();
|
||||
//--->>
|
||||
DownloadRepository downloadRepository = new DownloadRepository(){
|
||||
@Override
|
||||
public PassCode_2021 code() {
|
||||
return PassCode_2021.DownloadRepository;
|
||||
}
|
||||
@Override
|
||||
protected boolean needsAnimation() {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
BuildComponent buildComponent = new BuildComponent() {
|
||||
@Override
|
||||
public PassCode_2021 code() {
|
||||
return PassCode_2021.BuildComponent;
|
||||
}
|
||||
@Override
|
||||
protected boolean needsAnimation() {
|
||||
return false;
|
||||
}
|
||||
@Override
|
||||
protected PassCode_2021 necessary() {
|
||||
return null; //тут схема с проходами не работает. возможно для сервера сделать урезанный список?
|
||||
}
|
||||
@Override
|
||||
protected boolean canStart(Object... args) throws Exception {
|
||||
target = (Component) args[0];
|
||||
return true;
|
||||
}
|
||||
};
|
||||
if (!downloadRepository.Do())
|
||||
throw new RepositoryRefuseException("Не удалось загрузить репозиторий.");
|
||||
if (!buildComponent.Do(sapfor_f))
|
||||
throw new RepositoryRefuseException("Не удалось собрать версию SAPFOR.");
|
||||
//-->>
|
||||
//реализовать локально. вернуть готовый объект.
|
||||
return null;
|
||||
//копирование визуализатора
|
||||
File visualiser = new File(scenario.workspace, "VisualSapfor.jar");
|
||||
FileUtils.copyFile(new File(Global.Home, "TestingSystem.jar"), visualiser);
|
||||
//создание настроек
|
||||
GlobalProperties properties = new GlobalProperties();
|
||||
properties.Mode = Current.Mode.Scenario;
|
||||
properties.threadsNum = Global.properties.threadsNum; //брать из настроек сервера же.
|
||||
properties.threadsTimeout = Global.properties.threadsTimeout;
|
||||
Utils.jsonToFile(properties, new File(scenario.workspace, "properties"));
|
||||
//создание инструкции
|
||||
File scenario_file = new File(scenario.workspace, "scenario");
|
||||
Utils.jsonToFile(scenario_json, scenario_file);
|
||||
//запуск пакетного режима.
|
||||
Utils.startScript_(scenarioWorkspace, scenarioWorkspace, "start", "java -jar VisualSapfor.jar");
|
||||
}
|
||||
@Override
|
||||
protected void Session() throws Exception {
|
||||
DBObject dbObject = null;
|
||||
SapforServerScenario_info scenario = null;
|
||||
Test test = null;
|
||||
switch (code) {
|
||||
case InstallSapforForTesting:
|
||||
Print("Установка SAPFOR для тестирования");
|
||||
InstallSapforForTesting();
|
||||
case StartSapforTests:
|
||||
Print("Запуск тестирования SAPFOR");
|
||||
StartSapforTests((SapforServerScenario_info) request.object);
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
break;
|
||||
case SynchronizeTests:
|
||||
|
||||
@@ -3,6 +3,8 @@ import Common.Database.SQLITE.SQLiteDatabase;
|
||||
import GlobalData.Settings.SettingName;
|
||||
import SapforTestingSystem.SapforConfiguration.SapforConfigurationDBTable;
|
||||
import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommandsDBTable;
|
||||
import SapforTestingSystem.SapforScenario.SapforScenariosDBTable;
|
||||
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackagesDBTable;
|
||||
import SapforTestingSystem.ServerSapfor.ServerSapforsDBTable;
|
||||
import TestingSystem.Configuration.UI.ConfigurationDBTable;
|
||||
import TestingSystem.Group.GroupsDBTable;
|
||||
@@ -21,8 +23,11 @@ public class TestsDatabase extends SQLiteDatabase {
|
||||
//--
|
||||
public SapforConfigurationDBTable sapforConfigurations;
|
||||
public SapforConfigurationCommandsDBTable sapforConfigurationCommands;
|
||||
//----
|
||||
public ServerSapforsDBTable serverSapfors;
|
||||
//
|
||||
//--
|
||||
public SapforScenariosDBTable sapforScenarios;
|
||||
public SapforTasksPackagesDBTable sapforTasksPackages;
|
||||
//--
|
||||
public TestsDatabase() {
|
||||
super(Paths.get(System.getProperty("user.dir"), "Data", TasksDatabase.tests_db_name + ".sqlite").toFile());
|
||||
@@ -38,6 +43,8 @@ public class TestsDatabase extends SQLiteDatabase {
|
||||
addTable(sapforConfigurations = new SapforConfigurationDBTable());
|
||||
addTable(sapforConfigurationCommands = new SapforConfigurationCommandsDBTable());
|
||||
addTable(serverSapfors = new ServerSapforsDBTable());
|
||||
addTable(sapforScenarios = new SapforScenariosDBTable());
|
||||
addTable(sapforTasksPackages = new SapforTasksPackagesDBTable());
|
||||
}
|
||||
@Override
|
||||
public void Init() throws Exception {
|
||||
|
||||
@@ -7,8 +7,8 @@ import Common.Utils.Utils;
|
||||
import ProjectData.LanguageName;
|
||||
import Repository.Server.ServerCode;
|
||||
import Repository.Server.ServerExchangeUnit_2021;
|
||||
import SapforTestingSystem.Json.SapforPackage_json;
|
||||
import SapforTestingSystem.Json.SapforScenario_json;
|
||||
import SapforTestingSystem.Json.SapforConfiguration_json;
|
||||
import SapforTestingSystem.Json.PackageModeScenario_json;
|
||||
import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
|
||||
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
|
||||
import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommand;
|
||||
@@ -233,7 +233,7 @@ public class StartSapforTests extends Pass_2021<SapforScenario> {
|
||||
Utils.jsonToFile(properties, new File(target.workspace, "properties"));
|
||||
//----
|
||||
File scenarioFile = new File(target.workspace, "scenario");
|
||||
SapforScenario_json scenario_json = new SapforScenario_json();
|
||||
PackageModeScenario_json scenario_json = new PackageModeScenario_json();
|
||||
scenario_json.sapfor_drv = sapfor.getName();
|
||||
scenario_json.tests.addAll(allTests.keySet());
|
||||
//----
|
||||
@@ -271,7 +271,7 @@ public class StartSapforTests extends Pass_2021<SapforScenario> {
|
||||
}
|
||||
Global.db.Update(sapforTasksPackage);
|
||||
//--->>
|
||||
SapforPackage_json package_json = new SapforPackage_json();
|
||||
SapforConfiguration_json package_json = new SapforConfiguration_json();
|
||||
package_json.id = String.valueOf(sapforTasksPackage.id);
|
||||
package_json.flags = sapforTasksPackage.flags;
|
||||
package_json.codes.addAll(codes);
|
||||
|
||||
189
src/Visual_DVM_2021/Passes/All/StartSapforTestsOnServer.java
Normal file
189
src/Visual_DVM_2021/Passes/All/StartSapforTestsOnServer.java
Normal file
@@ -0,0 +1,189 @@
|
||||
package Visual_DVM_2021.Passes.All;
|
||||
import Common.Current;
|
||||
import Common.Global;
|
||||
import Common.UI.UI;
|
||||
import ProjectData.LanguageName;
|
||||
import Repository.Server.ServerCode;
|
||||
import Repository.Server.ServerExchangeUnit_2021;
|
||||
import SapforTestingSystem.SapforServerScenario_info;
|
||||
import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
|
||||
import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommand;
|
||||
import TestingSystem.Group.Group;
|
||||
import TestingSystem.Test.Test;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
import Visual_DVM_2021.Passes.TestingSystemPass;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
public class StartSapforTestsOnServer extends TestingSystemPass<SapforServerScenario_info> {
|
||||
protected int allTasksCount = 0;
|
||||
//--
|
||||
protected LinkedHashMap<String, Vector<String>> groupsTests = null;
|
||||
//--
|
||||
protected LinkedHashMap<String, Test> allTests = null;
|
||||
protected Vector<String> testsNames_lower = null; //все тесты что участвуют здесь
|
||||
protected Vector<LanguageName> groupsLanguages = null;
|
||||
protected File sapfor = null;
|
||||
//---
|
||||
//---
|
||||
@Override
|
||||
public String getIconPath() {
|
||||
return "/icons/Start.png";
|
||||
}
|
||||
@Override
|
||||
public String getButtonText() {
|
||||
return "";
|
||||
}
|
||||
@Override
|
||||
protected boolean needsAnimation() {
|
||||
return true;
|
||||
}
|
||||
//--
|
||||
protected boolean checkTestName(Test test) {
|
||||
String name = test.description.toLowerCase();
|
||||
if (testsNames_lower.contains(name)) {
|
||||
Log.Writeln_("В пакет не могут входить тесты с одинаковыми именами (без учета регистра):" + test.description.toLowerCase());
|
||||
return false;
|
||||
}
|
||||
testsNames_lower.add(name);
|
||||
return true;
|
||||
}
|
||||
protected boolean getGroupTests(String groupId) {
|
||||
Vector<String> groupTests = new Vector<>();
|
||||
Vector<String> selectedGroupTests = new Vector<>();
|
||||
//---
|
||||
for (Test test : Global.testingServer.db.tests.Data.values()) {
|
||||
if (test.group_id.equals(groupId)) {
|
||||
groupTests.add(test.id);
|
||||
if (test.isSelected())
|
||||
selectedGroupTests.add(test.id);
|
||||
}
|
||||
}
|
||||
if (!groupTests.isEmpty() && !selectedGroupTests.isEmpty())
|
||||
groupTests = selectedGroupTests;
|
||||
//---
|
||||
if (groupTests.isEmpty()) {
|
||||
Log.Writeln_("Пустая группа тестов: " + groupId);
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
for (String testId : groupTests) {
|
||||
Test test = Global.testingServer.db.tests.get(testId);
|
||||
if (!checkTestName(test))
|
||||
return false;
|
||||
else
|
||||
allTests.put(test.description, test);
|
||||
}
|
||||
//--
|
||||
groupsTests.put(groupId, groupTests);
|
||||
//--
|
||||
return true;
|
||||
}
|
||||
public boolean getConfigurationCommands(SapforConfiguration sapforConfiguration) {
|
||||
//1. получить список всех команд.
|
||||
Vector<PassCode_2021> codes = new Vector<>();
|
||||
int v = 0;
|
||||
for (SapforConfigurationCommand command : Global.testingServer.db.sapforConfigurationCommands.Data.values()) {
|
||||
if (command.sapforconfiguration_id.equals(sapforConfiguration.id)) {
|
||||
codes.add(command.passCode);
|
||||
if (command.passCode.equals(PassCode_2021.CreateParallelVariants))
|
||||
v++;
|
||||
}
|
||||
}
|
||||
//--
|
||||
if (codes.size() == 0) {
|
||||
Log.Writeln_("Пустая конфигурация:" + sapforConfiguration.id);
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
if (v > 2) {
|
||||
Log.Writeln_("Неверная конфигурация:" + sapforConfiguration.id + ": построение параллельных вариантов возможно единожды.");
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
if ((v == 1) && codes.size() > 1) {
|
||||
if (!codes.lastElement().equals(PassCode_2021.CreateParallelVariants)) {
|
||||
Log.Writeln_("Неверная конфигурация:" + sapforConfiguration.id + ": построение параллельных вариантов может быть только завершающей командой!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//--
|
||||
@Override
|
||||
protected boolean canStart(Object... args) throws Exception {
|
||||
//--
|
||||
allTasksCount = 0;
|
||||
target = null;
|
||||
//--
|
||||
groupsTests = new LinkedHashMap<>();
|
||||
//--->>
|
||||
testsNames_lower = new Vector<>();
|
||||
allTests = new LinkedHashMap<>();
|
||||
groupsLanguages = new Vector<>();
|
||||
//проверка стартовых условий.
|
||||
if (!Current.Check(Log, Current.ServerSapfor))
|
||||
return false;
|
||||
//--->>
|
||||
if (Global.testingServer.db.sapforConfigurations.getCheckedCount() == 0) {
|
||||
Log.Writeln_("Не отмечено ни одной конфигурации SAPFOR.");
|
||||
return false;
|
||||
}
|
||||
//-
|
||||
for (SapforConfiguration configuration : Global.testingServer.db.sapforConfigurations.getCheckedItems()) {
|
||||
if (!getConfigurationCommands(configuration))
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
if (Global.testingServer.db.groups.getCheckedCount() == 0) {
|
||||
Log.Writeln_("Не отмечено ни одной группы тестов");
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
for (Group group : Global.testingServer.db.groups.getCheckedItems()) {
|
||||
//---
|
||||
if (!groupsLanguages.contains(group.language))
|
||||
groupsLanguages.add(group.language);
|
||||
//-
|
||||
if (groupsLanguages.get(0) != LanguageName.fortran) {
|
||||
Log.Writeln_("Поддерживается пакетный режим только для языка Fortran!");
|
||||
return false;
|
||||
}
|
||||
if (groupsLanguages.size() > 1) {
|
||||
Log.Writeln_("Запуск тестов на разных языках в рамках одного пакета запрещен!");
|
||||
return false;
|
||||
}
|
||||
//---
|
||||
if (!getGroupTests(group.id))
|
||||
return false;
|
||||
}
|
||||
//--
|
||||
for (int i = 0; i < Global.testingServer.db.sapforConfigurations.getCheckedCount(); ++i) {
|
||||
for (Vector<String> tests : groupsTests.values())
|
||||
allTasksCount += tests.size();
|
||||
}
|
||||
//--
|
||||
return (UI.Question("Будет запущено:\n"
|
||||
+ allTasksCount + " задач\n" +
|
||||
"Продолжить"));
|
||||
}
|
||||
//--
|
||||
@Override
|
||||
protected void ServerAction() throws Exception {
|
||||
target = new SapforServerScenario_info();
|
||||
target.sapforId = Current.getServerSapfor().id;
|
||||
for (Test test : allTests.values())
|
||||
target.testsIds.add(test.id);
|
||||
//--
|
||||
ShowMessage1("Создание рабочих пространств...");
|
||||
for (SapforConfiguration configuration : Global.testingServer.db.sapforConfigurations.getCheckedItems())
|
||||
target.configurationsIds.add(configuration.id);
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.StartSapforTests, "", target));
|
||||
}
|
||||
@Override
|
||||
protected void performFinish() throws Exception {
|
||||
super.performFinish();
|
||||
// passes.get(PassCode_2021.SynchronizeTests).Do();
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package Visual_DVM_2021.Passes;
|
||||
public enum PassCode_2021 {
|
||||
Undefined,
|
||||
//-
|
||||
StartSapforTestsOnServer,
|
||||
InstallServerSapfor,
|
||||
SaveProfile,
|
||||
ApplyProfile,
|
||||
@@ -311,6 +312,8 @@ public enum PassCode_2021 {
|
||||
switch (this) {
|
||||
case Undefined:
|
||||
return "?";
|
||||
case StartSapforTestsOnServer:
|
||||
return "Запустить тестирование на сервере";
|
||||
case InstallServerSapfor:
|
||||
return "Собрать актуальную версию SAPFOR";
|
||||
case CompareSapforPackages:
|
||||
|
||||
Reference in New Issue
Block a user