доделал отображение прогресса и актуализацию активных пакетов. пришлось заменить признак изменения с состояния на дату изменения.

This commit is contained in:
2023-12-15 14:55:16 +03:00
parent 54bab7f83d
commit bdf0f7f4eb
7 changed files with 49 additions and 43 deletions

6
.idea/workspace.xml generated
View File

@@ -9,11 +9,11 @@
<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 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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/DVMPackagesBar/DVMPackagesBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/DVMPackagesBar/DVMPackagesBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPackage/TestingPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPackage/TestingPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMPackage/DVMPackage.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/DVMTestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/files/Planner/Supervisor.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/Planner/Supervisor.h" 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" />

View File

@@ -26,7 +26,7 @@
"PerformanceAnalyzerPath": "", "PerformanceAnalyzerPath": "",
"ComponentsBackUpsCount": 10, "ComponentsBackUpsCount": 10,
"TestingKernels": 28, "TestingKernels": 28,
"AutoCheckTesting": false, "AutoCheckTesting": true,
"CheckTestingIntervalSeconds": 10, "CheckTestingIntervalSeconds": 10,
"EmailOnTestingProgress": false "EmailOnTestingProgress": false
} }

View File

@@ -91,9 +91,19 @@ public abstract class TestingPlanner<P extends TestingPackage> {
protected void Disconnect() { protected void Disconnect() {
} }
//--- //---
/*
protected void CheckExecutionStates() throws Exception{ protected void CheckExecutionStates() throws Exception{
case CompilationWorkspacesCreation:
case CompilationPreparation:
case CompilationExecution:
case RunningWorkspacesCreation:
case RunningPreparation:
case RunningExecution:
if (CheckNextState()) UpdatePackage();
break;
} }
*/
//жизненный цикл планировщика //жизненный цикл планировщика
protected void Session() throws Exception { protected void Session() throws Exception {
switch (testingPackage.state) { switch (testingPackage.state) {
@@ -109,21 +119,15 @@ public abstract class TestingPlanner<P extends TestingPackage> {
PackageStart(); PackageStart();
EmailPackage(); EmailPackage();
testingPackage.StartDate = new Date().getTime(); testingPackage.StartDate = new Date().getTime();
testingPackage.progress = 0;
UpdatePackageState(getStateAfterStart()); UpdatePackageState(getStateAfterStart());
break; break;
case CompilationWorkspacesCreation:
case CompilationPreparation:
case CompilationExecution:
case RunningWorkspacesCreation:
case RunningPreparation:
case RunningExecution:
if (CheckNextState()) UpdatePackage();
break;
case RunningEnd: case RunningEnd:
DownloadResults(); DownloadResults();
UpdatePackageState(TasksPackageState.Analysis); UpdatePackageState(TasksPackageState.Analysis);
break; break;
default:
if (CheckNextState()) UpdatePackage();
break;
} }
} }
// --- // ---

View File

@@ -377,8 +377,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
break; break;
case GetFirstActiveDVMPackage: case GetFirstActiveDVMPackage:
Print("Получить первый активный пакет задач DVM"); Print("Получить первый активный пакет задач DVM");
response = new ServerExchangeUnit_2021(ServerCode.OK); GetFirstActiveDVMPackage();
response.object = db.getFirstActiveDVMPackage();
break; break;
case DVMPackageNeedsKill: case DVMPackageNeedsKill:
Print("Проверить нуждает ли пакет DVM в убийстве"); Print("Проверить нуждает ли пакет DVM в убийстве");
@@ -724,17 +723,26 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
//-- //--
} }
//-- //--
void GetFirstActiveDVMPackage() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = null;
DVMPackage dvmPackage = db.getFirstActiveDVMPackage();
if (dvmPackage != null) {
//нужно вернуть копию объекта с иным адресом!!
response.object = new DVMPackage(dvmPackage);
}
}
//--- //---
void UpdateActiveDVMPackages() throws Exception { void UpdateActiveDVMPackages() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
Vector<Pair<Integer, TasksPackageState>> keys_pairs = (Vector<Pair<Integer, TasksPackageState>>) request.object; Vector<Pair<Integer, Long>> keys_pairs = (Vector<Pair<Integer, Long>>) request.object;
Vector<DVMPackage> res = new Vector<>(); Vector<DVMPackage> res = new Vector<>();
//-- //--
for (Pair<Integer, TasksPackageState> p : keys_pairs) { for (Pair<Integer, Long> p : keys_pairs) {
if (db.dvmPackages.containsKey(p.getKey())) { if (db.dvmPackages.containsKey(p.getKey())) {
DVMPackage tasksPackage = db.dvmPackages.get(p.getKey()); DVMPackage actual = db.dvmPackages.get(p.getKey());
if (!p.getValue().equals(tasksPackage.state)) if (actual.ChangeDate != p.getValue())
res.add(tasksPackage); res.add(new DVMPackage(actual));
} }
} }
response.object = res; response.object = res;

View File

@@ -238,19 +238,15 @@ public class DVMTestingPlanner extends TestingPlanner<DVMPackage> {
protected boolean CheckNextState() throws Exception { protected boolean CheckNextState() throws Exception {
boolean progress_changed = false; boolean progress_changed = false;
boolean state_changed = false; boolean state_changed = false;
RemoteFile progress = new RemoteFile(packageRemoteWorkspace, "progress"); RemoteFile progress = new RemoteFile(packageRemoteWorkspace, "progress");
if (user.connection.Exists(progress)) { if (user.connection.Exists(progress)) {
String s = user.connection.readFromFile(progress).replace("\r", "").replace("\n", ""); String s = user.connection.readFromFile(progress);
int current_progress = Integer.parseInt(s); int current_progress = Integer.parseInt(s);
System.out.println("current_progress="+current_progress);
System.out.println("old_progress="+testingPackage.progress);
/*
if (current_progress != testingPackage.progress) { if (current_progress != testingPackage.progress) {
Print("progress changed: "+current_progress);
testingPackage.progress = current_progress; testingPackage.progress = current_progress;
progress_changed = true; progress_changed = true;
} }
*/
} }
RemoteFile stateDir = new RemoteFile(packageRemoteWorkspace, "state"); RemoteFile stateDir = new RemoteFile(packageRemoteWorkspace, "state");
//состояния пакета могут меняться только по возрастанию. ищем, появилось ли такое. //состояния пакета могут меняться только по возрастанию. ищем, появилось ли такое.

View File

@@ -1,18 +1,13 @@
package Visual_DVM_2021.Passes.All; package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global; import Common.Global;
import Common.UI.UI;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021; import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.DVM.DVMPackage.DVMPackage; import TestingSystem.DVM.DVMPackage.DVMPackage;
import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.Server.TestingSystemPass; import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import javafx.util.Pair; import javafx.util.Pair;
import java.util.Vector; import java.util.Vector;
public class ActualizeDVMPackages extends TestingSystemPass<Vector<Pair<Integer, TasksPackageState>>> { public class ActualizeDVMPackages extends TestingSystemPass<Vector<Pair<Integer, Long>>> {
@Override @Override
protected boolean needsAnimation() { protected boolean needsAnimation() {
return false; return false;
@@ -25,7 +20,7 @@ public class ActualizeDVMPackages extends TestingSystemPass<Vector<Pair<Integer,
System.out.println(dvmPackage.id + " " + dvmPackage.state); System.out.println(dvmPackage.id + " " + dvmPackage.state);
if (dvmPackage.state.isActive()) { if (dvmPackage.state.isActive()) {
System.out.println(dvmPackage.state); System.out.println(dvmPackage.state);
target.add(new Pair(dvmPackage.id, dvmPackage.state)); target.add(new Pair(dvmPackage.id, dvmPackage.ChangeDate));
System.out.println(dvmPackage.id); System.out.println(dvmPackage.id);
} }
} }
@@ -40,8 +35,8 @@ public class ActualizeDVMPackages extends TestingSystemPass<Vector<Pair<Integer,
protected void performDone() throws Exception { protected void performDone() throws Exception {
Vector<DVMPackage> res = (Vector<DVMPackage>) response.object; Vector<DVMPackage> res = (Vector<DVMPackage>) response.object;
Global.testingServer.db.BeginTransaction(); Global.testingServer.db.BeginTransaction();
for (DVMPackage dvmPackage : res) for (DVMPackage actual : res)
Global.testingServer.db.UpdateWithCheck(dvmPackage); Global.testingServer.db.UpdateWithCheck(actual);
Global.testingServer.db.Commit(); Global.testingServer.db.Commit();
} }
@Override @Override

View File

@@ -79,6 +79,7 @@ public:
} }
void DoWithSchedule(int maxKernels) { void DoWithSchedule(int maxKernels) {
saveState(); saveState();
saveProgress(0);
// подготовка тестов // подготовка тестов
while (this->state != Execution) { while (this->state != Execution) {
for (auto& task : this->getElements()) { for (auto& task : this->getElements()) {
@@ -193,11 +194,7 @@ public:
#endif #endif
if ((done % step) == 0) { if ((done % step) == 0) {
size_t persentDone = (done / total) * 100.0; size_t persentDone = (done / total) * 100.0;
FILE *f = fopen("progress", "w"); saveProgress(persentDone);
if (f) {
fprintf(f, "%lld\n", persentDone);
fclose(f);
}
} }
} }
} }
@@ -208,8 +205,14 @@ public:
File tmp(outFile, String(buf.c_str())); File tmp(outFile, String(buf.c_str()));
} }
void saveState() { void saveState() {
Utils::Sleep(1); //чтобы не было одинаковых по дате файлов.
String stateFile = packageWorkspace + "/state/" + getStatePrefix() + printState(); String stateFile = packageWorkspace + "/state/" + getStatePrefix() + printState();
File tmp(stateFile, Utils::getDate()); File tmp(stateFile, Utils::getDate());
} }
void saveProgress(long long persentDone) {
FILE *f = fopen("progress", "w");
if (f) {
fprintf(f, "%lld", persentDone);
fclose(f);
}
}
}; };