no message
This commit is contained in:
9
.idea/workspace.xml
generated
9
.idea/workspace.xml
generated
@@ -7,14 +7,11 @@
|
|||||||
</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/SapforTestingSystem/PackageModeSupervisor/PackageModeSupervisor.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/Repository/RepositoryServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/RepositoryServer.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/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TasksDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TasksDatabase.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.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/Visual_DVM_2021/Passes/All/StartSapforTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartSapforTests.java" afterDir="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" />
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import Repository.Component.Sapfor.MessagesServer;
|
|||||||
import Repository.Component.Sapfor.Sapfor_F;
|
import Repository.Component.Sapfor.Sapfor_F;
|
||||||
import Repository.Component.Sapfor.TransformationPermission;
|
import Repository.Component.Sapfor.TransformationPermission;
|
||||||
import Repository.Server.ComponentsServer;
|
import Repository.Server.ComponentsServer;
|
||||||
import SapforTestingSystem.SapforTasksPackageSupervisor.SapforTasksPackageSupervisor;
|
import SapforTestingSystem.PackageModeSupervisor.PackageModeSupervisor;
|
||||||
import TestingSystem.TestingServer;
|
import TestingSystem.TestingServer;
|
||||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||||
import Visual_DVM_2021.Passes.Pass_2021;
|
import Visual_DVM_2021.Passes.Pass_2021;
|
||||||
@@ -357,7 +357,7 @@ public class Global {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
Log.ClearLog();
|
Log.ClearLog();
|
||||||
SapforTasksPackageSupervisor planner = new SapforTasksPackageSupervisor();
|
PackageModeSupervisor planner = new PackageModeSupervisor();
|
||||||
planner.Start();
|
planner.Start();
|
||||||
}
|
}
|
||||||
//---
|
//---
|
||||||
|
|||||||
@@ -0,0 +1,71 @@
|
|||||||
|
package SapforTestingSystem.PackageModeSupervisor;
|
||||||
|
import Common.Constants;
|
||||||
|
import Common.Global;
|
||||||
|
import Common.Utils.Utils;
|
||||||
|
import SapforTestingSystem.Json.SapforConfiguration_json;
|
||||||
|
import SapforTestingSystem.Json.SapforTasksResults_json;
|
||||||
|
import SapforTestingSystem.Json.SapforTasksPackage_json;
|
||||||
|
import SapforTestingSystem.PerformSapforTask;
|
||||||
|
import SapforTestingSystem.SapforTask.SapforTask;
|
||||||
|
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.Date;
|
||||||
|
public class PackageModeSupervisor extends ThreadsPlanner {
|
||||||
|
SapforTasksPackage_json package_json = null;
|
||||||
|
SapforTasksResults_json results_json = new SapforTasksResults_json();
|
||||||
|
public PackageModeSupervisor() throws Exception {
|
||||||
|
super(2000);
|
||||||
|
package_json = (SapforTasksPackage_json) Utils.jsonFromFile(new File(Global.Home, "package_json"), SapforTasksPackage_json.class);
|
||||||
|
results_json.StartDate = new Date().getTime();
|
||||||
|
//формирование списка задач.
|
||||||
|
File sapfor_drv = new File(Global.Home, package_json.sapfor_drv);
|
||||||
|
setMaxKernels(package_json.kernels);
|
||||||
|
for (SapforConfiguration_json sapforConfiguration_json : package_json.configurations) {
|
||||||
|
for (String testName : package_json.tests) {
|
||||||
|
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
|
||||||
|
SapforTask task = new SapforTask();
|
||||||
|
results_json.tasks.add(task);
|
||||||
|
//---
|
||||||
|
addThread(() -> new PerformSapforTask().Do(
|
||||||
|
sapfor_drv,
|
||||||
|
sapforConfiguration_json,
|
||||||
|
testName,
|
||||||
|
task
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
interruptThread.start();
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void Interrupt() throws Exception {
|
||||||
|
/*
|
||||||
|
System.out.println("killing " + package_json.sapfor_drv + "...");
|
||||||
|
String kill_command = Global.isWindows ? ("taskkill /FI \"IMAGENAME eq " + package_json.sapfor_drv + "\" /F /T") :
|
||||||
|
("killall -SIGKILL " + package_json.sapfor_drv);
|
||||||
|
Process killer = Runtime.getRuntime().exec(kill_command);
|
||||||
|
killer.waitFor();
|
||||||
|
System.out.println("done!");
|
||||||
|
*/
|
||||||
|
|
||||||
|
//todo для надежности сделать еще один kill с внешнего процесса.
|
||||||
|
// может быть гонка, что нить успеет запустить процесс уже после интеррупта.
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void finalize() {
|
||||||
|
results_json.EndDate = new Date().getTime();
|
||||||
|
|
||||||
|
//записать результаты всех задач.
|
||||||
|
try {
|
||||||
|
Utils.jsonToFile(results_json, new File(Global.Home, "results_json"));
|
||||||
|
//тут же и строить версии.
|
||||||
|
Utils.deleteFilesByExtensions(new File(Global.Home),"proj","dep"); //Потом txt тоже добавить.
|
||||||
|
FileUtils.writeStringToFile(new File(Constants.DONE), "");
|
||||||
|
} catch (Exception e) {
|
||||||
|
Global.Log.PrintException(e);
|
||||||
|
}
|
||||||
|
|
||||||
|
System.exit(0);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,71 +1,146 @@
|
|||||||
package SapforTestingSystem.SapforTasksPackageSupervisor;
|
package SapforTestingSystem.SapforTasksPackageSupervisor;
|
||||||
import Common.Constants;
|
import Common.Current;
|
||||||
import Common.Global;
|
import Common.Global;
|
||||||
|
import Common.GlobalProperties;
|
||||||
import Common.Utils.Utils;
|
import Common.Utils.Utils;
|
||||||
|
import Repository.Server.ServerCode;
|
||||||
import SapforTestingSystem.Json.SapforConfiguration_json;
|
import SapforTestingSystem.Json.SapforConfiguration_json;
|
||||||
import SapforTestingSystem.Json.SapforTasksResults_json;
|
|
||||||
import SapforTestingSystem.Json.SapforTasksPackage_json;
|
import SapforTestingSystem.Json.SapforTasksPackage_json;
|
||||||
import SapforTestingSystem.PerformSapforTask;
|
import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
|
||||||
import SapforTestingSystem.SapforTask.SapforTask;
|
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
|
||||||
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
|
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
|
||||||
|
import TestingSystem.TasksPackage.TasksPackageState;
|
||||||
|
import TestingSystem.Test.Test;
|
||||||
|
import TestingSystem.TestingPlanner;
|
||||||
|
import javafx.util.Pair;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Date;
|
import java.util.Arrays;
|
||||||
public class SapforTasksPackageSupervisor extends ThreadsPlanner {
|
import java.util.LinkedHashMap;
|
||||||
SapforTasksPackage_json package_json = null;
|
import java.util.Vector;
|
||||||
SapforTasksResults_json results_json = new SapforTasksResults_json();
|
public class SapforTasksPackageSupervisor {
|
||||||
public SapforTasksPackageSupervisor() throws Exception {
|
protected TestingPlanner planner; //планировщик.
|
||||||
super(2000);
|
SapforTasksPackage sapforTasksPackage = null;
|
||||||
package_json = (SapforTasksPackage_json) Utils.jsonFromFile(new File(Global.Home, "package_json"), SapforTasksPackage_json.class);
|
public SapforTasksPackageSupervisor(TestingPlanner planner_in, SapforTasksPackage sapforTasksPackage_in){
|
||||||
results_json.StartDate = new Date().getTime();
|
planner = planner_in;
|
||||||
//формирование списка задач.
|
sapforTasksPackage = sapforTasksPackage_in;
|
||||||
File sapfor_drv = new File(Global.Home, package_json.sapfor_drv);
|
}
|
||||||
setMaxKernels(package_json.kernels);
|
private void TestsSynchronize() throws Exception {
|
||||||
for (SapforConfiguration_json sapforConfiguration_json : package_json.configurations) {
|
Vector<String> testsIds = new Vector<>(Arrays.asList(sapforTasksPackage.testsIds.split("\n")));
|
||||||
for (String testName : package_json.tests) {
|
Vector<String> configurationsIds = new Vector<>(Arrays.asList(sapforTasksPackage.configurationsIds.split("\n")));
|
||||||
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
|
Vector<Object> tests_ = (Vector<Object>) planner.ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(Test.class, testsIds));
|
||||||
SapforTask task = new SapforTask();
|
Vector<Object> configurations_ = (Vector<Object>) planner.ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(SapforConfiguration.class, configurationsIds));
|
||||||
results_json.tasks.add(task);
|
LinkedHashMap<String, Test> tests = new LinkedHashMap<>();
|
||||||
//---
|
LinkedHashMap<String, SapforConfiguration> configurations = new LinkedHashMap<>();
|
||||||
addThread(() -> new PerformSapforTask().Do(
|
for (Object o : tests_) {
|
||||||
sapfor_drv,
|
Test test = (Test) o;
|
||||||
sapforConfiguration_json,
|
System.out.println(test.description);
|
||||||
testName,
|
tests.put(test.id, test);
|
||||||
task
|
}
|
||||||
));
|
for (Object o : configurations_) {
|
||||||
|
SapforConfiguration sapforConfiguration = (SapforConfiguration) o;
|
||||||
|
System.out.println(sapforConfiguration.id);
|
||||||
|
configurations.put(sapforConfiguration.id, sapforConfiguration);
|
||||||
|
}
|
||||||
|
//--
|
||||||
|
SapforTasksPackage_json package_json = new SapforTasksPackage_json();
|
||||||
|
package_json.kernels = sapforTasksPackage.kernels;
|
||||||
|
for (String test_id : testsIds)
|
||||||
|
package_json.tests.add(tests.get(test_id).description);
|
||||||
|
//создание рабочего пространства для пакетного режима
|
||||||
|
File packageWorkspace = new File(Global.SapforPackagesDirectory, String.valueOf(sapforTasksPackage.id));
|
||||||
|
Utils.CheckAndCleanDirectory(packageWorkspace);
|
||||||
|
sapforTasksPackage.workspace = packageWorkspace.getAbsolutePath();
|
||||||
|
//копирование тестов по конфигурациям.
|
||||||
|
for (String configuration_id : configurationsIds) {
|
||||||
|
SapforConfiguration configuration = configurations.get(configuration_id);
|
||||||
|
//--
|
||||||
|
SapforConfiguration_json configuration_json = new SapforConfiguration_json();
|
||||||
|
configuration_json.id = String.valueOf(configuration_id);
|
||||||
|
configuration_json.flags = SapforConfigurationInterface.getFlags(configuration);
|
||||||
|
configuration_json.codes.addAll(SapforConfigurationInterface.getPassCodes(configuration));
|
||||||
|
//--->>
|
||||||
|
package_json.configurations.add(configuration_json);
|
||||||
|
//-->>
|
||||||
|
File configurationWorkspace = new File(packageWorkspace, configuration_id);
|
||||||
|
FileUtils.forceMkdir(configurationWorkspace);
|
||||||
|
for (String test_id : testsIds) {
|
||||||
|
Test test = 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);
|
||||||
|
sapforTasksPackage.tasksCount++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
interruptThread.start();
|
//копирование SAPFOR
|
||||||
|
File sapforFile = new File(sapforTasksPackage.workspace, Utils.getDateName("SAPFOR_F"));
|
||||||
|
FileUtils.copyFile(new File(sapforTasksPackage.sapfor_drv), sapforFile);
|
||||||
|
if (!sapforFile.setExecutable(true))
|
||||||
|
throw new Exception("Не удалось сделать файл " + sapforFile.getName() + " исполняемым!");
|
||||||
|
package_json.sapfor_drv = sapforFile.getName();
|
||||||
|
//--->>
|
||||||
|
//копирование визуализатора
|
||||||
|
File visualiser = new File(sapforTasksPackage.workspace, "VisualSapfor.jar");
|
||||||
|
FileUtils.copyFile(new File(Global.Home, "TestingSystem.jar"), visualiser);
|
||||||
|
//создание настроек
|
||||||
|
GlobalProperties properties = new GlobalProperties();
|
||||||
|
properties.Mode = Current.Mode.Package;
|
||||||
|
Utils.jsonToFile(properties, new File(sapforTasksPackage.workspace, "properties"));
|
||||||
|
//создание инструкции
|
||||||
|
File package_json_file = new File(sapforTasksPackage.workspace, "package_json");
|
||||||
|
Utils.jsonToFile(package_json, package_json_file);
|
||||||
|
//подготовка пакетного режима. Запустит его уже очередь.
|
||||||
|
Utils.createScript(packageWorkspace, packageWorkspace, "start", "java -jar VisualSapfor.jar");
|
||||||
|
//--
|
||||||
}
|
}
|
||||||
@Override
|
|
||||||
public void Interrupt() throws Exception {
|
|
||||||
/*
|
/*
|
||||||
System.out.println("killing " + package_json.sapfor_drv + "...");
|
void SapforPackageStart() throws Exception {
|
||||||
String kill_command = Global.isWindows ? ("taskkill /FI \"IMAGENAME eq " + package_json.sapfor_drv + "\" /F /T") :
|
System.out.println("start sapfor package " + sapforTasksPackage.id);
|
||||||
("killall -SIGKILL " + package_json.sapfor_drv);
|
File workspace = new File(sapforTasksPackage.workspace);
|
||||||
Process killer = Runtime.getRuntime().exec(kill_command);
|
File script = new File(sapforTasksPackage.workspace, "start");
|
||||||
killer.waitFor();
|
ProcessBuilder procBuilder = new ProcessBuilder(script.getAbsolutePath());
|
||||||
System.out.println("done!");
|
procBuilder.directory(workspace);
|
||||||
|
procBuilder.start();
|
||||||
|
sapforTasksPackage.state = TasksPackageState.RunningExecution;
|
||||||
|
UpdateSapforPackage(sapforTasksPackage);
|
||||||
|
System.out.println("done");
|
||||||
|
}
|
||||||
|
void CheckSapforPackageState() throws Exception {
|
||||||
|
System.out.println("check sapfor package " + sapforTasksPackage.id);
|
||||||
|
File done = new File(sapforTasksPackage.workspace, Constants.DONE);
|
||||||
|
File aborted = new File(sapforTasksPackage.workspace, Constants.ABORTED);
|
||||||
|
if (done.exists()) {
|
||||||
|
sapforTasksPackage.state = TasksPackageState.Done;
|
||||||
|
UpdateSapforPackage(sapforTasksPackage);
|
||||||
|
System.out.println("package done");
|
||||||
|
} else if (aborted.exists()) {
|
||||||
|
sapforTasksPackage.state = TasksPackageState.Aborted;
|
||||||
|
UpdateSapforPackage(sapforTasksPackage);
|
||||||
|
System.out.println("package aborted");
|
||||||
|
} else {
|
||||||
|
System.out.println("package running");
|
||||||
|
}
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
|
//--
|
||||||
//todo для надежности сделать еще один kill с внешнего процесса.
|
public void Perform() throws Exception {
|
||||||
// может быть гонка, что нить успеет запустить процесс уже после интеррупта.
|
switch (sapforTasksPackage.state) {
|
||||||
}
|
case TestsSynchronize:
|
||||||
@Override
|
TestsSynchronize();
|
||||||
protected void finalize() {
|
sapforTasksPackage.state = TasksPackageState.RunningPreparation;
|
||||||
results_json.EndDate = new Date().getTime();
|
planner.UpdateSapforPackage(sapforTasksPackage);
|
||||||
|
break;
|
||||||
//записать результаты всех задач.
|
/*
|
||||||
try {
|
case RunningPreparation:
|
||||||
Utils.jsonToFile(results_json, new File(Global.Home, "results_json"));
|
SapforPackageStart();
|
||||||
//тут же и строить версии.
|
break;
|
||||||
Utils.deleteFilesByExtensions(new File(Global.Home),"proj","dep"); //Потом txt тоже добавить.
|
case RunningExecution:
|
||||||
FileUtils.writeStringToFile(new File(Constants.DONE), "");
|
CheckSapforPackageState();
|
||||||
} catch (Exception e) {
|
break;
|
||||||
Global.Log.PrintException(e);
|
*/
|
||||||
}
|
default:
|
||||||
|
break;
|
||||||
System.exit(0);
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,36 +1,27 @@
|
|||||||
package TestingSystem;
|
package TestingSystem;
|
||||||
import Common.Constants;
|
|
||||||
import Common.Current;
|
|
||||||
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.User.User;
|
import GlobalData.User.User;
|
||||||
import Repository.EmailMessage;
|
import Repository.EmailMessage;
|
||||||
import Repository.Server.ServerCode;
|
import Repository.Server.ServerCode;
|
||||||
import Repository.Server.ServerExchangeUnit_2021;
|
import Repository.Server.ServerExchangeUnit_2021;
|
||||||
import SapforTestingSystem.Json.SapforConfiguration_json;
|
|
||||||
import SapforTestingSystem.Json.SapforTasksPackage_json;
|
|
||||||
import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
|
|
||||||
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
|
|
||||||
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
|
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
|
||||||
|
import SapforTestingSystem.SapforTasksPackageSupervisor.SapforTasksPackageSupervisor;
|
||||||
import TestingSystem.MachineMaxKernels.MachineMaxKernels;
|
import TestingSystem.MachineMaxKernels.MachineMaxKernels;
|
||||||
import TestingSystem.Tasks.TestCompilationTask;
|
import TestingSystem.Tasks.TestCompilationTask;
|
||||||
import TestingSystem.Tasks.TestTask;
|
import TestingSystem.Tasks.TestTask;
|
||||||
import TestingSystem.TasksPackage.TasksPackage;
|
import TestingSystem.TasksPackage.TasksPackage;
|
||||||
import TestingSystem.TasksPackage.TasksPackageState;
|
import TestingSystem.TasksPackage.TasksPackageState;
|
||||||
import TestingSystem.Test.Test;
|
|
||||||
import TestingSystem.TestsSupervisor_2022.TestsSupervisor_2022;
|
import TestingSystem.TestsSupervisor_2022.TestsSupervisor_2022;
|
||||||
import Visual_DVM_2021.Passes.PassException;
|
import Visual_DVM_2021.Passes.PassException;
|
||||||
import Visual_DVM_2021.Passes.SSH.ConnectionPass;
|
import Visual_DVM_2021.Passes.SSH.ConnectionPass;
|
||||||
import Visual_DVM_2021.Passes.TestingSystemPass;
|
import Visual_DVM_2021.Passes.TestingSystemPass;
|
||||||
import javafx.util.Pair;
|
import javafx.util.Pair;
|
||||||
import org.apache.commons.io.FileUtils;
|
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.FileWriter;
|
import java.io.FileWriter;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
@@ -199,7 +190,7 @@ public class TestingPlanner {
|
|||||||
if (sapforTasksPackage != null) {
|
if (sapforTasksPackage != null) {
|
||||||
System.out.println("found sapfor package: " + sapforTasksPackage.id + " state = " + sapforTasksPackage.state);
|
System.out.println("found sapfor package: " + sapforTasksPackage.id + " state = " + sapforTasksPackage.state);
|
||||||
try {
|
try {
|
||||||
PerformSapforPackage();
|
(new SapforTasksPackageSupervisor(this, sapforTasksPackage)).Perform();
|
||||||
} catch (Exception ex) {
|
} catch (Exception ex) {
|
||||||
Print("Исключение при тестировании SAPROR");
|
Print("Исключение при тестировании SAPROR");
|
||||||
Print(ex.getMessage());
|
Print(ex.getMessage());
|
||||||
@@ -219,123 +210,8 @@ public class TestingPlanner {
|
|||||||
return String.join("/", user.workspace, ConnectionPass.modules, ConnectionPass.planner);
|
return String.join("/", user.workspace, ConnectionPass.modules, ConnectionPass.planner);
|
||||||
}
|
}
|
||||||
//--
|
//--
|
||||||
void UpdateSapforPackage(SapforTasksPackage package_in) throws Exception {
|
public void UpdateSapforPackage(SapforTasksPackage package_in) throws Exception {
|
||||||
package_in.ChangeDate = new Date().getTime();
|
package_in.ChangeDate = new Date().getTime();
|
||||||
ServerCommand(ServerCode.EditAccountObject, package_in);
|
ServerCommand(ServerCode.EditAccountObject, package_in);
|
||||||
}
|
}
|
||||||
private void TestsSynchronize() throws Exception {
|
|
||||||
Vector<String> testsIds = new Vector<>(Arrays.asList(sapforTasksPackage.testsIds.split("\n")));
|
|
||||||
Vector<String> configurationsIds = new Vector<>(Arrays.asList(sapforTasksPackage.configurationsIds.split("\n")));
|
|
||||||
Vector<Object> tests_ = (Vector<Object>) ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(Test.class, testsIds));
|
|
||||||
Vector<Object> configurations_ = (Vector<Object>) ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(SapforConfiguration.class, configurationsIds));
|
|
||||||
LinkedHashMap<String, Test> tests = new LinkedHashMap<>();
|
|
||||||
LinkedHashMap<String, SapforConfiguration> configurations = new LinkedHashMap<>();
|
|
||||||
for (Object o : tests_) {
|
|
||||||
Test test = (Test) o;
|
|
||||||
System.out.println(test.description);
|
|
||||||
tests.put(test.id, test);
|
|
||||||
}
|
|
||||||
for (Object o : configurations_) {
|
|
||||||
SapforConfiguration sapforConfiguration = (SapforConfiguration) o;
|
|
||||||
System.out.println(sapforConfiguration.id);
|
|
||||||
configurations.put(sapforConfiguration.id, sapforConfiguration);
|
|
||||||
}
|
|
||||||
//--
|
|
||||||
SapforTasksPackage_json package_json = new SapforTasksPackage_json();
|
|
||||||
package_json.kernels = sapforTasksPackage.kernels;
|
|
||||||
for (String test_id : testsIds)
|
|
||||||
package_json.tests.add(tests.get(test_id).description);
|
|
||||||
//создание рабочего пространства для пакетного режима
|
|
||||||
File packageWorkspace = new File(Global.SapforPackagesDirectory, String.valueOf(sapforTasksPackage.id));
|
|
||||||
Utils.CheckAndCleanDirectory(packageWorkspace);
|
|
||||||
sapforTasksPackage.workspace = packageWorkspace.getAbsolutePath();
|
|
||||||
//копирование тестов по конфигурациям.
|
|
||||||
for (String configuration_id : configurationsIds) {
|
|
||||||
SapforConfiguration configuration = configurations.get(configuration_id);
|
|
||||||
//--
|
|
||||||
SapforConfiguration_json configuration_json = new SapforConfiguration_json();
|
|
||||||
configuration_json.id = String.valueOf(configuration_id);
|
|
||||||
configuration_json.flags = SapforConfigurationInterface.getFlags(configuration);
|
|
||||||
configuration_json.codes.addAll(SapforConfigurationInterface.getPassCodes(configuration));
|
|
||||||
//--->>
|
|
||||||
package_json.configurations.add(configuration_json);
|
|
||||||
//-->>
|
|
||||||
File configurationWorkspace = new File(packageWorkspace, configuration_id);
|
|
||||||
FileUtils.forceMkdir(configurationWorkspace);
|
|
||||||
for (String test_id : testsIds) {
|
|
||||||
Test test = 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);
|
|
||||||
sapforTasksPackage.tasksCount++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//копирование SAPFOR
|
|
||||||
File sapforFile = new File(sapforTasksPackage.workspace, Utils.getDateName("SAPFOR_F"));
|
|
||||||
FileUtils.copyFile(new File(sapforTasksPackage.sapfor_drv), sapforFile);
|
|
||||||
if (!sapforFile.setExecutable(true))
|
|
||||||
throw new Exception("Не удалось сделать файл " + sapforFile.getName() + " исполняемым!");
|
|
||||||
package_json.sapfor_drv = sapforFile.getName();
|
|
||||||
//--->>
|
|
||||||
//копирование визуализатора
|
|
||||||
File visualiser = new File(sapforTasksPackage.workspace, "VisualSapfor.jar");
|
|
||||||
FileUtils.copyFile(new File(Global.Home, "TestingSystem.jar"), visualiser);
|
|
||||||
//создание настроек
|
|
||||||
GlobalProperties properties = new GlobalProperties();
|
|
||||||
properties.Mode = Current.Mode.Package;
|
|
||||||
Utils.jsonToFile(properties, new File(sapforTasksPackage.workspace, "properties"));
|
|
||||||
//создание инструкции
|
|
||||||
File package_json_file = new File(sapforTasksPackage.workspace, "package_json");
|
|
||||||
Utils.jsonToFile(package_json, package_json_file);
|
|
||||||
//подготовка пакетного режима. Запустит его уже очередь.
|
|
||||||
Utils.createScript(packageWorkspace, packageWorkspace, "start", "java -jar VisualSapfor.jar");
|
|
||||||
//--
|
|
||||||
}
|
|
||||||
void SapforPackageStart() throws Exception {
|
|
||||||
System.out.println("start sapfor package " + sapforTasksPackage.id);
|
|
||||||
File workspace = new File(sapforTasksPackage.workspace);
|
|
||||||
File script = new File(sapforTasksPackage.workspace, "start");
|
|
||||||
ProcessBuilder procBuilder = new ProcessBuilder(script.getAbsolutePath());
|
|
||||||
procBuilder.directory(workspace);
|
|
||||||
procBuilder.start();
|
|
||||||
sapforTasksPackage.state = TasksPackageState.RunningExecution;
|
|
||||||
UpdateSapforPackage(sapforTasksPackage);
|
|
||||||
System.out.println("done");
|
|
||||||
}
|
|
||||||
void CheckSapforPackageState() throws Exception {
|
|
||||||
System.out.println("check sapfor package " + sapforTasksPackage.id);
|
|
||||||
File done = new File(sapforTasksPackage.workspace, Constants.DONE);
|
|
||||||
File aborted = new File(sapforTasksPackage.workspace, Constants.ABORTED);
|
|
||||||
if (done.exists()) {
|
|
||||||
sapforTasksPackage.state = TasksPackageState.Done;
|
|
||||||
UpdateSapforPackage(sapforTasksPackage);
|
|
||||||
System.out.println("package done");
|
|
||||||
} else if (aborted.exists()) {
|
|
||||||
sapforTasksPackage.state = TasksPackageState.Aborted;
|
|
||||||
UpdateSapforPackage(sapforTasksPackage);
|
|
||||||
System.out.println("package aborted");
|
|
||||||
} else {
|
|
||||||
System.out.println("package running");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//--
|
|
||||||
public void PerformSapforPackage() throws Exception {
|
|
||||||
switch (sapforTasksPackage.state) {
|
|
||||||
case TestsSynchronize:
|
|
||||||
TestsSynchronize();
|
|
||||||
sapforTasksPackage.state = TasksPackageState.RunningPreparation;
|
|
||||||
UpdateSapforPackage(sapforTasksPackage);
|
|
||||||
break;
|
|
||||||
/*
|
|
||||||
case RunningPreparation:
|
|
||||||
SapforPackageStart();
|
|
||||||
break;
|
|
||||||
case RunningExecution:
|
|
||||||
CheckSapforPackageState();
|
|
||||||
break;
|
|
||||||
*/
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user