From 15a2f8327511155f3108d09710a326f284beed77 Mon Sep 17 00:00:00 2001 From: 02090095 Date: Sun, 5 May 2024 23:20:12 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D0=BE=D0=BA=D0=B0=20=D0=B2=D1=81=D0=B5?= =?UTF-8?q?=20=D0=BD=D0=B0=20=D0=BE=D1=82=D0=BB=D0=B0=D0=B4=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D0=BE=D0=BC=20=D0=BF=D0=BE=D1=80=D1=82=D1=83.=20=D0=A1?= =?UTF-8?q?=D0=BE=D1=85=D1=80=D0=B0=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B2=D0=BE=D0=B4=D0=B0=20=D1=81=D0=B1=D0=BE=D1=80=D0=BA?= =?UTF-8?q?=D0=B8=20=D0=A1=D0=B0=D0=BF=D1=84=D0=BE=D1=80=D0=B0=20=D0=B2=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BF=D0=BA=D0=B5=20=D0=B2=D0=B5=D1=80=D1=81=D0=B8?= =?UTF-8?q?=D0=B8.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 19 +-- properties | 6 +- src/TestingSystem/Common/TestingServer.java | 111 ++++++++++-------- .../SAPFOR/SapforTestingPlanner.java | 8 ++ .../ServerSapfor/ServerSapforState.java | 7 ++ src/files/RunTask.h | 4 +- 6 files changed, 92 insertions(+), 63 deletions(-) create mode 100644 src/TestingSystem/SAPFOR/ServerSapfor/ServerSapforState.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 023fb81a..84b1f6b8 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,20 +7,12 @@ - + - - - - - - - - - - - + + + @@ -93,6 +85,7 @@ + diff --git a/properties b/properties index bdba6eb0..11d00984 100644 --- a/properties +++ b/properties @@ -2,9 +2,9 @@ "Mode": "Normal", "ServerAddress": "alex-freenas.ddns.net", "ServerUserName": "testuser", - "ServerUserSHHPort": 2000, + "ServerUserSHHPort": 23, "ComponentsServerPort": 7995, - "TestingServerPort": 7998, + "TestingServerPort": 7996, "SocketTimeout": 5000, "OldServer": false, "SMTPHost": "smtp.mail.ru", @@ -35,7 +35,7 @@ "PerformanceAnalyzerPath": "", "ComponentsBackUpsCount": 10, "TestingKernels": 28, - "AutoCheckTesting": true, + "AutoCheckTesting": false, "CheckTestingIntervalSeconds": 10, "EmailOnTestingProgress": false, "eraseTestingWorkspaces": true diff --git a/src/TestingSystem/Common/TestingServer.java b/src/TestingSystem/Common/TestingServer.java index eaf252e9..1dc2415e 100644 --- a/src/TestingSystem/Common/TestingServer.java +++ b/src/TestingSystem/Common/TestingServer.java @@ -38,43 +38,7 @@ import java.nio.file.Paths; import java.util.*; public class TestingServer extends RepositoryServer { public String name = "?"; - public static MachineProcessSet machinesProcesses= new MachineProcessSet(); - void StartNecessaryMachines() { - try { - Vector aborted = new Vector<>(); - for (MachineProcess process : machinesProcesses.Data.values()) { - if (process.isAborted()) { - aborted.add(process.id); - } - } - //--- - for (String key : aborted) { - machinesProcesses.Data.remove(key); - } - //--- - LinkedHashMap processes_to_start = new LinkedHashMap<>(); - //1. Получить список всех пакетов, которые активны, и взять из них машины. - for (DVMPackage dvmPackage : db.dvmPackages.Data.values()) { - if (dvmPackage.state.isActive()) { - //- - if (!machinesProcesses.hasProcessForPackage(dvmPackage)) { - MachineProcess new_process = new MachineProcess(dvmPackage); - processes_to_start.put(new_process.getUniqueKey(), new_process); - } - } - } - //запуск. - for (MachineProcess process : processes_to_start.values()) { - process.Start(); - if (Utils.checkFileCreation(process.getStartedFile())) { - machinesProcesses.Data.put(process.id, process); - } - } - } catch (Exception ex) { - ex.printStackTrace(); - } - } - + public static MachineProcessSet machinesProcesses = new MachineProcessSet(); @Override public void afterPublishAction(DBObject object) throws Exception { if (object instanceof Test) { @@ -94,7 +58,6 @@ public class TestingServer extends RepositoryServer { dvmPackage.saveJson(); dvmPackage.package_json = null; // объект больше не нужен. //-- - } else if (object instanceof SapforPackage) { ((SapforPackage) object).init(); } @@ -159,7 +122,6 @@ public class TestingServer extends RepositoryServer { protected void startAdditionalThreads() { testingThread.start(); } - DVMTestingChecker dvmTestingChecker = new DVMTestingChecker(); SapforTestingPlanner sapforTestingPlanner = new SapforTestingPlanner(); //-- @@ -473,6 +435,8 @@ public class TestingServer extends RepositoryServer { File repo = new File(testingSystemHome, "Repo"); File repoSapforHome = Paths.get(repo.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN).toFile(); File repo_bin = new File(repoSapforHome, "Sapfor_F"); + File repo_out = new File(repoSapforHome, Constants.out_file); + File repo_err = new File(repoSapforHome, Constants.err_file); //-- System.out.println("Синхронизация ветви DVM..."); Utils.startScript(repo, repo, "dvm_checkout", @@ -513,18 +477,40 @@ public class TestingServer extends RepositoryServer { //-- System.out.println("Сборка SAPFOR..."); Utils.startScript(repoSapforHome, repoSapforHome, "build_sapfor", - "cmake ../ 1>out.txt 2>err.txt\nmake -j 14 1>>out.txt 2>>err.txt\n").waitFor(); + "cmake ../ 1>" + + Constants.out_file + + " 2>" + + Constants.err_file + + "\nmake -j 14 1>>" + + Constants.out_file + + " 2>>" + + Constants.err_file + + "\n").waitFor(); //-- System.out.println("DONE"); File repoSapfor = new File(repoSapforHome, "Sapfor_F"); System.out.println("Result file is " + Utils.Brackets(repoSapfor.getAbsolutePath())); + //--- + File sapforsDirectory = new File(testingSystemHome, "Sapfors"); + File sapforHome = new File(sapforsDirectory, Utils.getDateName("sapfor")); + sapforHome.mkdir(); + File sapforOut = new File(sapforHome, Constants.out_file); + File sapforErr = new File(sapforHome, Constants.err_file); + //-- + System.out.println(repoSapfor.getAbsolutePath()); + System.out.println(repo_out.getAbsolutePath()); + System.out.println(repo_err.getAbsolutePath()); + System.out.println("===================="); + //-- + if (repo_out.exists()) + FileUtils.copyFile(repo_out, sapforOut); + if (repo_err.exists()) + FileUtils.copyFile(repo_err, sapforErr); + //-- if (repoSapfor.exists()) { System.out.println("assembly found!"); response = new ServerExchangeUnit_2021(ServerCode.OK); - File sapforsDirectory = new File(testingSystemHome, "Sapfors"); //создать папку. Для того чтобы скопировать из репозитория. - File sapforHome = new File(sapforsDirectory, Utils.getDateName("sapfor")); - sapforHome.mkdir(); File sapforBin = new File(sapforHome, "Sapfor_F"); FileUtils.copyFile(repo_bin, sapforBin); sapforBin.setExecutable(true, false); @@ -537,7 +523,7 @@ public class TestingServer extends RepositoryServer { response.object = serverSapfor; serverSapfor.version = String.valueOf(current_version); //--- - EmailSapforAssembly(current_version, true); + // EmailSapforAssembly(current_version, true); //--- } else { //--- @@ -625,7 +611,40 @@ public class TestingServer extends RepositoryServer { response = new ServerExchangeUnit_2021(ServerCode.OK); response.object = db.getFirstActiveDVMPackageCopyForMachineURL(request.arg); } - //----- - + void StartNecessaryMachines() { + try { + Vector aborted = new Vector<>(); + for (MachineProcess process : machinesProcesses.Data.values()) { + if (process.isAborted()) { + aborted.add(process.id); + } + } + //--- + for (String key : aborted) { + machinesProcesses.Data.remove(key); + } + //--- + LinkedHashMap processes_to_start = new LinkedHashMap<>(); + //1. Получить список всех пакетов, которые активны, и взять из них машины. + for (DVMPackage dvmPackage : db.dvmPackages.Data.values()) { + if (dvmPackage.state.isActive()) { + //- + if (!machinesProcesses.hasProcessForPackage(dvmPackage)) { + MachineProcess new_process = new MachineProcess(dvmPackage); + processes_to_start.put(new_process.getUniqueKey(), new_process); + } + } + } + //запуск. + for (MachineProcess process : processes_to_start.values()) { + process.Start(); + if (Utils.checkFileCreation(process.getStartedFile())) { + machinesProcesses.Data.put(process.id, process); + } + } + } catch (Exception ex) { + ex.printStackTrace(); + } + } } diff --git a/src/TestingSystem/SAPFOR/SapforTestingPlanner.java b/src/TestingSystem/SAPFOR/SapforTestingPlanner.java index 1b36096d..99fe85cf 100644 --- a/src/TestingSystem/SAPFOR/SapforTestingPlanner.java +++ b/src/TestingSystem/SAPFOR/SapforTestingPlanner.java @@ -141,4 +141,12 @@ public class SapforTestingPlanner extends TestingPlanner { Print("done!"); } //-- + @Override + public void perform() throws Exception { + compileSapfors(); + super.perform(); + } + public void compileSapfors() throws Exception{ + + } } diff --git a/src/TestingSystem/SAPFOR/ServerSapfor/ServerSapforState.java b/src/TestingSystem/SAPFOR/ServerSapfor/ServerSapforState.java new file mode 100644 index 00000000..3a3ae4be --- /dev/null +++ b/src/TestingSystem/SAPFOR/ServerSapfor/ServerSapforState.java @@ -0,0 +1,7 @@ +package TestingSystem.SAPFOR.ServerSapfor; +public enum ServerSapforState { + Queued, + Compilation, + Done, + DoneWithErrors +} diff --git a/src/files/RunTask.h b/src/files/RunTask.h index 52538819..48b9c831 100644 --- a/src/files/RunTask.h +++ b/src/files/RunTask.h @@ -58,17 +58,19 @@ public: setUsrPar(lines->get(offset + 5)); setArgs(lines->get(offset + 6)); setKernels(lines->get(offset + 7)); + //todo setStartCommand } String getLaunchScriptText() override { String modules = userWorkspace + "/modules"; String starterCall = modules + "/starter"; String launcherCall = modules + "/launcher"; - //- + //todo вшить команду запуска в задачу на стороне сервера, чтобы в будущем тестировать произвольные задачи. String dvm_start = String::DQuotes(dvm_drv) + " run "; if (!matrix.isEmpty()) dvm_start = dvm_start + matrix + " "; dvm_start = dvm_start + String::DQuotes("./" + binary_name); + //-------------------------------------------------------------------------------------- if (!args.isEmpty()) dvm_start = dvm_start + " " + args; return String::DQuotes(starterCall) + " " +