Оптимизация актуальности задач.
This commit is contained in:
2023-12-10 02:26:28 +03:00
parent fce85afc71
commit 127aec5a1d
13 changed files with 222 additions and 84 deletions

12
.idea/workspace.xml generated
View File

@@ -7,11 +7,19 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<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 afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ActualizeDVMPackages.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ActualizePackages.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ActualizeSAPFORPackages.java" afterDir="false" />
<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$/src/Common/Utils/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Utils/Utils.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/TestingBar/TestingBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/TestingBar/TestingBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.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/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ExportTasksPackageToExcel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ExportTasksPackageToExcel.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PauseTesting.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PlayTesting.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/TestingForm.java" 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

@@ -12,7 +12,7 @@ import Visual_DVM_2021.Passes.PassCode_2021;
import javax.swing.*; import javax.swing.*;
import java.awt.*; import java.awt.*;
public class TestingBar extends VisualiserMenuBar { public class TestingBar extends VisualiserMenuBar {
JButton autorefreshButton; public JButton autorefreshButton;
JSpinner sCheckTime; JSpinner sCheckTime;
JSpinner sKernels; JSpinner sKernels;
public TestingBar() { public TestingBar() {

View File

@@ -62,7 +62,7 @@ public class Visualiser extends Component {
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html //http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
@Override @Override
public void GetVersionInfo() { public void GetVersionInfo() {
version = 1048; version = 1049;
String pattern = "MMM dd yyyy HH:mm:ss"; String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH); DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime()); date_text = df.format(getClassBuildTime());

View File

@@ -83,7 +83,6 @@ public enum ServerCode {
PublishObject, PublishObject,
PublishObjects, PublishObjects,
UpdateTestTasks, UpdateTestTasks,
ActualizeSAPFORPackages, ActualizeDVMPackages
GetPackagesInfo
// PublishTestProject // PublishTestProject
} }

View File

@@ -25,6 +25,7 @@ import TestingSystem.DVM.Tasks.TestCompilationTask;
import TestingSystem.DVM.Tasks.TestRunTask; import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.Tasks.TestTask; import TestingSystem.DVM.Tasks.TestTask;
import TestingSystem.DVM.TasksPackage.TasksPackage; import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import TestingSystem.DVM.UserConnection; import TestingSystem.DVM.UserConnection;
import TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration; import TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommand; import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommand;
@@ -108,7 +109,8 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
public static void TimerOn() { public static void TimerOn() {
System.out.println("timer on"); System.out.println("timer on");
checkTimer = new Timer(Global.properties.CheckTestingIntervalSeconds * 1000, e -> { checkTimer = new Timer(Global.properties.CheckTestingIntervalSeconds * 1000, e -> {
Pass_2021.passes.get(PassCode_2021.SynchronizeTestsTasks).Do(); // Pass_2021.passes.get(PassCode_2021.SynchronizeTestsTasks).Do();
Pass_2021.passes.get(PassCode_2021.ActualizePackages).Do();
}); });
checkTimer.start(); checkTimer.start();
} }
@@ -354,11 +356,17 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
UpdateTestTasks(); UpdateTestTasks();
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
break; break;
case GetPackagesInfo: case ActualizeDVMPackages:
Print("Получить данные по пакетам"); Print("Получить данные по пакетам DVM");
SetCurrentAccountDB(request.arg); SetCurrentAccountDB(request.arg);
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
GetPackagesInfo(); ActualizeDVMPackages();
break;
case ActualizeSAPFORPackages:
Print("Получить данные по пакетам SAPFOR");
SetCurrentAccountDB(request.arg);
response = new ServerExchangeUnit_2021(ServerCode.OK);
ActualizeSAPFORPackages();
break; break;
default: default:
throw new RepositoryRefuseException("Неподдерживаемый код: " + code); throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
@@ -372,7 +380,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
account_db.Delete(compilationTask); account_db.Delete(compilationTask);
for (TestRunTask runTask : compilationTask.runTasks) { for (TestRunTask runTask : compilationTask.runTasks) {
runTask.ChangeDate = new Date().getTime(); runTask.ChangeDate = new Date().getTime();
account_db.Update(runTask); account_db.UpdateWithCheck(runTask);
} }
} }
account_db.Commit(); account_db.Commit();
@@ -505,7 +513,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
} }
} }
} }
//-------------------------------------------------------------------------------------->>> //-------------------------------------------------------------------------------------->>>
@Override @Override
protected Database getDefaultDatabase() { protected Database getDefaultDatabase() {
@@ -621,7 +628,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
for (SapforTask task : tasks) { for (SapforTask task : tasks) {
account_db.Delete(task); account_db.Delete(task);
} }
} else if (object instanceof SapforConfiguration){ } else if (object instanceof SapforConfiguration) {
SapforConfiguration sapforConfiguration = (SapforConfiguration) object; SapforConfiguration sapforConfiguration = (SapforConfiguration) object;
Vector<SapforConfigurationCommand> commands = new Vector<>(); Vector<SapforConfigurationCommand> commands = new Vector<>();
for (SapforConfigurationCommand command : db.sapforConfigurationCommands.Data.values()) { for (SapforConfigurationCommand command : db.sapforConfigurationCommands.Data.values()) {
@@ -634,7 +641,57 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
} }
} }
//---------------------------------------------------------------------------------------------->>> //---------------------------------------------------------------------------------------------->>>
void GetPackagesInfo() throws Exception{ void ActualizeDVMPackages() throws Exception {
Vector<Long> keys = (Vector<Long>) request.object; Vector<Pair<Long, TasksPackageState>> keys_pairs = (Vector<Pair<Long, TasksPackageState>>) request.object;
//--
Vector<Pair<TasksPackage, Vector<TestRunTask>>> res = new Vector<>();
//--
for (Pair<Long, TasksPackageState> p : keys_pairs) {
if (account_db.packages.containsKey(p.getKey())) {
TasksPackage tasksPackage = account_db.packages.get(p.getKey());
if (!p.getValue().equals(tasksPackage.state)) {
Vector<TestRunTask> tasks = new Vector<>();
//если пакет завершен, берем задачи.
if (tasksPackage.state.equals(TasksPackageState.Done)) {
for (TestRunTask task : account_db.testRunTasks.Data.values()) {
if (task.taskspackage_id == tasksPackage.id) {
System.out.println(task.id+":"+task.state);
tasks.add(task);
}
}
}
res.add(new Pair<>(tasksPackage, tasks));
}
}
}
response.object = res;
//--
}
//--
void ActualizeSAPFORPackages() throws Exception {
Vector<Pair<Long, TasksPackageState>> keys_pairs = (Vector<Pair<Long, TasksPackageState>>) request.object;
//--
Vector<Pair<SapforTasksPackage, Vector<SapforTask>>> res = new Vector<>();
//--
for (Pair<Long, TasksPackageState> p : keys_pairs) {
if (account_db.sapforTasksPackages.containsKey(p.getKey())) {
SapforTasksPackage tasksPackage = account_db.sapforTasksPackages.get(p.getKey());
if (!p.getValue().equals(tasksPackage.state)) {
Vector<SapforTask> tasks = new Vector<>();
//если пакет завершен, берем задачи.
if (tasksPackage.state.equals(TasksPackageState.Done)) {
for (SapforTask task : account_db.sapforTasks.Data.values()) {
if (task.sapfortaskspackage_id == tasksPackage.id) {
System.out.println(task.id+":"+task.state);
tasks.add(task);
}
}
}
res.add(new Pair<>(tasksPackage, tasks));
}
}
}
response.object = res;
//--
} }
} }

View File

@@ -0,0 +1,60 @@
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.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<Long, TasksPackageState>>> {
@Override
protected boolean needsAnimation() {
return false;
}
@Override
protected boolean canStart(Object... args) throws Exception {
target = new Vector<>();
for (TasksPackage tasksPackage : Global.testingServer.account_db.packages.Data.values()) {
if (tasksPackage.state.isActive())
target.add(new Pair<>(tasksPackage.id, tasksPackage.state));
}
return !target.isEmpty();
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ActualizeDVMPackages, Current.getAccount().email, target));
}
@Override
protected void performDone() throws Exception {
int i = 0;
Vector<Pair<TasksPackage, Vector<TestRunTask>>> res = (Vector<Pair<TasksPackage, Vector<TestRunTask>>>) response.object;
Global.testingServer.account_db.BeginTransaction();
for (Pair<TasksPackage, Vector<TestRunTask>> pair : res) {
TasksPackage tasksPackage = pair.getKey();
Global.testingServer.account_db.UpdateWithCheck(tasksPackage);
if (tasksPackage.state.equals(TasksPackageState.Done)) {
++i;
for (TestRunTask task : pair.getValue()) {
Global.testingServer.account_db.UpdateWithCheck(task);
}
}
}
Global.testingServer.account_db.Commit();
/*
if (i == target.size()) {
UI.testingBar.autorefreshButton.doClick();
System.out.println("All packages are not active");
}
*/
}
@Override
protected void showDone() throws Exception {
Global.testingServer.account_db.packages.RefreshUI();
Global.testingServer.account_db.testRunTasks.ShowUI();
}
}

View File

@@ -0,0 +1,14 @@
package Visual_DVM_2021.Passes.All;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Pass_2021;
public class ActualizePackages extends Pass_2021 {
@Override
protected boolean needsAnimation() {
return false;
}
@Override
protected void body() throws Exception {
passes.get(PassCode_2021.ActualizeDVMPackages).Do();
passes.get(PassCode_2021.ActualizeSAPFORPackages).Do();
}
}

View File

@@ -0,0 +1,55 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import TestingSystem.SAPFOR.SapforTask.SapforTask;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import javafx.util.Pair;
import java.util.Vector;
public class ActualizeSAPFORPackages extends TestingSystemPass<Vector<Pair<Long, TasksPackageState>>> {
@Override
protected boolean needsAnimation() {
return false;
}
@Override
protected boolean canStart(Object... args) throws Exception {
target = new Vector<>();
for (SapforTasksPackage tasksPackage : Global.testingServer.account_db.sapforTasksPackages.Data.values()) {
if (tasksPackage.state.isActive())
target.add(new Pair<>(tasksPackage.id, tasksPackage.state));
}
return !target.isEmpty();
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ActualizeSAPFORPackages, Current.getAccount().email, target));
}
@Override
protected void performDone() throws Exception {
int i = 0;
Vector<Pair<SapforTasksPackage, Vector<SapforTask>>> res = (Vector<Pair<SapforTasksPackage, Vector<SapforTask>>>) response.object;
Global.testingServer.account_db.BeginTransaction();
for (Pair<SapforTasksPackage, Vector<SapforTask>> pair : res) {
SapforTasksPackage tasksPackage = pair.getKey();
Global.testingServer.account_db.UpdateWithCheck(tasksPackage);
if (tasksPackage.state.equals(TasksPackageState.Done)) {
++i;
for (SapforTask task : pair.getValue()) {
Global.testingServer.account_db.UpdateWithCheck(task);
}
}
}
Global.testingServer.account_db.Commit();
}
@Override
protected void showDone() throws Exception {
Global.testingServer.account_db.sapforTasksPackages.RefreshUI();
Global.testingServer.account_db.sapforTasks.ShowUI();
}
}

View File

@@ -1,31 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import GlobalData.Settings.SettingName;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TSetting.TSetting;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
public class PauseTesting extends TestingSystemPass<TSetting> {
@Override
protected boolean canStart(Object... args) throws Exception {
return Current.getAccount().CheckRegistered(Log);
}
@Override
public String getIconPath() {
return "/icons/Pause.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected void ServerAction() throws Exception {
target = new TSetting(SettingName.Pause, true);
Command(new ServerExchangeUnit_2021(ServerCode.EditAccountObject, Current.getAccount().email, target));
}
@Override
protected void showFinish() throws Exception {
passes.get(PassCode_2021.SynchronizeTestsTasks).Do();
}
}

View File

@@ -1,31 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import GlobalData.Settings.SettingName;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TSetting.TSetting;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
public class PlayTesting extends TestingSystemPass<TSetting> {
@Override
protected boolean canStart(Object... args) throws Exception {
return Current.getAccount().CheckRegistered(Log);
}
@Override
public String getIconPath() {
return "/icons/Start.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected void ServerAction() throws Exception {
target = new TSetting(SettingName.Pause, false);
Command(new ServerExchangeUnit_2021(ServerCode.EditAccountObject, Current.getAccount().email, target));
}
@Override
protected void showFinish() throws Exception {
passes.get(PassCode_2021.SynchronizeTestsTasks).Do();
}
}

View File

@@ -246,8 +246,6 @@ public enum PassCode_2021 {
AddDVMParameterForTesting, AddDVMParameterForTesting,
//- //-
RefreshDVMTests, RefreshDVMTests,
PauseTesting,
PlayTesting,
//- //-
SPF_GetMaxMinBlockDistribution, SPF_GetMaxMinBlockDistribution,
//- //-
@@ -307,11 +305,21 @@ public enum PassCode_2021 {
DeleteSubscriberWorkspace, DeleteSubscriberWorkspace,
ExportTasksPackageToExcel, ExportTasksPackageToExcel,
//-> //->
ActualizeDVMPackages,
ActualizeSAPFORPackages,
ActualizePackages,
//->
TestPass; TestPass;
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case Undefined: case Undefined:
return "?"; return "?";
case ActualizePackages:
return "Обновить пакеты задач";
case ActualizeDVMPackages:
return "Обновить пакеты тестирования DVM";
case ActualizeSAPFORPackages:
return "Обновить пакеты тестирования SAPFOR";
case ExportTasksPackageToExcel: case ExportTasksPackageToExcel:
return "Экспорт пакета задач в Excel"; return "Экспорт пакета задач в Excel";
case DeleteSubscriberWorkspace: case DeleteSubscriberWorkspace:
@@ -464,10 +472,6 @@ public enum PassCode_2021 {
return "Просмотр/Редактирование конфигурацию тестирования"; return "Просмотр/Редактирование конфигурацию тестирования";
case SPF_GetMaxMinBlockDistribution: case SPF_GetMaxMinBlockDistribution:
return "Определить размерность теста по DVM директивам"; return "Определить размерность теста по DVM директивам";
case PauseTesting:
return "Поставить тестирование на паузу";
case PlayTesting:
return "Возобновить тестирование";
case RefreshDVMTests: case RefreshDVMTests:
return "Обновить DVM тесты"; return "Обновить DVM тесты";
case AddDVMParameterForTesting: case AddDVMParameterForTesting:

View File

@@ -3,6 +3,7 @@ import Common.Current;
import Common.Global; import Common.Global;
import Common.UI.TextField.StyledTextField; import Common.UI.TextField.StyledTextField;
import Common.UI.UI; import Common.UI.UI;
import TestingSystem.Common.TestingServer;
import Visual_DVM_2021.UI.Interface.FormWithSplitters; import Visual_DVM_2021.UI.Interface.FormWithSplitters;
import Visual_DVM_2021.UI.Interface.TestingWindow; import Visual_DVM_2021.UI.Interface.TestingWindow;
@@ -104,6 +105,8 @@ public class TestingForm implements FormWithSplitters, TestingWindow {
Global.testingServer.db.sapforConfigurations.ShowUI(); Global.testingServer.db.sapforConfigurations.ShowUI();
Global.testingServer.account_db.sapforTasksPackages.ShowUI(); Global.testingServer.account_db.sapforTasksPackages.ShowUI();
//--- //---
if (Global.properties.AutoCheckTesting)
TestingServer.TimerOn();
} }
//- //-
@Override @Override