добивание живых задач, отключение лишней рассылки админам, настройка удаления или не удаления пакета на машине
This commit is contained in:
2025-03-14 13:48:30 +03:00
parent 9f4eb9d88e
commit a2017f9e01
17 changed files with 95 additions and 32 deletions

14
.idea/workspace.xml generated
View File

@@ -8,9 +8,21 @@
<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 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/_VisualDVM/ComponentsServer/UserAccount/UserAccountsDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServer/UserAccount/UserAccountsDBTable.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/NormalProperties.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/NormalProperties.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/StartSelectedDVMConfigurations.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPackage/TestingPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPackage/TestingPackage.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/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/DVMPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/DVMPackage.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/Visual/MainUI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/MainUI.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/VisualiserSettingsMenu/TestingMenu.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Menus/MainMenuBar/VisualiserSettingsMenu/TestingMenu.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/files/File.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/File.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/files/Supervisor.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/Supervisor.h" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/files/Supervisor.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/Supervisor.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/files/Task.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/Task.h" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/files/starter.cpp" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/starter.cpp" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/files/version.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/version.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

@@ -30,6 +30,7 @@
"EmailOnTestingProgress": true, "EmailOnTestingProgress": true,
"CompleteCompilationOptions": false, "CompleteCompilationOptions": false,
"CompleteRunEnvironments": false, "CompleteRunEnvironments": false,
"ErasePackageWorkspace": true,
"lastMachineId": 28, "lastMachineId": 28,
"lastUserId": 36, "lastUserId": 36,
"lastCompilerId": 110, "lastCompilerId": 110,

View File

@@ -69,10 +69,6 @@ public class UserAccountsDBTable extends iDBTable<UserAccount> {
if ((account.subscribe_active != 0) && !res.contains(account.email)) if ((account.subscribe_active != 0) && !res.contains(account.email))
res.add(account.email); res.add(account.email);
} }
for (String admin_mail : Constants.admins_mails) {
if (!res.contains(admin_mail))
res.add(admin_mail);
}
return res; return res;
} }
} }

View File

@@ -3,8 +3,8 @@ import Common.Utils.Vector_;
import java.util.Vector; import java.util.Vector;
public class Constants { public class Constants {
public static final int version = 1209; public static final int version = 1210;
public static final int planner_version = 21; public static final int planner_version = 24;
public static final int testingMaxKernels = 64; public static final int testingMaxKernels = 64;
//-- //--
public static final String ApplicationFileName = "VisualSapfor.jar"; public static final String ApplicationFileName = "VisualSapfor.jar";

View File

@@ -76,6 +76,8 @@ public class NormalProperties extends VisualDVMProperties {
public boolean CompleteCompilationOptions = true; public boolean CompleteCompilationOptions = true;
@Expose @Expose
public boolean CompleteRunEnvironments = true; public boolean CompleteRunEnvironments = true;
@Expose
public boolean ErasePackageWorkspace = true;
//-- //--
@Expose @Expose
public int lastMachineId = CommonConstants.Nan; public int lastMachineId = CommonConstants.Nan;
@@ -119,6 +121,8 @@ public class NormalProperties extends VisualDVMProperties {
@Override @Override
public String getFieldDescription(String fieldName) { public String getFieldDescription(String fieldName) {
switch (fieldName) { switch (fieldName) {
case "ErasePackageWorkspace":
return "Очистка рабочего пространства пакета на целевой машине";
case "CompleteCompilationOptions": case "CompleteCompilationOptions":
return "Дополнение опций компиляции"; return "Дополнение опций компиляции";
case "CompleteRunEnvironments": case "CompleteRunEnvironments":

View File

@@ -73,7 +73,8 @@ public class StartSelectedDVMConfigurations extends PublishServerObject<TestingS
user, user,
compiler, compiler,
configurations, configurations,
Global.normalProperties.EmailOnTestingProgress ? 1 : 0 Global.normalProperties.EmailOnTestingProgress ? 1 : 0,
Global.normalProperties.ErasePackageWorkspace ? 1 : 0
); );
//---- //----
if (target.tasksCount == 0) { if (target.tasksCount == 0) {

View File

@@ -18,7 +18,6 @@ public abstract class TestingPackage<J> extends riDBObject {
//-- //--
public int kernels = 1; public int kernels = 1;
public int needsEmail = 0; public int needsEmail = 0;
//---
public String version = ""; //версия тестируемого объекта public String version = ""; //версия тестируемого объекта
public String drv = ""; //пусть к исполняемому файлы тестируемого объекта public String drv = ""; //пусть к исполняемому файлы тестируемого объекта
//-- //--

View File

@@ -107,8 +107,7 @@ public abstract class TestingPlanner<P extends TestingPackage> extends TestingCl
message.subject = "Состояние пакета тестирования " + packageDescription() + " " + message.subject = "Состояние пакета тестирования " + packageDescription() + " " +
Utils_.Brackets(testingPackage.id) + " изменилось на " + Utils_.Brackets(testingPackage.state.getDescription()); Utils_.Brackets(testingPackage.id) + " изменилось на " + Utils_.Brackets(testingPackage.state.getDescription());
message.text = testingPackage.description; message.text = testingPackage.description;
Vector<String> recipients = new Vector<>(Constants.admins_mails); Vector<String> recipients = new Vector<>();
if (!recipients.contains(testingPackage.sender_address))
recipients.add(testingPackage.sender_address); recipients.add(testingPackage.sender_address);
//-- //--
for (String address : recipients) for (String address : recipients)

View File

@@ -19,6 +19,7 @@ import _VisualDVM.TestingSystem.DVM.DVMConfiguration.DVMConfiguration;
import _VisualDVM.TestingSystem.DVM.DVMSettings.DVMSettings; import _VisualDVM.TestingSystem.DVM.DVMSettings.DVMSettings;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask; import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask; import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
import com.sun.org.glassfish.gmbal.Description;
import javafx.util.Pair; import javafx.util.Pair;
import java.io.File; import java.io.File;
@@ -32,6 +33,9 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
public String user_name = ""; public String user_name = "";
public String user_workspace; public String user_workspace;
//--- //---
@Description("DEFAULT 1")
public int eraseWorkspace = 1; //удалять рабочее пространство пакета на целевой машине.(отключать для отладки)
//---
public DVMPackage() { public DVMPackage() {
} }
public DVMPackage(UserAccount account, public DVMPackage(UserAccount account,
@@ -39,7 +43,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
User user, User user,
Compiler compiler, Compiler compiler,
Vector<DVMConfiguration> configurations, Vector<DVMConfiguration> configurations,
int neeedsEmail_in) { int neeedsEmail_in, int eraseWorkspace_in) {
id = CommonConstants.Nan; id = CommonConstants.Nan;
//- //-
sender_name = account.name; sender_name = account.name;
@@ -56,6 +60,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
version = compiler.getVersionInfo(); version = compiler.getVersionInfo();
//- //-
needsEmail = neeedsEmail_in; needsEmail = neeedsEmail_in;
eraseWorkspace = eraseWorkspace_in;
//-- //--
state = TasksPackageState.Queued; state = TasksPackageState.Queued;
//-- //--
@@ -158,6 +163,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
machine_port = tasksPackage.machine_port; machine_port = tasksPackage.machine_port;
user_name = tasksPackage.user_name; user_name = tasksPackage.user_name;
user_workspace = tasksPackage.user_workspace; user_workspace = tasksPackage.user_workspace;
eraseWorkspace = tasksPackage.eraseWorkspace;
} }
public Machine getMachine() { public Machine getMachine() {
return new Machine(machine_name, machine_address, machine_port, MachineType.Server); return new Machine(machine_name, machine_address, machine_port, MachineType.Server);

View File

@@ -269,7 +269,7 @@ public class RemoteDVMTestingPlanner extends DVMTestingPlanner {
UpdatePackageState(TasksPackageState.Analysis); UpdatePackageState(TasksPackageState.Analysis);
} }
//--- //---
if (user.connection.Exists(packageRemoteWorkspace)) if (testingPackage.eraseWorkspace!=0 && user.connection.Exists(packageRemoteWorkspace))
user.connection.RMDIR(packageRemoteWorkspace.full_name); user.connection.RMDIR(packageRemoteWorkspace.full_name);
} }
@Override @Override

View File

@@ -107,8 +107,9 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showNoBugReports(); getMainWindow().getCallbackWindow().showNoBugReports();
Global.normalProperties.setControlVisible("AutoBugReportsLoad", false); Global.normalProperties.setControlVisible("AutoBugReportsLoad", false);
Global.normalProperties.setControlVisible("AutoTestsLoad", false); Global.normalProperties.setControlVisible("AutoTestsLoad", false);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", false); Global.normalProperties.setControlVisible("CompleteCompilationOptions", false);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", false); Global.normalProperties.setControlVisible("CompleteRunEnvironments", false);
Global.normalProperties.setControlVisible("ErasePackageWorkspace", false);
Global.normalProperties.AutoCheckTesting = false; Global.normalProperties.AutoCheckTesting = false;
Global.normalProperties.Update(); Global.normalProperties.Update();
} }
@@ -120,8 +121,9 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showMyOnlyBugReports(); getMainWindow().getCallbackWindow().showMyOnlyBugReports();
Global.normalProperties.setControlVisible("AutoBugReportsLoad", true); Global.normalProperties.setControlVisible("AutoBugReportsLoad", true);
Global.normalProperties.setControlVisible("AutoTestsLoad", false); Global.normalProperties.setControlVisible("AutoTestsLoad", false);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", false); Global.normalProperties.setControlVisible("CompleteCompilationOptions", false);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", false); Global.normalProperties.setControlVisible("CompleteRunEnvironments", false);
Global.normalProperties.setControlVisible("ErasePackageWorkspace", false);
Global.normalProperties.AutoCheckTesting = false; Global.normalProperties.AutoCheckTesting = false;
Global.normalProperties.Update(); Global.normalProperties.Update();
} }
@@ -133,8 +135,9 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showAllBugreports(); getMainWindow().getCallbackWindow().showAllBugreports();
Global.normalProperties.setControlVisible("AutoBugReportsLoad", true); Global.normalProperties.setControlVisible("AutoBugReportsLoad", true);
Global.normalProperties.setControlVisible("AutoTestsLoad", true); Global.normalProperties.setControlVisible("AutoTestsLoad", true);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", true); Global.normalProperties.setControlVisible("CompleteCompilationOptions", true);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", true); Global.normalProperties.setControlVisible("CompleteRunEnvironments", true);
Global.normalProperties.setControlVisible("ErasePackageWorkspace", true);
} }
void showAdminRights() { void showAdminRights() {
Global.mainModule.SetAdminPassesAccess(); Global.mainModule.SetAdminPassesAccess();
@@ -143,10 +146,10 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showAllBugReportsAdmin(); //метод избыточный. возможно. getMainWindow().getCallbackWindow().showAllBugReportsAdmin(); //метод избыточный. возможно.
Global.normalProperties.setControlVisible("AutoBugReportsLoad", true); Global.normalProperties.setControlVisible("AutoBugReportsLoad", true);
Global.normalProperties.setControlVisible("AutoTestsLoad", true); Global.normalProperties.setControlVisible("AutoTestsLoad", true);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", true); Global.normalProperties.setControlVisible("CompleteCompilationOptions", true);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", true); Global.normalProperties.setControlVisible("CompleteRunEnvironments", true);
} Global.normalProperties.setControlVisible("ErasePackageWorkspace", true);
; };
public void ShowAccount() { public void ShowAccount() {
getMainWindow().getCallbackWindow().ShowAccountInfo(); getMainWindow().getCallbackWindow().ShowAccountInfo();
switch (Global.mainModule.getAccount().role) { switch (Global.mainModule.getAccount().role) {

View File

@@ -6,7 +6,8 @@ public class TestingMenu extends PropertiesSubmenu {
super("Тестирование", null, super("Тестирование", null,
Global.normalProperties, Global.normalProperties,
"CompleteCompilationOptions", "CompleteCompilationOptions",
"CompleteRunEnvironments" "CompleteRunEnvironments",
"ErasePackageWorkspace"
); );
} }
} }

View File

@@ -24,6 +24,21 @@ public:
ptr = NULL; ptr = NULL;
} }
} }
String read() {
int c;
String res;
do {
c = fgetc(ptr);
switch (c){
case EOF:
break;
default:
res.addChar(c);
break;
}
} while (c!=EOF);
return res;
}
Text* readLines() { Text* readLines() {
Text* lines = new Text(); Text* lines = new Text();
int c; int c;

View File

@@ -236,7 +236,11 @@ public:
// прошло больше 10 секунд, проверяем нужно ли завершиться // прошло больше 10 секунд, проверяем нужно ли завершиться
if (Utils::getAbsoluteTime() - timer_killed > 10) { if (Utils::getAbsoluteTime() - timer_killed > 10) {
if (checkKilled()) { if (checkKilled()) {
ToLog("killed"); ToLog("killing active tasks...");
ToLog("activeTasks="+ String((int)activeTasks)+";busyKernels="+String((int)busyKernels));
killActiveTasks(activeTaskSet);
ToLog("done");
ToLog("waiting for active tasks...");
while (busyKernels) { while (busyKernels) {
ToLog("activeTasks="+ String((int)activeTasks)+";busyKernels="+String((int)busyKernels)); ToLog("activeTasks="+ String((int)activeTasks)+";busyKernels="+String((int)busyKernels));
checkTasksFinish(activeTaskSet, toDel, activeTasks, done, busyKernels, buf); checkTasksFinish(activeTaskSet, toDel, activeTasks, done, busyKernels, buf);
@@ -246,7 +250,7 @@ public:
toDel.clear(); toDel.clear();
Utils::Sleep(5); Utils::Sleep(5);
} }
ToLog("exit for main while"); ToLog("exit of main while");
killed = true; killed = true;
break; break;
} }
@@ -262,7 +266,7 @@ public:
File tmp(outFile, String(buf.c_str())); File tmp(outFile, String(buf.c_str()));
} }
else { else {
//всегда финальное состояние. //всегда финальное состояние. даже если это компиляция.
saveState("RunningEnd"); saveState("RunningEnd");
ToLog("quit application"); ToLog("quit application");
std::exit(0); std::exit(0);
@@ -289,6 +293,11 @@ public:
bool checkKilled() const { bool checkKilled() const {
return Utils::Exists("kill"); return Utils::Exists("kill");
} }
void killActiveTasks(const set<T*>& activeTaskSet) {
for (auto& task : activeTaskSet){
task->kill();
}
}
void checkTasksFinish(const set<T*>& activeTaskSet, vector<T*>& toDel, size_t& activeTasks, void checkTasksFinish(const set<T*>& activeTaskSet, vector<T*>& toDel, size_t& activeTasks,
size_t& done, int& busyKernels, string& buf) { size_t& done, int& busyKernels, string& buf) {
// проверяем нет ли завершившихся задач // проверяем нет ли завершившихся задач
@@ -299,10 +308,7 @@ public:
activeTasks--; activeTasks--;
done += task->getKernels(); done += task->getKernels();
busyKernels -= task->getKernels(); busyKernels -= task->getKernels();
printf(" done task with %d kernels and id %ld\n", task->getKernels(), task->getId());
buf += to_string(task->getId()) + " " + string(task->printState().getCharArray()) + " " + to_string(task->getTotalTime()) + "\n"; buf += to_string(task->getId()) + " " + string(task->printState().getCharArray()) + " " + to_string(task->getTotalTime()) + "\n";
//copy after end of while
//task->copyResults(pathRes);
} }
} }
} }

View File

@@ -202,4 +202,19 @@ public:
Utils::Copy(workspace + "/err.txt", resultPath + "/err.txt"); Utils::Copy(workspace + "/err.txt", resultPath + "/err.txt");
return resultPath; return resultPath;
} }
void kill(){
//--
String("killing task "+id).println();
String pid_path(workspace+"/PID");
if (Utils::Exists(pid_path)){
File pid_file(&pid_path);
String pid = pid_file.read();
if (!pid.isEmpty()){
String kill_command = "kill -2 "+ pid;
kill_command.println();
system(kill_command.getCharArray());
}
}
//--
}
}; };

View File

@@ -28,6 +28,11 @@ int main(int argc, char ** argv){
int pid = fork(); int pid = fork();
if (pid == 0) if (pid == 0)
execvp( argv[1],args); execvp( argv[1],args);
else {
FILE * pid_file = fopen("PID","w");
fprintf(pid_file,"%d", pid);
fclose(pid_file);
}
return 0; return 0;
} }
catch (const char * exception){ catch (const char * exception){

View File

@@ -1 +1 @@
21 24