no message

This commit is contained in:
2024-04-23 00:36:37 +03:00
parent 5f7b600c6d
commit cefbd875c8
4 changed files with 97 additions and 23 deletions

View File

@@ -11,6 +11,8 @@ import Repository.RepositoryServer;
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;
@@ -118,10 +120,73 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
protected DVMTestingPlanner DVMTestingPlanner = new DVMTestingPlanner();
protected SapforTestingPlanner sapforTestingPlanner = new SapforTestingPlanner();
//--
void checkMachinesActivity() {
System.out.println("Проверка активности нитей машин...");
try {
Vector<MachineProcess> toUpdate = new Vector<>();
for (MachineProcess machineProcess : db.machinesProcesses.Data.values()) {
if (machineProcess.isAborted()) {
toUpdate.add(machineProcess);
}
}
db.BeginTransaction();
for (MachineProcess machineProcess : toUpdate) {
machineProcess.state = MachineProcessState.Aborted;
db.Update(machineProcess);
}
db.Commit();
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("done");
}
void startNecessaryMachines() {
System.out.println("Запуск необходимых нитей машин...");
//todo. когда БД машин будет перенесена только на сервер. просто идти по всем машинам.
try {
LinkedHashMap<String, MachineProcess> active_processes = db.machinesProcesses.getActiveSortedByKeys();
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)) {
MachineProcess new_process = new MachineProcess(dvmPackage);
processes_to_start.put(key, 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("-------------------");
} catch (Exception ex) {
ex.printStackTrace();
}
System.out.println("done");
}
//--
protected Thread testingThread = new Thread(() -> {
while (true) {
DVMTestingPlanner.Perform();
sapforTestingPlanner.Perform();
// DVMTestingPlanner.Perform();
// sapforTestingPlanner.Perform();
checkMachinesActivity();
startNecessaryMachines();
System.out.println("sleep...");
Utils.sleep(5000);
}
});
//------>>>
@@ -310,7 +375,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
private void GetFirstActiveDVMPackagesByMachines() {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = new Vector<>();
// db.getFirstActiveDVMPackagesCopies(); //ЗАГЛУШКА. ЗА ПАКЕТЫ ДВМ ОТВЕЧАЕТ ОТДЕЛЬНЫЙ ПРОЦЕСС НА КАЖДУЮ МАШИНУ
// db.getFirstActiveDVMPackagesCopies(); //ЗАГЛУШКА. ЗА ПАКЕТЫ ДВМ ОТВЕЧАЕТ ОТДЕЛЬНЫЙ ПРОЦЕСС НА КАЖДУЮ МАШИНУ
}
private void GetFirstActiveSapforPackages() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK);
@@ -540,7 +605,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
//-
Email(message, out, err);
}
private void GetDVMPackagesJson() throws Exception{
private void GetDVMPackagesJson() throws Exception {
Vector<Integer> packages_ids = (Vector<Integer>) request.object;
Vector<DVMPackage_json> jsons = new Vector<>();
for (int package_id : packages_ids) {