diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 2f0389a6..3accbfd8 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -9,11 +9,11 @@
-
-
-
+
+
+
diff --git a/properties b/properties
index 0ce55c18..2653b49e 100644
--- a/properties
+++ b/properties
@@ -26,7 +26,7 @@
"PerformanceAnalyzerPath": "",
"ComponentsBackUpsCount": 10,
"TestingKernels": 28,
- "AutoCheckTesting": false,
+ "AutoCheckTesting": true,
"CheckTestingIntervalSeconds": 10,
"EmailOnTestingProgress": false
}
\ No newline at end of file
diff --git a/src/TestingSystem/Common/TestingPlanner.java b/src/TestingSystem/Common/TestingPlanner.java
index 22e1a3fa..04a913a6 100644
--- a/src/TestingSystem/Common/TestingPlanner.java
+++ b/src/TestingSystem/Common/TestingPlanner.java
@@ -91,9 +91,19 @@ public abstract class TestingPlanner
{
protected void Disconnect() {
}
//---
+ /*
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 {
switch (testingPackage.state) {
@@ -109,21 +119,15 @@ public abstract class TestingPlanner
{
PackageStart();
EmailPackage();
testingPackage.StartDate = new Date().getTime();
- testingPackage.progress = 0;
UpdatePackageState(getStateAfterStart());
break;
- case CompilationWorkspacesCreation:
- case CompilationPreparation:
- case CompilationExecution:
- case RunningWorkspacesCreation:
- case RunningPreparation:
- case RunningExecution:
- if (CheckNextState()) UpdatePackage();
- break;
case RunningEnd:
DownloadResults();
UpdatePackageState(TasksPackageState.Analysis);
break;
+ default:
+ if (CheckNextState()) UpdatePackage();
+ break;
}
}
// ---
diff --git a/src/TestingSystem/Common/TestingServer.java b/src/TestingSystem/Common/TestingServer.java
index f1229ba9..818519fb 100644
--- a/src/TestingSystem/Common/TestingServer.java
+++ b/src/TestingSystem/Common/TestingServer.java
@@ -377,8 +377,7 @@ public class TestingServer extends RepositoryServer {
break;
case GetFirstActiveDVMPackage:
Print("Получить первый активный пакет задач DVM");
- response = new ServerExchangeUnit_2021(ServerCode.OK);
- response.object = db.getFirstActiveDVMPackage();
+ GetFirstActiveDVMPackage();
break;
case DVMPackageNeedsKill:
Print("Проверить нуждает ли пакет DVM в убийстве");
@@ -724,17 +723,26 @@ public class TestingServer extends RepositoryServer {
//--
}
//--
+ 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 {
response = new ServerExchangeUnit_2021(ServerCode.OK);
- Vector> keys_pairs = (Vector>) request.object;
+ Vector> keys_pairs = (Vector>) request.object;
Vector res = new Vector<>();
//--
- for (Pair p : keys_pairs) {
+ for (Pair p : keys_pairs) {
if (db.dvmPackages.containsKey(p.getKey())) {
- DVMPackage tasksPackage = db.dvmPackages.get(p.getKey());
- if (!p.getValue().equals(tasksPackage.state))
- res.add(tasksPackage);
+ DVMPackage actual = db.dvmPackages.get(p.getKey());
+ if (actual.ChangeDate != p.getValue())
+ res.add(new DVMPackage(actual));
}
}
response.object = res;
diff --git a/src/TestingSystem/DVM/DVMTestingPlanner.java b/src/TestingSystem/DVM/DVMTestingPlanner.java
index 0b6f6120..e9707240 100644
--- a/src/TestingSystem/DVM/DVMTestingPlanner.java
+++ b/src/TestingSystem/DVM/DVMTestingPlanner.java
@@ -238,19 +238,15 @@ public class DVMTestingPlanner extends TestingPlanner {
protected boolean CheckNextState() throws Exception {
boolean progress_changed = false;
boolean state_changed = false;
-
RemoteFile progress = new RemoteFile(packageRemoteWorkspace, "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);
- System.out.println("current_progress="+current_progress);
- System.out.println("old_progress="+testingPackage.progress);
- /*
if (current_progress != testingPackage.progress) {
+ Print("progress changed: "+current_progress);
testingPackage.progress = current_progress;
progress_changed = true;
}
- */
}
RemoteFile stateDir = new RemoteFile(packageRemoteWorkspace, "state");
//состояния пакета могут меняться только по возрастанию. ищем, появилось ли такое.
diff --git a/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java b/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java
index e3bf8a92..2f799254 100644
--- a/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java
+++ b/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java
@@ -1,18 +1,13 @@
package Visual_DVM_2021.Passes.All;
-import Common.Current;
import Common.Global;
-import Common.UI.UI;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
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 javafx.util.Pair;
import java.util.Vector;
-public class ActualizeDVMPackages extends TestingSystemPass>> {
+public class ActualizeDVMPackages extends TestingSystemPass>> {
@Override
protected boolean needsAnimation() {
return false;
@@ -22,14 +17,14 @@ public class ActualizeDVMPackages extends TestingSystemPass();
System.out.println("active packages");
for (DVMPackage dvmPackage : Global.testingServer.db.dvmPackages.Data.values()) {
- System.out.println(dvmPackage.id+" "+dvmPackage.state);
+ System.out.println(dvmPackage.id + " " + dvmPackage.state);
if (dvmPackage.state.isActive()) {
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("found "+target.size());
+ System.out.println("found " + target.size());
return !target.isEmpty();
}
@Override
@@ -40,8 +35,8 @@ public class ActualizeDVMPackages extends TestingSystemPass res = (Vector) response.object;
Global.testingServer.db.BeginTransaction();
- for (DVMPackage dvmPackage : res)
- Global.testingServer.db.UpdateWithCheck(dvmPackage);
+ for (DVMPackage actual : res)
+ Global.testingServer.db.UpdateWithCheck(actual);
Global.testingServer.db.Commit();
}
@Override
diff --git a/src/files/Planner/Supervisor.h b/src/files/Planner/Supervisor.h
index 690e478d..44fb9519 100644
--- a/src/files/Planner/Supervisor.h
+++ b/src/files/Planner/Supervisor.h
@@ -79,6 +79,7 @@ public:
}
void DoWithSchedule(int maxKernels) {
saveState();
+ saveProgress(0);
// подготовка тестов
while (this->state != Execution) {
for (auto& task : this->getElements()) {
@@ -193,11 +194,7 @@ public:
#endif
if ((done % step) == 0) {
size_t persentDone = (done / total) * 100.0;
- FILE *f = fopen("progress", "w");
- if (f) {
- fprintf(f, "%lld\n", persentDone);
- fclose(f);
- }
+ saveProgress(persentDone);
}
}
}
@@ -208,8 +205,14 @@ public:
File tmp(outFile, String(buf.c_str()));
}
void saveState() {
- Utils::Sleep(1); //чтобы не было одинаковых по дате файлов.
String stateFile = packageWorkspace + "/state/" + getStatePrefix() + printState();
File tmp(stateFile, Utils::getDate());
}
+ void saveProgress(long long persentDone) {
+ FILE *f = fopen("progress", "w");
+ if (f) {
+ fprintf(f, "%lld", persentDone);
+ fclose(f);
+ }
+ }
};
\ No newline at end of file