пауза тестирования. перенос фильтров влево. v++

This commit is contained in:
2025-02-06 17:26:14 +03:00
parent 63b923e33b
commit 6e0e51beff
12 changed files with 192 additions and 65 deletions

15
.idea/workspace.xml generated
View File

@@ -7,6 +7,17 @@
</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/_VisualDVM/Passes/All/PauseDVMPackage.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/ResumeDVMPackage.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/icons/Resume.png" 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/Visual/DataSetControlForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Visual/DataSetControlForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TasksPackageState.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TasksPackageState.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/RemoteDVMTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/RemoteDVMTestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/RemoteDVMTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/RemoteDVMTestingPlanner.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@@ -86,7 +97,7 @@
<property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.SHOW" value="true" /> <property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.SHOW" value="true" />
<property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.WIDTH" value="509" /> <property name="UI_DESIGNER_EDITOR_MODE.UIDesignerToolWindowManager.WIDTH" value="509" />
<property name="extract.method.default.visibility" value="public" /> <property name="extract.method.default.visibility" value="public" />
<property name="last_opened_file_path" value="$PROJECT_DIR$/src/icons/Transformations" /> <property name="last_opened_file_path" value="$PROJECT_DIR$/src/icons" />
<property name="project.structure.last.edited" value="Modules" /> <property name="project.structure.last.edited" value="Modules" />
<property name="project.structure.proportion" value="0.15" /> <property name="project.structure.proportion" value="0.15" />
<property name="project.structure.side.proportion" value="0.2" /> <property name="project.structure.side.proportion" value="0.2" />
@@ -99,9 +110,9 @@
<recent name="controls.Trees" /> <recent name="controls.Trees" />
</key> </key>
<key name="CopyFile.RECENT_KEYS"> <key name="CopyFile.RECENT_KEYS">
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons\Transformations" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons\Transformations" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\Common\icons" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\Common\icons" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons\versions" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\icons\versions" />
<recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\files" /> <recent name="C:\Users\misha\Documents\visual_sapfor_2023\src\files" />
</key> </key>

View File

@@ -68,7 +68,7 @@ public abstract class DataSetControlForm<D extends DBObject> extends ControlForm
//-- //--
counter_ui = (count -> bar.countLabel.setText(String.valueOf(count))); counter_ui = (count -> bar.countLabel.setText(String.valueOf(count)));
//--фильтры всегда в конец бара. //--фильтры всегда в конец бара.
bar.add(new JSeparator()); // bar.add(new JSeparator());
for (FilterFlag filter : getFilters(FilterFlag.class)) { for (FilterFlag filter : getFilters(FilterFlag.class)) {
bar.add(filter.getControl()); bar.add(filter.getControl());
} }

View File

@@ -69,7 +69,9 @@ public class Constants {
public static final String unknown_metric = ""; public static final String unknown_metric = "";
public static final String tests_db_name = "tests2027"; public static final String tests_db_name = "tests2027";
public static final String dateNaN = "NaN"; public static final String dateNaN = "NaN";
//------ //--
public static final String pause = "pause";
//--
public static final String[] crushed_cases = new String[]{ public static final String[] crushed_cases = new String[]{
"rts err", "rts err",
"rts stack trace", "rts stack trace",

View File

@@ -0,0 +1,49 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Constants;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.RemoteFile.RemoteFile;
import _VisualDVM.Passes.SSH.ConnectionPass;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import java.util.Date;
public class PauseDVMPackage extends ConnectionPass<DVMPackage> {
@Override
public String getIconPath() {
return "/icons/Pause.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log))
return false;
target = Global.testingServer.db.dvmPackages.getUI().getCurrent();
switch (target.state){
case CompilationExecution:
case RunningExecution:
break;
default:
Log.Writeln_("Возможно поставить на паузу только пакет в состоянии [компиляция] или [запуск]");
return false;
}
machine =target.getMachine();
user = target.getUser();
return true;
}
@Override
protected void ServerAction() throws Exception {
RemoteFile packageRemoteWorkspace = new RemoteFile(
target.user_workspace+ "/tests", String.valueOf(target.id), true);
if (user.connection.Exists(packageRemoteWorkspace)){
try {
RemoteFile pauseFile = new RemoteFile(packageRemoteWorkspace, Constants.pause);
user.connection.writeToFile("pause at "+new Date(), pauseFile);
}
catch (Exception ex){
ex.printStackTrace();
}
}
}
}

View File

@@ -0,0 +1,46 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Constants;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.RemoteFile.RemoteFile;
import _VisualDVM.Passes.SSH.ConnectionPass;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
public class ResumeDVMPackage extends ConnectionPass<DVMPackage> {
@Override
public String getIconPath() {
return "/icons/Resume.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log))
return false;
target = Global.testingServer.db.dvmPackages.getUI().getCurrent();
switch (target.state) {
case Paused:
break;
default:
Log.Writeln_("Возможно возобновить только пакет в состоянии [пауза]");
return false;
}
machine = target.getMachine();
user = target.getUser();
return true;
}
@Override
protected void ServerAction() throws Exception {
RemoteFile packageRemoteWorkspace = new RemoteFile(
target.user_workspace + "/tests", String.valueOf(target.id), true);
if (user.connection.Exists(packageRemoteWorkspace)) {
try {
RemoteFile pauseFile = new RemoteFile(packageRemoteWorkspace, Constants.pause);
if (user.connection.Exists(pauseFile))
user.connection.sftpChannel.rm(pauseFile.full_name);
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
}

View File

@@ -352,11 +352,18 @@ public enum PassCode implements PassCode_ {
DeleteDVMSettings, DeleteDVMSettings,
CloneDVMSettings, CloneDVMSettings,
CloneSapforSettings, CloneSapforSettings,
SetSapforConfigurationEthalon; SetSapforConfigurationEthalon,
PauseDVMPackage,
ResumeDVMPackage,
;
//-- //--
@Override @Override
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case ResumeDVMPackage:
return "Возобновить выполнение пакета тестировани DVM";
case PauseDVMPackage:
return "Поставить пакет тестирования DVM на паузу";
case SetDefaultSapforProfile: case SetDefaultSapforProfile:
return "Установить профиль SAPFOR по умолчанию"; return "Установить профиль SAPFOR по умолчанию";
case UpdateSapforProperty: case UpdateSapforProperty:

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 = 1144; version = 1145;
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

@@ -10,6 +10,7 @@ public enum TasksPackageState implements StatusEnum {
//-- //--
Inactive, //пакет просто есть. не запущен. Inactive, //пакет просто есть. не запущен.
Queued, Queued,
Paused,
//-- //--
TestsSynchronize, //оставить. TestsSynchronize, //оставить.
PackageWorkspaceCreation, PackageWorkspaceCreation,
@@ -58,6 +59,7 @@ public enum TasksPackageState implements StatusEnum {
case TestsSynchronize: case TestsSynchronize:
case Analysis: case Analysis:
case Draft: case Draft:
case Paused:
return VisualiserFonts.BlueState; return VisualiserFonts.BlueState;
case CompilationExecution: case CompilationExecution:
case RunningExecution: case RunningExecution:
@@ -109,6 +111,8 @@ public enum TasksPackageState implements StatusEnum {
return "сбой связи"; return "сбой связи";
case DoneWithErrors: case DoneWithErrors:
return "завершен с ошибками"; return "завершен с ошибками";
case Paused:
return "пауза";
default: default:
return StatusEnum.super.getDescription(); return StatusEnum.super.getDescription();
} }

View File

@@ -6,6 +6,7 @@ import _VisualDVM.Constants;
import _VisualDVM.Global; import _VisualDVM.Global;
import _VisualDVM.GlobalData.Machine.Machine; import _VisualDVM.GlobalData.Machine.Machine;
import _VisualDVM.GlobalData.Machine.MachineType; import _VisualDVM.GlobalData.Machine.MachineType;
import _VisualDVM.GlobalData.RemoteFile.RemoteFile;
import _VisualDVM.GlobalData.User.User; import _VisualDVM.GlobalData.User.User;
import _VisualDVM.Repository.EmailMessage; import _VisualDVM.Repository.EmailMessage;
import _VisualDVM.Repository.Server.ServerCode; import _VisualDVM.Repository.Server.ServerCode;
@@ -112,7 +113,7 @@ public abstract class TestingPlanner<P extends TestingPackage> extends TestingCl
if (!recipients.contains(testingPackage.sender_address)) if (!recipients.contains(testingPackage.sender_address))
recipients.add(testingPackage.sender_address); recipients.add(testingPackage.sender_address);
//-- //--
for (String address: recipients) for (String address : recipients)
ServerCommand(ServerCode.Email, address, message); ServerCommand(ServerCode.Email, address, message);
} }
} }
@@ -139,30 +140,32 @@ public abstract class TestingPlanner<P extends TestingPackage> extends TestingCl
} }
protected void MachineConnectionError() { protected void MachineConnectionError() {
} }
protected boolean checkIfPaused() throws Exception {
return false;
}
protected void PerformPackage(TestingPackage package_in) throws Exception { protected void PerformPackage(TestingPackage package_in) throws Exception {
testingPackage = (P) package_in; testingPackage = (P) package_in;
//-- //--
Print(testingPackage.id + ":" + testingPackage.state.getDescription()); Print(testingPackage.id + ":" + testingPackage.state.getDescription());
//-- //--
// if (testingPackage.connectionErrosCount >= 10) {
// Print(testingPackage.id + " had 10 connection errors. stop");
// UpdatePackageState(TasksPackageState.ConnectionError);
// MachineConnectionError();
// } else {
//--
InitSessionCredentials(); InitSessionCredentials();
if (testingPackage.state.equals(TasksPackageState.Analysis)) { if (testingPackage.state.equals(TasksPackageState.Analysis)) {
AnalyseResults(); AnalyseResults();
} else { } else {
try { try {
if (Connect()) { if (Connect()) {
//проверка на убийство и паузу
int ptk_id = (int) ServerCommand(getCheckIfNeedsKillCode(), testingPackage.id); int ptk_id = (int) ServerCommand(getCheckIfNeedsKillCode(), testingPackage.id);
if (ptk_id != CommonConstants.Nan) { if (ptk_id != CommonConstants.Nan) {
Print("package " + testingPackage.id + " NEEDS TO KILL"); Print("package " + testingPackage.id + " NEEDS TO KILL");
Kill(); Kill();
UpdatePackageState(TasksPackageState.Aborted); UpdatePackageState(TasksPackageState.Aborted);
ServerCommand(ServerCode.DeleteObjectByPK, new Pair(TestingPackageToKill.class, ptk_id)); ServerCommand(ServerCode.DeleteObjectByPK, new Pair(TestingPackageToKill.class, ptk_id));
} else { }
else if (checkIfPaused()) {
UpdatePackageState(TasksPackageState.Paused);
}
else {
//-- //--
switch (testingPackage.state) { switch (testingPackage.state) {
case TestsSynchronize: case TestsSynchronize:
@@ -182,6 +185,10 @@ public abstract class TestingPlanner<P extends TestingPackage> extends TestingCl
DownloadResults(); DownloadResults();
UpdatePackageState(TasksPackageState.Analysis); UpdatePackageState(TasksPackageState.Analysis);
break; break;
case Paused:
if (!checkIfPaused()&&CheckNextState())
UpdatePackage();
break;
default: default:
if (CheckNextState()) UpdatePackage(); if (CheckNextState()) UpdatePackage();
break; break;
@@ -196,14 +203,10 @@ public abstract class TestingPlanner<P extends TestingPackage> extends TestingCl
Print("Ошибка сеанса. Соединение будет разорвано."); Print("Ошибка сеанса. Соединение будет разорвано.");
ex.printStackTrace(); ex.printStackTrace();
Print(ex.getMessage()); Print(ex.getMessage());
//
// testingPackage.connectionErrosCount++;
// UpdatePackage();
} finally { } finally {
Disconnect(); Disconnect();
} }
} }
// }
//-- //--
testingPackage.destructor(); testingPackage.destructor();
testingPackage = null; testingPackage = null;

View File

@@ -138,7 +138,7 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
{ {
addPasses(PassCode.SynchronizeTests); addPasses(PassCode.SynchronizeTests);
addSeparator(); addSeparator();
addPasses(PassCode.AbortDVMPackage); addPasses(PassCode.PauseDVMPackage,PassCode.ResumeDVMPackage,PassCode.AbortDVMPackage);
addSeparator(); addSeparator();
addPasses(PassCode.DownloadDVMPackage, addPasses(PassCode.DownloadDVMPackage,
PassCode.ExportDVMPackageToExcel, PassCode.ExportDVMPackageToExcel,

View File

@@ -58,6 +58,11 @@ public class RemoteDVMTestingPlanner extends DVMTestingPlanner {
} }
} }
@Override @Override
protected boolean checkIfPaused() throws Exception {
RemoteFile pausedFile = new RemoteFile(packageRemoteWorkspace, Constants.pause);
return user.connection.Exists(pausedFile);
}
@Override
protected void PackageWorkspaceCreation() throws Exception { protected void PackageWorkspaceCreation() throws Exception {
if (!CheckModules()) { if (!CheckModules()) {
return; return;

BIN
src/icons/Resume.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 983 B