постепенный перевод на сервер механизма тестирования.
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user