Исправление ключей у тестирования двм системы.

This commit is contained in:
2023-11-19 21:55:09 +03:00
parent fda62702fe
commit 928705e018
23 changed files with 191 additions and 259 deletions

25
.idea/workspace.xml generated
View File

@@ -7,17 +7,28 @@
</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/AbortTaskPackage.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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/UI/UI.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/UI.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/UI/Menus_2023/TasksPackagesMenuBar/TasksPackagesMenuBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Menus_2023/TasksPackagesMenuBar/TasksPackagesMenuBar.java" 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$/src/GlobalData/Tasks/RunTask/RunTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Tasks/RunTask/RunTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TasksDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TasksDatabase.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TasksPackageToKill/TasksPackageToKill.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TasksPackageToKill/TasksPackageToKill.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/TestsDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestsDatabase.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestsDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestsDatabase.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Configuration/Configuration.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Configuration/Configuration.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Configuration/ConfigurationInterface.java" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTaskInterface.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Configuration/UI/ConfigurationDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Configuration/ConfigurationDBTable.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTasksDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestRunTasksDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/EditConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/EditConfiguration.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/Tasks/TestTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/EditConfigurationOnServer.java" beforeDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TasksPackage/TasksPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TasksPackage/TasksPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PublishConfiguration.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PublishConfiguration.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TasksPackage/TasksPackageDBTable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TasksPackage/TasksPackageDBTable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/SAPFOR/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/AbortSapforTaskPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/AbortSapforTaskPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/AbortSelectedPackages.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTests.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTests.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/SwitchTestingEmail.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/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />

View File

@@ -25,8 +25,8 @@
"InstructionPath": "", "InstructionPath": "",
"PerformanceAnalyzerPath": "", "PerformanceAnalyzerPath": "",
"ComponentsBackUpsCount": 10, "ComponentsBackUpsCount": 10,
"TestingKernels": 14, "TestingKernels": 16,
"AutoCheckTesting": false, "AutoCheckTesting": false,
"CheckTestingIntervalSeconds": 15, "CheckTestingIntervalSeconds": 10,
"EmailOnTestingProgress": true "EmailOnTestingProgress": true
} }

View File

@@ -3,6 +3,6 @@ import Common.UI.Menus_2023.DataMenuBar;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
public class TasksPackagesMenuBar extends DataMenuBar { public class TasksPackagesMenuBar extends DataMenuBar {
public TasksPackagesMenuBar() { public TasksPackagesMenuBar() {
super("пакеты задач", PassCode_2021.AbortSelectedPackages); super("пакеты задач", PassCode_2021.AbortTaskPackage);
} }
} }

View File

@@ -3,6 +3,7 @@ import Common.Constants;
import Common.Current; import Common.Current;
import Common.Global; import Common.Global;
import Common.UI.UI; import Common.UI.UI;
import GlobalData.Tasks.TaskState;
import ProjectData.Files.DBProjectFile; import ProjectData.Files.DBProjectFile;
import ProjectData.Project.db_project_info; import ProjectData.Project.db_project_info;
import Visual_DVM_2021.Passes.PassException; import Visual_DVM_2021.Passes.PassException;
@@ -10,6 +11,7 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder; import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject; import com.google.gson.JsonObject;
import com.google.gson.JsonParser; import com.google.gson.JsonParser;
import javafx.util.Pair;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
import javax.swing.*; import javax.swing.*;
@@ -28,6 +30,7 @@ import java.nio.file.*;
import java.security.MessageDigest; import java.security.MessageDigest;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.List;
import java.util.*; import java.util.*;
import java.util.concurrent.Semaphore; import java.util.concurrent.Semaphore;
import java.util.regex.Matcher; import java.util.regex.Matcher;
@@ -1047,5 +1050,66 @@ public class Utils {
} }
return 1; return 1;
} }
//--
public static boolean isCrushedLine(String line) {
return line.contains("RTS err")
|| line.contains("RTS stack trace")
|| line.contains("RTS fatal err")
|| line.contains("SIGEGV")
|| line.contains("There are not enough slots available in the system to satisfy the")
|| line.contains("forrtl: severe")
|| line.contains("invalid pointer")
|| line.contains("forrtl: error");
}
public static boolean isCrushed(List<String> output_lines, List<String> errors_lines) {
return output_lines.stream().anyMatch(Utils::isCrushedLine) || errors_lines.stream().anyMatch(Utils::isCrushedLine);
}
public static Pair<TaskState, Integer> analyzeCorrectness(List<String> lines) {
int complete = 0;
int errors = 0;
int total = 0;
for (String s : lines) {
String line = s.toUpperCase();
if (line.contains("COMPLETE")) {
complete++;
total++;
} else if (line.contains("ERROR")) {
errors++;
total++;
}
}
return new Pair<>(
(errors > 0) ? TaskState.DoneWithErrors : ((complete > 0) ? TaskState.Done : TaskState.WrongTestFormat),
(int) ((((double) complete) / total) * 100)
);
}
public static Pair<TaskState, Integer> analyzePerformance(List<String> lines) {
StringTemplate stringTemplate = new StringTemplate("Verification =", "");
for (String line : lines) {
String param = stringTemplate.check_and_get_param(line);
if (param != null) {
switch (param) {
case "SUCCESSFUL":
return new Pair<>(TaskState.Done, 100);
case "UNSUCCESSFUL":
return new Pair<>(TaskState.DoneWithErrors, 0);
default:
break;
}
}
}
return new Pair<>(TaskState.WrongTestFormat, 0);
}
public static double parseCleanTime(String output) {
double res = 0.0;
StringTemplate template = new StringTemplate("Time in seconds =", "");
String p = template.check_and_get_param(output);
try {
if (p != null) res = Double.parseDouble(p);
} catch (Exception ex) {
Global.Log.PrintException(ex);
}
return res;
}
} }

View File

@@ -10,7 +10,6 @@ import GlobalData.Tasks.CompilationTask.CompilationTask;
import GlobalData.Tasks.Task; import GlobalData.Tasks.Task;
import GlobalData.Tasks.TaskState; import GlobalData.Tasks.TaskState;
import ProjectData.Project.db_project_info; import ProjectData.Project.db_project_info;
import TestingSystem.DVM.Tasks.TestRunTaskInterface;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@@ -96,7 +95,7 @@ public class RunTask extends Task {
@Override @Override
public void AnalyzeOutFile(db_project_info project) throws Exception { public void AnalyzeOutFile(db_project_info project) throws Exception {
List<String> lines = FileUtils.readLines(getOutputFile()); List<String> lines = FileUtils.readLines(getOutputFile());
if (lines.stream().anyMatch(TestRunTaskInterface::isCrushedLine) if (lines.stream().anyMatch(Utils::isCrushedLine)
) { ) {
state = TaskState.Crushed; state = TaskState.Crushed;
return; return;
@@ -140,7 +139,7 @@ public class RunTask extends Task {
@Override @Override
public void AnalyzeErrorsFile(db_project_info project) throws Exception { public void AnalyzeErrorsFile(db_project_info project) throws Exception {
List<String> lines = FileUtils.readLines(getErrorsFile()); List<String> lines = FileUtils.readLines(getErrorsFile());
if (lines.stream().anyMatch(TestRunTaskInterface::isCrushedLine)) if (lines.stream().anyMatch(Utils::isCrushedLine))
state = TaskState.Crushed; state = TaskState.Crushed;
} }
@Override @Override

View File

@@ -2,12 +2,8 @@ package TestingSystem.Common;
import Common.Constants; import Common.Constants;
import Common.Database.SQLITE.SQLiteDatabase; import Common.Database.SQLITE.SQLiteDatabase;
import Common.Global; import Common.Global;
import GlobalData.Settings.SettingName;
import TestingSystem.SAPFOR.SapforTask.SapforTasksDBTable;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackagesDBTable;
import TestingSystem.Common.TSetting.TSetting;
import TestingSystem.Common.TSetting.TSettingsDBTable; import TestingSystem.Common.TSetting.TSettingsDBTable;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKillDBTable;
import TestingSystem.DVM.Tasks.TestCompilationTask; import TestingSystem.DVM.Tasks.TestCompilationTask;
import TestingSystem.DVM.Tasks.TestCompilationTasksDBTable; import TestingSystem.DVM.Tasks.TestCompilationTasksDBTable;
import TestingSystem.DVM.Tasks.TestRunTask; import TestingSystem.DVM.Tasks.TestRunTask;
@@ -15,7 +11,9 @@ import TestingSystem.DVM.Tasks.TestRunTasksDBTable;
import TestingSystem.DVM.TasksPackage.TasksPackage; import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageDBTable; import TestingSystem.DVM.TasksPackage.TasksPackageDBTable;
import TestingSystem.DVM.TasksPackage.TasksPackageState; import TestingSystem.DVM.TasksPackage.TasksPackageState;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKillDBTable; import TestingSystem.SAPFOR.SapforTask.SapforTasksDBTable;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackagesDBTable;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
import javafx.util.Pair; import javafx.util.Pair;
@@ -56,15 +54,6 @@ public class TasksDatabase extends SQLiteDatabase {
addTable(sapforTasks = new SapforTasksDBTable()); addTable(sapforTasks = new SapforTasksDBTable());
} }
@Override @Override
public void Init() throws Exception {
if (!settings.containsKey(SettingName.Email))
Insert(new TSetting(SettingName.Email, 0));
if (!settings.containsKey(SettingName.Pause))
Insert(new TSetting(SettingName.Pause, 0));
if (!settings.containsKey(SettingName.Queue))
Insert(new TSetting(SettingName.Queue, 0));
}
@Override
public PassCode_2021 getSynchronizePassCode() { public PassCode_2021 getSynchronizePassCode() {
return PassCode_2021.SynchronizeTestsTasks; return PassCode_2021.SynchronizeTestsTasks;
} }
@@ -81,9 +70,9 @@ public class TasksDatabase extends SQLiteDatabase {
} }
super.disconnect(); super.disconnect();
} }
public LinkedHashMap<Long, TestRunTask> getPackageRunTasks(String package_id) throws Exception { public LinkedHashMap<Long, TestRunTask> getPackageRunTasks(int package_id) throws Exception {
LinkedHashMap<Long, TestRunTask> res = new LinkedHashMap<>(); LinkedHashMap<Long, TestRunTask> res = new LinkedHashMap<>();
selectPackageRunTasks.setString(1, package_id); selectPackageRunTasks.setInt(1, package_id);
resSet = selectPackageRunTasks.executeQuery(); resSet = selectPackageRunTasks.executeQuery();
while (resSet.next()) { while (resSet.next()) {
Pair<Long, TestRunTask> record = readRecord(testRunTasks); Pair<Long, TestRunTask> record = readRecord(testRunTasks);
@@ -126,7 +115,7 @@ public class TasksDatabase extends SQLiteDatabase {
if (tasksPackage == null) return null; if (tasksPackage == null) return null;
LinkedHashMap<Long, TestCompilationTask> res = new LinkedHashMap<>(); LinkedHashMap<Long, TestCompilationTask> res = new LinkedHashMap<>();
for (TestCompilationTask srcCompilationTask : testCompilationTasks.Data.values()) { for (TestCompilationTask srcCompilationTask : testCompilationTasks.Data.values()) {
if (srcCompilationTask.taskspackage_id.equals(tasksPackage.id)) { if (srcCompilationTask.taskspackage_id==tasksPackage.id) {
TestCompilationTask dstCompilationTask = new TestCompilationTask(srcCompilationTask); TestCompilationTask dstCompilationTask = new TestCompilationTask(srcCompilationTask);
dstCompilationTask.runTasks = new Vector<>(); dstCompilationTask.runTasks = new Vector<>();
for (TestRunTask testRunTask : testRunTasks.Data.values()) for (TestRunTask testRunTask : testRunTasks.Data.values())

View File

@@ -1,5 +1,8 @@
package TestingSystem.Common.TasksPackageToKill; package TestingSystem.Common.TasksPackageToKill;
import Common.Constants;
import Common.Database.iDBObject; import Common.Database.iDBObject;
import com.sun.org.glassfish.gmbal.Description;
public class TasksPackageToKill extends iDBObject { public class TasksPackageToKill extends iDBObject {
public String packageName = ""; @Description("DEFAULT -1")
public int packageId = Constants.Nan;
} }

View File

@@ -264,7 +264,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
account_db.BeginTransaction(); account_db.BeginTransaction();
for (Object object : tasks) { for (Object object : tasks) {
SapforTask task = (SapforTask) object; SapforTask task = (SapforTask) object;
task.id = db.IncMaxTaskId(); task.id = db.IncSapforMaxTaskId();
if (account_db.InsertWithCheck_(task) != null) if (account_db.InsertWithCheck_(task) != null)
PublishAction(task); PublishAction(task);
} }
@@ -303,11 +303,11 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
break; break;
case CheckPackageToKill: case CheckPackageToKill:
SetCurrentAccountDB(request.arg); SetCurrentAccountDB(request.arg);
String packageName = (String) request.object; int packageId = (int) request.object;
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
boolean res_ = false; boolean res_ = false;
for (TasksPackageToKill tasksPackageToKill : account_db.packagesToKill.Data.values()) { for (TasksPackageToKill tasksPackageToKill : account_db.packagesToKill.Data.values()) {
if (tasksPackageToKill.packageName.equals(packageName)) { if (tasksPackageToKill.packageId==packageId) {
res_ = true; res_ = true;
break; break;
} }

View File

@@ -40,7 +40,7 @@ public class TestsDatabase extends SQLiteDatabase {
@Override @Override
public void Init() throws Exception { public void Init() throws Exception {
if (!settings.containsKey(SettingName.TaskMaxId)) if (!settings.containsKey(SettingName.TaskMaxId))
Insert(new TSetting(SettingName.TaskMaxId, 63128)); Insert(new TSetting(SettingName.TaskMaxId, 0));
if (!settings.containsKey(SettingName.SapforTaskMaxId)) if (!settings.containsKey(SettingName.SapforTaskMaxId))
Insert(new TSetting(SettingName.SapforTaskMaxId, 0)); Insert(new TSetting(SettingName.SapforTaskMaxId, 0));
} }

View File

@@ -1,21 +1,18 @@
package TestingSystem.DVM.Tasks; package TestingSystem.DVM.Tasks;
import Common.Constants; import Common.Constants;
import Common.Current;
import Common.Database.DBObject; import Common.Database.DBObject;
import Common.Global;
import GlobalData.Tasks.TaskState; import GlobalData.Tasks.TaskState;
import ProjectData.LanguageName; import ProjectData.LanguageName;
import TestingSystem.DVM.Configuration.Configuration;
import TestingSystem.Common.Group.Group; import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test; import TestingSystem.Common.Test.Test;
import TestingSystem.DVM.Configuration.Configuration;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
import java.util.Vector; import java.util.Vector;
public class TestRunTask extends TestTask { public class TestRunTask extends TestTask {
//не факт что тут нужно переводить на полный интерфейс. достаточно убрать фильтрацию //не факт что тут нужно переводить на полный интерфейс. достаточно убрать фильтрацию
@Override
public boolean isVisible() {
return TestRunTaskInterface.isVisible(this);
}
//--
public long testcompilationtask_id = Constants.Nan; public long testcompilationtask_id = Constants.Nan;
public String matrix = ""; public String matrix = "";
@Description("DEFAULT ''") @Description("DEFAULT ''")
@@ -103,4 +100,18 @@ public class TestRunTask extends TestTask {
res.add(String.valueOf(kernels_in)); //8 res.add(String.valueOf(kernels_in)); //8
return res; return res;
} }
//---
public boolean isVisible() {
return
Current.HasTasksPackage() &&
(taskspackage_id==Current.getTasksPackage().id) &&
Global.testingServer.account_db.testRunTasks.applyFilters(this);
}
public String getEnvironments() {
return environments.replace("\n", ";");
}
public String getUsrPar() {
return usr_par.replace("\n", ";");
}
//--
} }

View File

@@ -1,83 +0,0 @@
package TestingSystem.DVM.Tasks;
import Common.Current;
import Common.Global;
import Common.Utils.StringTemplate;
import GlobalData.Tasks.TaskState;
import javafx.util.Pair;
import java.util.List;
public class TestRunTaskInterface {
public static boolean isVisible(TestRunTask object) {
return
Current.HasTasksPackage() &&
object.taskspackage_id.equals(Current.getTasksPackage().id) &&
Global.testingServer.account_db.testRunTasks.applyFilters(object);
}
public static String getEnvironments(TestRunTask object) {
return object.environments.replace("\n", ";");
}
public static String getUsrPar(TestRunTask object) {
return object.usr_par.replace("\n", ";");
}
//--
public static boolean isCrushedLine(String line) {
return line.contains("RTS err")
|| line.contains("RTS stack trace")
|| line.contains("RTS fatal err")
|| line.contains("SIGEGV")
|| line.contains("There are not enough slots available in the system to satisfy the")
|| line.contains("forrtl: severe")
|| line.contains("invalid pointer")
|| line.contains("forrtl: error");
}
public static boolean isCrushed(List<String> output_lines, List<String> errors_lines) {
return output_lines.stream().anyMatch(TestRunTaskInterface::isCrushedLine) || errors_lines.stream().anyMatch(TestRunTaskInterface::isCrushedLine);
}
public static Pair<TaskState, Integer> analyzeCorrectness(List<String> lines) {
int complete = 0;
int errors = 0;
int total = 0;
for (String s : lines) {
String line = s.toUpperCase();
if (line.contains("COMPLETE")) {
complete++;
total++;
} else if (line.contains("ERROR")) {
errors++;
total++;
}
}
return new Pair<>(
(errors > 0) ? TaskState.DoneWithErrors : ((complete > 0) ? TaskState.Done : TaskState.WrongTestFormat),
(int) ((((double) complete) / total) * 100)
);
}
public static Pair<TaskState, Integer> analyzePerformance(List<String> lines) {
StringTemplate stringTemplate = new StringTemplate("Verification =", "");
for (String line : lines) {
String param = stringTemplate.check_and_get_param(line);
if (param != null) {
switch (param) {
case "SUCCESSFUL":
return new Pair<>(TaskState.Done, 100);
case "UNSUCCESSFUL":
return new Pair<>(TaskState.DoneWithErrors, 0);
default:
break;
}
}
}
return new Pair<>(TaskState.WrongTestFormat, 0);
}
public static double parseCleanTime(String output) {
double res = 0.0;
StringTemplate template = new StringTemplate("Time in seconds =", "");
String p = template.check_and_get_param(output);
try {
if (p != null) res = Double.parseDouble(p);
} catch (Exception ex) {
Global.Log.PrintException(ex);
}
return res;
}
}

View File

@@ -152,9 +152,9 @@ public class TestRunTasksDBTable extends DBTable<Long, TestRunTask> {
case 9: case 9:
return object.matrix; return object.matrix;
case 10: case 10:
return TestRunTaskInterface.getEnvironments(object); return object.getEnvironments();
case 11: case 11:
return TestRunTaskInterface.getUsrPar(object); return object.getUsrPar();
case 12: case 12:
return object.Time; return object.Time;
case 13: case 13:

View File

@@ -14,8 +14,8 @@ import java.util.Vector;
public class TestTask extends DBObject { public class TestTask extends DBObject {
@Description("PRIMARY KEY, UNIQUE") @Description("PRIMARY KEY, UNIQUE")
public long id = Constants.Nan; public long id = Constants.Nan;
@Description("DEFAULT ''") @Description("DEFAULT '-1'")
public String taskspackage_id = ""; public int taskspackage_id = Constants.Nan;
@Description("DEFAULT -1") @Description("DEFAULT -1")
public int group_id = Constants.Nan; public int group_id = Constants.Nan;
@Description("DEFAULT ''") @Description("DEFAULT ''")

View File

@@ -1,13 +1,13 @@
package TestingSystem.DVM.TasksPackage; package TestingSystem.DVM.TasksPackage;
import Common.Database.DBObject; import Common.Database.DBObject;
import Common.Database.nDBObject; import Common.Database.riDBObject;
import GlobalData.Machine.MachineType; import GlobalData.Machine.MachineType;
import TestingSystem.DVM.Tasks.TestCompilationTask; import TestingSystem.DVM.Tasks.TestCompilationTask;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Vector; import java.util.Vector;
public class TasksPackage extends nDBObject { public class TasksPackage extends riDBObject {
public String pid=""; //сишная часть. public String pid=""; //сишная часть.
public String summary = ""; public String summary = "";
//--- //---

View File

@@ -10,10 +10,10 @@ import java.util.LinkedHashMap;
import static Common.UI.Tables.TableRenderers.RendererDate; import static Common.UI.Tables.TableRenderers.RendererDate;
import static Common.UI.Tables.TableRenderers.RendererStatusEnum; import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
public class TasksPackageDBTable extends DBTable<String, TasksPackage> { public class TasksPackageDBTable extends iDBTable<TasksPackage> {
public TasksPackageDBTable() { public TasksPackageDBTable() {
super(String.class, TasksPackage.class); super(TasksPackage.class);
} }
@Override @Override
public Current CurrentName() { public Current CurrentName() {
@@ -36,7 +36,7 @@ public class TasksPackageDBTable extends DBTable<String, TasksPackage> {
} }
@Override @Override
protected void AdditionalInitColumns() { protected void AdditionalInitColumns() {
columns.get(0).setVisible(false); // columns.get(0).setVisible(false);
columns.get(7).setRenderer(RendererDate); columns.get(7).setRenderer(RendererDate);
columns.get(8).setRenderer(RendererDate); columns.get(8).setRenderer(RendererDate);
columns.get(9).setRenderer(RendererStatusEnum); columns.get(9).setRenderer(RendererStatusEnum);

View File

@@ -7,7 +7,6 @@ import GlobalData.Tasks.TaskState;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import TestingSystem.DVM.Tasks.TestCompilationTask; import TestingSystem.DVM.Tasks.TestCompilationTask;
import TestingSystem.DVM.Tasks.TestRunTask; import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.Tasks.TestRunTaskInterface;
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.TasksPackage.TasksPackageState;
@@ -39,8 +38,8 @@ public class TestsSupervisor_2022 {
tasksPackage = tasksPackage_in; tasksPackage = tasksPackage_in;
compilationTasks = tasks_in; compilationTasks = tasks_in;
planner.Print(getClass().getSimpleName() + ": найдено задач на компиляцию: " + compilationTasks.size()); planner.Print(getClass().getSimpleName() + ": найдено задач на компиляцию: " + compilationTasks.size());
packageRemoteWorkspace = new RemoteFile(tasksPackage.user_workspace + "/tests", tasksPackage.id, true); packageRemoteWorkspace = new RemoteFile(tasksPackage.user_workspace + "/tests", String.valueOf(tasksPackage.id), true);
packageLocalWorkspace = Paths.get(Global.PackagesDirectory.getAbsolutePath(), tasksPackage.id).toFile(); packageLocalWorkspace = new File(Global.PackagesDirectory, String.valueOf(tasksPackage.id));
} }
public boolean packageNeedsKill() throws Exception{ public boolean packageNeedsKill() throws Exception{
return (boolean) planner.ServerCommand(ServerCode.CheckPackageToKill,tasksPackage.id); return (boolean) planner.ServerCommand(ServerCode.CheckPackageToKill,tasksPackage.id);
@@ -245,23 +244,23 @@ public class TestsSupervisor_2022 {
List<String> output_lines = Arrays.asList(testRunTask.output.split("\n")); List<String> output_lines = Arrays.asList(testRunTask.output.split("\n"));
List<String> errors_lines = Arrays.asList(testRunTask.errors.split("\n")); List<String> errors_lines = Arrays.asList(testRunTask.errors.split("\n"));
//--- //---
if (TestRunTaskInterface.isCrushed(output_lines, errors_lines)) { if (Utils.isCrushed(output_lines, errors_lines)) {
testRunTask.state = TaskState.Crushed; testRunTask.state = TaskState.Crushed;
} else { } else {
Pair<TaskState, Integer> results = new Pair<>(TaskState.Done, 100); Pair<TaskState, Integer> results = new Pair<>(TaskState.Done, 100);
switch (testRunTask.test_type) { switch (testRunTask.test_type) {
case Correctness: case Correctness:
results = TestRunTaskInterface.analyzeCorrectness(output_lines); results = Utils.analyzeCorrectness(output_lines);
break; break;
case Performance: case Performance:
results = TestRunTaskInterface.analyzePerformance(output_lines); results = Utils.analyzePerformance(output_lines);
break; break;
default: default:
break; break;
} }
testRunTask.state = results.getKey(); testRunTask.state = results.getKey();
testRunTask.progress = results.getValue(); testRunTask.progress = results.getValue();
testRunTask.CleanTime = TestRunTaskInterface.parseCleanTime(testRunTask.output); testRunTask.CleanTime = Utils.parseCleanTime(testRunTask.output);
} }
File local_sts_text = Utils.getTempFileName("sts_text"); File local_sts_text = Utils.getTempFileName("sts_text");
Vector<ChannelSftp.LsEntry> files = connection.sftpChannel.ls(testRunTask.remote_workspace); Vector<ChannelSftp.LsEntry> files = connection.sftpChannel.ls(testRunTask.remote_workspace);

View File

@@ -133,7 +133,7 @@ public class SapforTasksPackageSupervisor {
} }
//-- //--
public boolean packageNeedsKill() throws Exception { public boolean packageNeedsKill() throws Exception {
return (boolean) planner.ServerCommand(ServerCode.CheckPackageToKill, String.valueOf(sapforTasksPackage.id)); return (boolean) planner.ServerCommand(ServerCode.CheckPackageToKill, sapforTasksPackage.id);
} }
public void killPackage() throws Exception { public void killPackage() throws Exception {
//---- //----

View File

@@ -2,13 +2,11 @@ package Visual_DVM_2021.Passes.All;
import Common.Current; import Common.Current;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021; import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill; import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import Visual_DVM_2021.Passes.Server.TestingSystemPass; import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import java.util.Vector;
public class AbortSapforTaskPackage extends TestingSystemPass<SapforTasksPackage> { public class AbortSapforTaskPackage extends TestingSystemPass<SapforTasksPackage> {
Vector<TasksPackageToKill> packagesToKill; TasksPackageToKill tasksPackageToKill = null;
@Override @Override
public String getIconPath() { public String getIconPath() {
return "/icons/Ban.PNG"; return "/icons/Ban.PNG";
@@ -19,8 +17,8 @@ public class AbortSapforTaskPackage extends TestingSystemPass<SapforTasksPackage
} }
@Override @Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
tasksPackageToKill = null;
if (Current.Check(Log, Current.SapforTasksPackage)) { if (Current.Check(Log, Current.SapforTasksPackage)) {
packagesToKill = new Vector<>();
target = Current.getSapforTasksPackage(); target = Current.getSapforTasksPackage();
switch (target.state) { switch (target.state) {
case Done: case Done:
@@ -28,9 +26,8 @@ public class AbortSapforTaskPackage extends TestingSystemPass<SapforTasksPackage
Log.Writeln_("Пакет уже завершен."); Log.Writeln_("Пакет уже завершен.");
break; break;
default: default:
TasksPackageToKill tasksPackageToKill = new TasksPackageToKill(); tasksPackageToKill = new TasksPackageToKill();
tasksPackageToKill.packageName = String.valueOf(target.id); tasksPackageToKill.packageId = target.id;
packagesToKill.add(tasksPackageToKill);
return true; return true;
} }
} }
@@ -39,6 +36,6 @@ public class AbortSapforTaskPackage extends TestingSystemPass<SapforTasksPackage
} }
@Override @Override
protected void ServerAction() throws Exception { protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.PublishAccountObjects, Current.getAccount().email, packagesToKill)); Command(new ServerExchangeUnit_2021(ServerCode.PublishAccountAIObject, Current.getAccount().email, tasksPackageToKill));
} }
} }

View File

@@ -1,45 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import java.util.Vector;
public class AbortSelectedPackages extends TestingSystemPass<Vector<TasksPackage>> {
Vector<TasksPackageToKill> packagesToKill;
@Override
public String getIconPath() {
return "/icons/Ban.PNG";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
target = server.account_db.packages.getCheckedItems();
packagesToKill = new Vector<>();
for (TasksPackage tasksPackage : target) {
switch (tasksPackage.state) {
case Done:
case Aborted:
break;
default:
TasksPackageToKill tasksPackageToKill = new TasksPackageToKill();
tasksPackageToKill.packageName = tasksPackage.id;
packagesToKill.add(tasksPackageToKill);
break;
}
}
if (packagesToKill.isEmpty()) {
Log.Writeln_("Не отмечено ни одного активного пакета для удаления");
}
return true;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.PublishAccountObjects, Current.getAccount().email, packagesToKill));
}
}

View File

@@ -0,0 +1,42 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
public class AbortTaskPackage extends TestingSystemPass<TasksPackage> {
TasksPackageToKill tasksPackageToKill = null;
@Override
public String getIconPath() {
return "/icons/Ban.PNG";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
tasksPackageToKill = null;
if (Current.Check(Log, Current.TasksPackage)) {
target = Current.getTasksPackage();
switch (target.state) {
case Done:
case Aborted:
Log.Writeln_("Пакет уже завершен.");
break;
default:
tasksPackageToKill = new TasksPackageToKill();
tasksPackageToKill.packageId = target.id;
return true;
}
}
;
return false;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.PublishAccountAIObject, Current.getAccount().email, tasksPackageToKill));
}
}

View File

@@ -5,20 +5,21 @@ import Common.UI.UI;
import GlobalData.Compiler.CompilerType; import GlobalData.Compiler.CompilerType;
import GlobalData.Machine.MachineType; import GlobalData.Machine.MachineType;
import GlobalData.User.UserState; import GlobalData.User.UserState;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.Group.Group; import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test; import TestingSystem.Common.Test.Test;
import TestingSystem.DVM.Tasks.TestCompilationTask; import TestingSystem.DVM.Tasks.TestCompilationTask;
import TestingSystem.DVM.Tasks.TestRunTask; import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.TasksPackage.TasksPackage; import TestingSystem.DVM.TasksPackage.TasksPackage;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass; import Visual_DVM_2021.Passes.Server.PublishServerAccountObject;
import java.util.Date; import java.util.Date;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.Vector; import java.util.Vector;
public class StartTests extends TestingSystemPass<TasksPackage> { public class StartTests extends PublishServerAccountObject<TasksPackage> {
public StartTests() {
super(TasksPackage.class);
}
@Override @Override
protected int getTimeout() { protected int getTimeout() {
return 0; return 0;
@@ -28,10 +29,6 @@ public class StartTests extends TestingSystemPass<TasksPackage> {
return "/icons/Start.png"; return "/icons/Start.png";
} }
@Override @Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
if (!Current.getAccount().CheckRegistered(Log)) { if (!Current.getAccount().CheckRegistered(Log)) {
return false; return false;
@@ -201,31 +198,4 @@ public class StartTests extends TestingSystemPass<TasksPackage> {
target.needsEmail = Global.properties.EmailOnTestingProgress ? 1 : 0; target.needsEmail = Global.properties.EmailOnTestingProgress ? 1 : 0;
return !tasks.isEmpty(); return !tasks.isEmpty();
} }
@Override
protected void performPreparation() throws Exception {
}
@Override
protected void ServerAction() throws Exception {
target.genName();
Vector<TasksPackage> packages = new Vector<>();
packages.add(target);
Command(new ServerExchangeUnit_2021(ServerCode.PublishAccountObjects, Current.getAccount().email, packages));
}
@Override
protected void performDone() throws Exception {
passes.get(PassCode_2021.SynchronizeTestsTasks).Do();
/*
if (!TestingServer.checkTasks)
TestingServer.TimerOn();
*/
}
@Override
protected void showDone() throws Exception {
server.account_db.packages.ui_.Select(target.id);
// UI.getMainWindow().getTestingWindow().ShowAutoActualizeTestsState();
}
@Override
protected void FocusResult() {
UI.getMainWindow().getTestingWindow().FocusTestingTasks();
}
} }

View File

@@ -1,22 +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.Server.TestingSystemPass;
public class SwitchTestingEmail extends TestingSystemPass<TSetting> {
@Override
protected boolean canStart(Object... args) throws Exception {
if (Current.getAccount().CheckRegistered(Log)) {
target = server.account_db.settings.get(SettingName.Email);
target.value = ((boolean) (args[0]))?1:0;
return true;
}
return false;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.EditAccountObject, Current.getAccount().email, target));
}
}

View File

@@ -256,12 +256,10 @@ public enum PassCode_2021 {
EditConfiguration, EditConfiguration,
//- //-
StartTests, StartTests,
SwitchTestingEmail,
//- //-
DownloadTaskTest, DownloadTaskTest,
//- //-
GetTestsQueueSize, GetTestsQueueSize,
AbortSelectedPackages,
ApplyCurrentFunction, ApplyCurrentFunction,
//-> //->
// GetRemoteUserHome, // GetRemoteUserHome,
@@ -300,12 +298,15 @@ public enum PassCode_2021 {
PublishTestProject, PublishTestProject,
DeleteTest, DeleteTest,
DeleteConfiguration, DeleteConfiguration,
AbortTaskPackage,
//-> //->
TestPass; TestPass;
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case Undefined: case Undefined:
return "?"; return "?";
case AbortTaskPackage:
return "Прерывать пакет тестирования DVM";
case DeleteConfiguration: case DeleteConfiguration:
return "Удалить конфигурацию"; return "Удалить конфигурацию";
case DeleteTest: case DeleteTest:
@@ -430,14 +431,10 @@ public enum PassCode_2021 {
return "Публикация удалённой рабочей папки"; return "Публикация удалённой рабочей папки";
case ApplyCurrentFunction: case ApplyCurrentFunction:
return "Назначить текущую функцию по имени"; return "Назначить текущую функцию по имени";
case AbortSelectedPackages:
return "Прерывать отмеченные пакеты задач";
case GetTestsQueueSize: case GetTestsQueueSize:
return "Очередь перед текущим пакетом"; return "Очередь перед текущим пакетом";
case DownloadTaskTest: case DownloadTaskTest:
return "Загрузить тест текущей задачи"; return "Загрузить тест текущей задачи";
case SwitchTestingEmail:
return "Настроить отправку оповещений тестирования";
case StartTests: case StartTests:
return "Запуск тестов"; return "Запуск тестов";
case PublishConfiguration: case PublishConfiguration: