постепенный перевод на сервер механизма тестирования.

This commit is contained in:
2023-10-04 00:25:36 +03:00
parent 2deecd47bf
commit 1cbd4eb393
16 changed files with 324 additions and 101 deletions

30
.idea/workspace.xml generated
View File

@@ -7,34 +7,22 @@
</component>
<component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/ServerSapforsBar/ServerSapforsBar.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/SapforTestingSystem/ServerSapfor/ServerSapfor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/SapforTestingSystem/ServerSapfor/ServerSapforsDBTable.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/buffer_.form" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/buffer_.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforServerScenario_info.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSapforTestsOnServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Constants/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Constants/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Current.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Current.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Global.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Global.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/RemoteSapforsMenuBar/RemoteSapforsMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/RemoteSapforsMenuBar/RemoteSapforsMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/UI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/UI.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Utils/Validators/ShellParser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Utils/Validators/ShellParser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/Machine/Machine.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Machine/Machine.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/SVN/SVN.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/SapforConfigurationsMenuBar/SapforConfigurationsMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/SapforConfigurationsMenuBar/SapforConfigurationsMenuBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/GlobalDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/GlobalDatabase.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/Json/SapforPackage_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/Json/SapforConfiguration_json.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/Json/SapforScenario_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/Json/PackageModeInstruction_json.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/PerformSapforTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/PerformSapforTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTask/SapforTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTask/SapforTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTestingPlaner/SapforTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTestingPlaner/SapforTestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestsDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestsDatabase.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/BuildComponent.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/BuildComponent.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/DownloadRepository.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/DownloadRepository.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/InstallRemoteSapfor.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSapforTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSapforTests.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SSH/ConnectionPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SSH/ConnectionPass.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.form" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.form" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/buffer.form" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/buffer.java" beforeDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -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() {

View File

@@ -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

View File

@@ -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;
}
//--

View File

@@ -67,5 +67,6 @@ public enum ServerCode {
DVMConvertProject,
SetRole,
InstallSapforForTesting,
StartSapforTests,
OLD
}

View File

@@ -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<>();
}

View File

@@ -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

View File

@@ -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"));
*/
}
}

View 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<>();
}

View File

@@ -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;
}

View File

@@ -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
));

View File

@@ -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:

View File

@@ -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 {

View File

@@ -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);

View 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();
}
}

View File

@@ -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: