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

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>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <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/SapforServerScenario_info.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/SapforTestingSystem/ServerSapfor/ServerSapfor.java" afterDir="false" /> <change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSapforTestsOnServer.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 beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" 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/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/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/Common/UI/UI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/UI.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/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/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.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/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/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/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/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/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/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/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> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -89,6 +89,7 @@ public class Global {
public static File DataBackUpsDirectory; public static File DataBackUpsDirectory;
public static File PackagesDirectory; public static File PackagesDirectory;
public static File SapforsDirectory; public static File SapforsDirectory;
public static File ScenariosDirectory;
//------------------------------------------------------------------ //------------------------------------------------------------------
public static Visualiser visualiser = null; public static Visualiser visualiser = null;
public static Visualizer_2 visualizer_2 = 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(RepoDirectory = Paths.get(Home, Repo).toFile());
Utils.CheckDirectory(PackagesDirectory = Paths.get(Home, Packages).toFile()); Utils.CheckDirectory(PackagesDirectory = Paths.get(Home, Packages).toFile());
Utils.CheckDirectory(SapforsDirectory = Paths.get(Home, "Sapfors").toFile()); Utils.CheckDirectory(SapforsDirectory = Paths.get(Home, "Sapfors").toFile());
Utils.CheckDirectory(ScenariosDirectory = Paths.get(Home, "Scenarios").toFile());
} }
public static void CreateLog() { public static void CreateLog() {
Log = new Loggable() { Log = new Loggable() {

View File

@@ -3,7 +3,7 @@ import Common.UI.Menus_2023.DataMenuBar;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
public class SapforConfigurationsMenuBar extends DataMenuBar { public class SapforConfigurationsMenuBar extends DataMenuBar {
public SapforConfigurationsMenuBar() { public SapforConfigurationsMenuBar() {
super("конфигурации", PassCode_2021.StartSapforTests, super("конфигурации", PassCode_2021.StartSapforTestsOnServer,
PassCode_2021.PublishSapforConfiguration, PassCode_2021.PublishSapforConfiguration,
PassCode_2021.EditSapforConfiguration, PassCode_2021.EditSapforConfiguration,
PassCode_2021.DeleteSapforConfiguration PassCode_2021.DeleteSapforConfiguration

View File

@@ -35,7 +35,6 @@ import GlobalData.User.UsersDBTable;
import Repository.Component.ComponentType; import Repository.Component.ComponentType;
import SapforTestingSystem.SapforScenario.SapforScenariosDBTable; import SapforTestingSystem.SapforScenario.SapforScenariosDBTable;
import SapforTestingSystem.SapforTask.SapforTaskResult; import SapforTestingSystem.SapforTask.SapforTaskResult;
import SapforTestingSystem.SapforTask.SapforTask;
import SapforTestingSystem.SapforTask.SapforTasksDBTable; import SapforTestingSystem.SapforTask.SapforTasksDBTable;
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage; import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackagesDBTable; import SapforTestingSystem.SapforTasksPackage.SapforTasksPackagesDBTable;
@@ -159,15 +158,17 @@ public class GlobalDatabase extends SQLiteDatabase {
Global.properties.Update(); Global.properties.Update();
return res; return res;
} }
/*
public LinkedHashMap<Long, SapforTask> getSapforPackageTasks(int package_id) throws Exception { public LinkedHashMap<Long, SapforTask> getSapforPackageTasks(int package_id) throws Exception {
LinkedHashMap<Long, SapforTask> res = new LinkedHashMap<>(); LinkedHashMap<Long, SapforTask> res = new LinkedHashMap<>();
for (SapforTask task : sapforTasks.Data.values()) { 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); res.put(task.id, task);
} }
} }
return res; return res;
} }
*/
public DataSet<String, SapforTaskResult> getSapforPackagesMasterDataSet(SapforTasksPackage package_in) throws Exception { public DataSet<String, SapforTaskResult> getSapforPackagesMasterDataSet(SapforTasksPackage package_in) throws Exception {
DataSet<String, SapforTaskResult> res = new DataSet<String, SapforTaskResult>(String.class, SapforTaskResult.class) { DataSet<String, SapforTaskResult> res = new DataSet<String, SapforTaskResult>(String.class, SapforTaskResult.class) {
@Override @Override
@@ -207,9 +208,11 @@ public class GlobalDatabase extends SQLiteDatabase {
return Current.SapforEtalonTaskResult; return Current.SapforEtalonTaskResult;
} }
}; };
/*
for (SapforTask task : sapforTasks.Data.values()) 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)); res.put(task.test_description, new SapforTaskResult(package_in, task));
*/
return res; return res;
} }
//-- //--
@@ -256,9 +259,11 @@ public class GlobalDatabase extends SQLiteDatabase {
return Current.SapforTaskResult; return Current.SapforTaskResult;
} }
}; };
/*
for (SapforTask task : sapforTasks.Data.values()) 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)); res.put(task.test_description, new SapforTaskResult(package_in, task));
*/
return res; return res;
} }
//-- //--

View File

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

View File

@@ -3,11 +3,11 @@ import com.google.gson.annotations.Expose;
import java.util.List; import java.util.List;
import java.util.Vector; import java.util.Vector;
public class SapforScenario_json { public class PackageModeScenario_json {
@Expose @Expose
public String sapfor_drv = ""; //файл с сапфором. Имя уникально для сценария. public String sapfor_drv = ""; //файл с сапфором. Имя уникально для сценария.
@Expose @Expose
public List<String> tests = new Vector<>(); public List<String> tests = new Vector<>();
@Expose @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.List;
import java.util.Vector; import java.util.Vector;
public class SapforPackage_json { public class SapforConfiguration_json {
@Expose @Expose
public String id = ""; public String id = "";
@Expose @Expose

View File

@@ -4,7 +4,7 @@ import Common.Global;
import Common.Utils.Utils; import Common.Utils.Utils;
import GlobalData.Tasks.TaskState; import GlobalData.Tasks.TaskState;
import ProjectData.Project.db_project_info; import ProjectData.Project.db_project_info;
import SapforTestingSystem.Json.SapforPackage_json; import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforVersion_json; import SapforTestingSystem.Json.SapforVersion_json;
import SapforTestingSystem.SapforTask.SapforTask; import SapforTestingSystem.SapforTask.SapforTask;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
@@ -29,7 +29,7 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
} }
//-- //--
File sapfor_drv; File sapfor_drv;
SapforPackage_json sapforPackage_json; SapforConfiguration_json sapforConfiguration_json;
//----- //-----
File parentTask; File parentTask;
File task; File task;
@@ -46,14 +46,14 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
sapfor_drv = (File) args[0]; sapfor_drv = (File) args[0];
sapforPackage_json = (SapforPackage_json) args[1]; sapforConfiguration_json = (SapforConfiguration_json) args[1];
String testDescription = (String) args[2]; String testDescription = (String) args[2];
target = (SapforTask) args[3]; 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; task = null;
//--->> //--->>
target.sapfortaskspackage_2023_id = Integer.parseInt(sapforPackage_json.id); target.sapfor_configuration_id = sapforConfiguration_json.id;
target.test_description = testDescription; target.test_description = testDescription;
target.root = parentTask.getAbsolutePath(); target.root = parentTask.getAbsolutePath();
return true; return true;
@@ -86,7 +86,7 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
File file = new File(data_workspace, name + (Global.isWindows ? ".bat" : ".sh")); File file = new File(data_workspace, name + (Global.isWindows ? ".bat" : ".sh"));
FileUtils.write(file, FileUtils.write(file,
Utils.DQuotes(sapfor_drv.getAbsolutePath()) Utils.DQuotes(sapfor_drv.getAbsolutePath())
+ (sapforPackage_json.flags.isEmpty() ? "" : (" " + sapforPackage_json.flags)) + (sapforConfiguration_json.flags.isEmpty() ? "" : (" " + sapforConfiguration_json.flags))
+ " -noLogo" + " -noLogo"
+ " " + command + + " " + command +
" 1>" + " 1>" +
@@ -158,8 +158,8 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
} }
@Override @Override
protected void body() throws Exception { protected void body() throws Exception {
System.out.println(target.root + " " + Utils.Brackets(sapforPackage_json.flags));//!! System.out.println(target.root + " " + Utils.Brackets(sapforConfiguration_json.flags));//!!
for (PassCode_2021 code : sapforPackage_json.codes) { for (PassCode_2021 code : sapforConfiguration_json.codes) {
System.out.println(code); //!! System.out.println(code); //!!
if (parse()) { if (parse()) {
if (code.equals(PassCode_2021.CreateParallelVariants)) if (code.equals(PassCode_2021.CreateParallelVariants))
@@ -169,11 +169,5 @@ public class PerformSapforTask extends Pass_2021<SapforTask> {
} else } else
break; 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; public long id = Constants.Nan;
@Description("DEFAULT '-1'") @Description("DEFAULT '-1'")
@Expose @Expose
public int sapfortaskspackage_2023_id = Constants.Nan; public String sapfor_configuration_id = "";
//------------------------------------->> //------------------------------------->>
@Description("DEFAULT ''") @Description("DEFAULT ''")
@Expose @Expose
@@ -50,7 +50,7 @@ public class SapforTask extends DBObject {
super.SynchronizeFields(object); super.SynchronizeFields(object);
SapforTask t = (SapforTask) object; SapforTask t = (SapforTask) object;
id = t.id; id = t.id;
sapfortaskspackage_2023_id = t.sapfortaskspackage_2023_id; sapfor_configuration_id = t.sapfor_configuration_id;
test_description = t.test_description; test_description = t.test_description;
state = t.state; state = t.state;
} }

View File

@@ -1,9 +1,9 @@
package SapforTestingSystem.SapforTestingPlaner; package SapforTestingSystem.SapforTestingPlaner;
import Common.Global; import Common.Global;
import Common.Utils.Utils; import Common.Utils.Utils;
import SapforTestingSystem.Json.SapforPackage_json; import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforScenarioResults_json; import SapforTestingSystem.Json.SapforScenarioResults_json;
import SapforTestingSystem.Json.SapforScenario_json; import SapforTestingSystem.Json.PackageModeScenario_json;
import SapforTestingSystem.PerformSapforTask; import SapforTestingSystem.PerformSapforTask;
import SapforTestingSystem.SapforTask.SapforTask; import SapforTestingSystem.SapforTask.SapforTask;
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner; import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
@@ -11,15 +11,15 @@ import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
import java.io.File; import java.io.File;
import java.util.Date; import java.util.Date;
public class SapforTestingPlanner extends ThreadsPlanner { public class SapforTestingPlanner extends ThreadsPlanner {
SapforScenario_json scenario_json = null; PackageModeScenario_json scenario_json = null;
SapforScenarioResults_json results_json = new SapforScenarioResults_json(); SapforScenarioResults_json results_json = new SapforScenarioResults_json();
public SapforTestingPlanner() throws Exception { public SapforTestingPlanner() throws Exception {
super(Global.properties.threadsTimeout, Global.properties.threadsNum); 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(); results_json.StartDate = new Date().getTime();
//формирование списка задач. //формирование списка задач.
File sapfor_drv = new File(Global.Home, scenario_json.sapfor_drv); 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) { for (String testName : scenario_json.tests) {
//--- чтобы было можно на нее сослаться после выполнения всех нитей. //--- чтобы было можно на нее сослаться после выполнения всех нитей.
SapforTask task = new SapforTask(); SapforTask task = new SapforTask();
@@ -27,7 +27,7 @@ public class SapforTestingPlanner extends ThreadsPlanner {
//--- //---
addThread(() -> new PerformSapforTask().Do( addThread(() -> new PerformSapforTask().Do(
sapfor_drv, sapfor_drv,
sapforPackage_json, sapforConfiguration_json,
testName, testName,
task task
)); ));

View File

@@ -1,7 +1,9 @@
package TestingSystem; package TestingSystem;
import Common.Current;
import Common.Database.DBObject; import Common.Database.DBObject;
import Common.Database.rDBObject; import Common.Database.rDBObject;
import Common.Global; import Common.Global;
import Common.GlobalProperties;
import Common.Utils.Utils; import Common.Utils.Utils;
import GlobalData.Machine.Machine; import GlobalData.Machine.Machine;
import GlobalData.RemoteFile.RemoteFile; import GlobalData.RemoteFile.RemoteFile;
@@ -9,13 +11,16 @@ import GlobalData.Tasks.TaskState;
import GlobalData.User.User; import GlobalData.User.User;
import ProjectData.LanguageName; import ProjectData.LanguageName;
import ProjectData.Project.db_project_info; import ProjectData.Project.db_project_info;
import Repository.Component.Component;
import Repository.Component.Sapfor.Sapfor_F;
import Repository.RepositoryRefuseException; import Repository.RepositoryRefuseException;
import Repository.RepositoryServer; import Repository.RepositoryServer;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021; 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.Group;
import TestingSystem.Group.GroupInterface; import TestingSystem.Group.GroupInterface;
import TestingSystem.Tasks.TestCompilationTask; import TestingSystem.Tasks.TestCompilationTask;
@@ -26,7 +31,6 @@ import TestingSystem.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.Test.Test; import TestingSystem.Test.Test;
import TestingSystem.Test.TestInterface; import TestingSystem.Test.TestInterface;
import TestingSystem.Test.TestType; import TestingSystem.Test.TestType;
import Visual_DVM_2021.Passes.All.BuildComponent;
import Visual_DVM_2021.Passes.All.DownloadRepository; import Visual_DVM_2021.Passes.All.DownloadRepository;
import Visual_DVM_2021.Passes.All.UnzipFolderPass; import Visual_DVM_2021.Passes.All.UnzipFolderPass;
import Visual_DVM_2021.Passes.All.ZipFolderPass; import Visual_DVM_2021.Passes.All.ZipFolderPass;
@@ -294,54 +298,69 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
groups.sort(Comparator.comparing(o -> o.description)); groups.sort(Comparator.comparing(o -> o.description));
return groups; return groups;
} }
public ServerSapfor InstallSapforForTesting() throws Exception { public void StartSapforTests(SapforServerScenario_info scenario_info) throws Exception {
Sapfor_F sapfor_f = new Sapfor_F(); //--
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 File visualiser = new File(scenario.workspace, "VisualSapfor.jar");
public PassCode_2021 code() { FileUtils.copyFile(new File(Global.Home, "TestingSystem.jar"), visualiser);
return PassCode_2021.DownloadRepository; //создание настроек
} GlobalProperties properties = new GlobalProperties();
@Override properties.Mode = Current.Mode.Scenario;
protected boolean needsAnimation() { properties.threadsNum = Global.properties.threadsNum; //брать из настроек сервера же.
return false; properties.threadsTimeout = Global.properties.threadsTimeout;
} Utils.jsonToFile(properties, new File(scenario.workspace, "properties"));
}; //создание инструкции
BuildComponent buildComponent = new BuildComponent() { File scenario_file = new File(scenario.workspace, "scenario");
@Override Utils.jsonToFile(scenario_json, scenario_file);
public PassCode_2021 code() { //запуск пакетного режима.
return PassCode_2021.BuildComponent; Utils.startScript_(scenarioWorkspace, scenarioWorkspace, "start", "java -jar VisualSapfor.jar");
}
@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;
} }
@Override @Override
protected void Session() throws Exception { protected void Session() throws Exception {
DBObject dbObject = null; DBObject dbObject = null;
SapforServerScenario_info scenario = null;
Test test = null; Test test = null;
switch (code) { switch (code) {
case InstallSapforForTesting: case StartSapforTests:
Print("Установка SAPFOR для тестирования"); Print("Запуск тестирования SAPFOR");
InstallSapforForTesting(); StartSapforTests((SapforServerScenario_info) request.object);
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
case SynchronizeTests: case SynchronizeTests:

View File

@@ -3,6 +3,8 @@ import Common.Database.SQLITE.SQLiteDatabase;
import GlobalData.Settings.SettingName; import GlobalData.Settings.SettingName;
import SapforTestingSystem.SapforConfiguration.SapforConfigurationDBTable; import SapforTestingSystem.SapforConfiguration.SapforConfigurationDBTable;
import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommandsDBTable; import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommandsDBTable;
import SapforTestingSystem.SapforScenario.SapforScenariosDBTable;
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackagesDBTable;
import SapforTestingSystem.ServerSapfor.ServerSapforsDBTable; import SapforTestingSystem.ServerSapfor.ServerSapforsDBTable;
import TestingSystem.Configuration.UI.ConfigurationDBTable; import TestingSystem.Configuration.UI.ConfigurationDBTable;
import TestingSystem.Group.GroupsDBTable; import TestingSystem.Group.GroupsDBTable;
@@ -21,8 +23,11 @@ public class TestsDatabase extends SQLiteDatabase {
//-- //--
public SapforConfigurationDBTable sapforConfigurations; public SapforConfigurationDBTable sapforConfigurations;
public SapforConfigurationCommandsDBTable sapforConfigurationCommands; public SapforConfigurationCommandsDBTable sapforConfigurationCommands;
//----
public ServerSapforsDBTable serverSapfors; public ServerSapforsDBTable serverSapfors;
// //--
public SapforScenariosDBTable sapforScenarios;
public SapforTasksPackagesDBTable sapforTasksPackages;
//-- //--
public TestsDatabase() { public TestsDatabase() {
super(Paths.get(System.getProperty("user.dir"), "Data", TasksDatabase.tests_db_name + ".sqlite").toFile()); 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(sapforConfigurations = new SapforConfigurationDBTable());
addTable(sapforConfigurationCommands = new SapforConfigurationCommandsDBTable()); addTable(sapforConfigurationCommands = new SapforConfigurationCommandsDBTable());
addTable(serverSapfors = new ServerSapforsDBTable()); addTable(serverSapfors = new ServerSapforsDBTable());
addTable(sapforScenarios = new SapforScenariosDBTable());
addTable(sapforTasksPackages = new SapforTasksPackagesDBTable());
} }
@Override @Override
public void Init() throws Exception { public void Init() throws Exception {

View File

@@ -7,8 +7,8 @@ import Common.Utils.Utils;
import ProjectData.LanguageName; import ProjectData.LanguageName;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021; import Repository.Server.ServerExchangeUnit_2021;
import SapforTestingSystem.Json.SapforPackage_json; import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforScenario_json; import SapforTestingSystem.Json.PackageModeScenario_json;
import SapforTestingSystem.SapforConfiguration.SapforConfiguration; import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface; import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommand; import SapforTestingSystem.SapforConfigurationCommand.SapforConfigurationCommand;
@@ -233,7 +233,7 @@ public class StartSapforTests extends Pass_2021<SapforScenario> {
Utils.jsonToFile(properties, new File(target.workspace, "properties")); Utils.jsonToFile(properties, new File(target.workspace, "properties"));
//---- //----
File scenarioFile = new File(target.workspace, "scenario"); 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.sapfor_drv = sapfor.getName();
scenario_json.tests.addAll(allTests.keySet()); scenario_json.tests.addAll(allTests.keySet());
//---- //----
@@ -271,7 +271,7 @@ public class StartSapforTests extends Pass_2021<SapforScenario> {
} }
Global.db.Update(sapforTasksPackage); 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.id = String.valueOf(sapforTasksPackage.id);
package_json.flags = sapforTasksPackage.flags; package_json.flags = sapforTasksPackage.flags;
package_json.codes.addAll(codes); 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 { public enum PassCode_2021 {
Undefined, Undefined,
//- //-
StartSapforTestsOnServer,
InstallServerSapfor, InstallServerSapfor,
SaveProfile, SaveProfile,
ApplyProfile, ApplyProfile,
@@ -311,6 +312,8 @@ public enum PassCode_2021 {
switch (this) { switch (this) {
case Undefined: case Undefined:
return "?"; return "?";
case StartSapforTestsOnServer:
return "Запустить тестирование на сервере";
case InstallServerSapfor: case InstallServerSapfor:
return "Собрать актуальную версию SAPFOR"; return "Собрать актуальную версию SAPFOR";
case CompareSapforPackages: case CompareSapforPackages: