Доделаны процессы для разных машин

This commit is contained in:
2024-04-24 22:23:50 +03:00
parent 4d543cb94f
commit c6e5036b9c
12 changed files with 143 additions and 471 deletions

View File

@@ -12,13 +12,11 @@ import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.MachineProcess.MachineProcess;
import TestingSystem.Common.MachineProcess.MachineProcessState;
import TestingSystem.Common.Test.Test;
import TestingSystem.Common.Test.TestType;
import TestingSystem.Common.TestingPackageToKill.TestingPackageToKill;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import TestingSystem.DVM.DVMPackage.DVMPackage_json;
import TestingSystem.DVM.DVMTestingPlanner;
import TestingSystem.SAPFOR.Json.SapforPackage_json;
import TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommand;
@@ -120,65 +118,56 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
protected void startAdditionalThreads() {
testingThread.start();
}
protected DVMTestingPlanner DVMTestingPlanner = new DVMTestingPlanner();
protected SapforTestingPlanner sapforTestingPlanner = new SapforTestingPlanner();
//--
void startNecessaryMachines() {
System.out.println("Запуск необходимых нитей машин...");
//todo. когда БД машин будет перенесена только на сервер. просто идти по всем машинам.
System.out.println("Проверка процессов машин...");
try {
LinkedHashMap<String, MachineProcess> active_processes = db.machinesProcesses.getSortedByKeys();
Vector<String> aborted = new Vector<>();
for (MachineProcess process : db.machinesProcesses.Data.values()) {
if (process.isAborted()) {
aborted.add(process.id);
}
}
//---
for (String key : aborted) {
System.out.println(key + " остановлен");
db.machinesProcesses.Data.remove(key);
}
//---
System.out.println(db.machinesProcesses.size() + " активных процессов");
//--
LinkedHashMap<String, MachineProcess> processes_to_start = new LinkedHashMap<>();
//1. Получить список всех пакетов, которые активны, и взять из них машины.
for (DVMPackage dvmPackage : db.dvmPackages.Data.values()) {
if (dvmPackage.state.isActive()) {
//-
Vector<String> k = new Vector<>();
k.add(dvmPackage.machine_address);
k.add(String.valueOf(dvmPackage.machine_port));
k.add(dvmPackage.user_name);
k.add(dvmPackage.user_workspace);
//-
String key = String.join("_", k);
if (!active_processes.containsKey(key)) {
if (!db.machinesProcesses.hasProcessForPackage(dvmPackage)) {
MachineProcess new_process = new MachineProcess(dvmPackage);
processes_to_start.put(key, new_process);
processes_to_start.put(new_process.getUniqueKey(), new_process);
}
}
}
System.out.println("Активные процессы: " + active_processes.size());
for (String key : active_processes.keySet()) {
System.out.println(key);
}
System.out.println("-------------------");
System.out.println("Ожидающие запуск процессы: " + processes_to_start.size());
for (String key : processes_to_start.keySet()) {
System.out.println(key);
}
System.out.println("-------------------");
//запуск.
for (MachineProcess process : processes_to_start.values()) {
System.out.println("Запуск процесса " + process.getUniqueKey() + " ...");
process.Start();
if (Utils.checkFileCreation(process.getStartedFile())) {
process.state = MachineProcessState.Active;
db.machinesProcesses.Data.put(process.id, process);
System.out.println("Выполнено");
} else {
System.out.println("Не удалось запустить процесс.");
System.out.println(process.getUniqueKey()+" запущен");
}
}
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("done");
}
//--
protected Thread testingThread = new Thread(() -> {
while (true) {
// DVMTestingPlanner.Perform();
// sapforTestingPlanner.Perform();
startNecessaryMachines();
sapforTestingPlanner.Perform();
System.out.println("sleep...");
Utils.sleep(5000);
}