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

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

View File

@@ -91,9 +91,19 @@ public abstract class TestingPlanner<P extends TestingPackage> {
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<P extends TestingPackage> {
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;
}
}
// ---

View File

@@ -377,8 +377,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
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<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 {
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<>();
//--
for (Pair<Integer, TasksPackageState> p : keys_pairs) {
for (Pair<Integer, Long> 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;

View File

@@ -238,19 +238,15 @@ public class DVMTestingPlanner extends TestingPlanner<DVMPackage> {
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");
//состояния пакета могут меняться только по возрастанию. ищем, появилось ли такое.

View File

@@ -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<Vector<Pair<Integer, TasksPackageState>>> {
public class ActualizeDVMPackages extends TestingSystemPass<Vector<Pair<Integer, Long>>> {
@Override
protected boolean needsAnimation() {
return false;
@@ -22,14 +17,14 @@ public class ActualizeDVMPackages extends TestingSystemPass<Vector<Pair<Integer,
target = new Vector<>();
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<Vector<Pair<Integer,
protected void performDone() throws Exception {
Vector<DVMPackage> res = (Vector<DVMPackage>) 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

View File

@@ -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);
}
}
};