Исправление ключей у тестирования двм системы.
This commit is contained in:
@@ -1,21 +1,18 @@
|
||||
package TestingSystem.DVM.Tasks;
|
||||
import Common.Constants;
|
||||
import Common.Current;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Global;
|
||||
import GlobalData.Tasks.TaskState;
|
||||
import ProjectData.LanguageName;
|
||||
import TestingSystem.DVM.Configuration.Configuration;
|
||||
import TestingSystem.Common.Group.Group;
|
||||
import TestingSystem.Common.Test.Test;
|
||||
import TestingSystem.DVM.Configuration.Configuration;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
|
||||
import java.util.Vector;
|
||||
public class TestRunTask extends TestTask {
|
||||
//не факт что тут нужно переводить на полный интерфейс. достаточно убрать фильтрацию
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return TestRunTaskInterface.isVisible(this);
|
||||
}
|
||||
//--
|
||||
public long testcompilationtask_id = Constants.Nan;
|
||||
public String matrix = "";
|
||||
@Description("DEFAULT ''")
|
||||
@@ -103,4 +100,18 @@ public class TestRunTask extends TestTask {
|
||||
res.add(String.valueOf(kernels_in)); //8
|
||||
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", ";");
|
||||
}
|
||||
//--
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -152,9 +152,9 @@ public class TestRunTasksDBTable extends DBTable<Long, TestRunTask> {
|
||||
case 9:
|
||||
return object.matrix;
|
||||
case 10:
|
||||
return TestRunTaskInterface.getEnvironments(object);
|
||||
return object.getEnvironments();
|
||||
case 11:
|
||||
return TestRunTaskInterface.getUsrPar(object);
|
||||
return object.getUsrPar();
|
||||
case 12:
|
||||
return object.Time;
|
||||
case 13:
|
||||
|
||||
@@ -14,8 +14,8 @@ import java.util.Vector;
|
||||
public class TestTask extends DBObject {
|
||||
@Description("PRIMARY KEY, UNIQUE")
|
||||
public long id = Constants.Nan;
|
||||
@Description("DEFAULT ''")
|
||||
public String taskspackage_id = "";
|
||||
@Description("DEFAULT '-1'")
|
||||
public int taskspackage_id = Constants.Nan;
|
||||
@Description("DEFAULT -1")
|
||||
public int group_id = Constants.Nan;
|
||||
@Description("DEFAULT ''")
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
package TestingSystem.DVM.TasksPackage;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Database.nDBObject;
|
||||
import Common.Database.riDBObject;
|
||||
import GlobalData.Machine.MachineType;
|
||||
import TestingSystem.DVM.Tasks.TestCompilationTask;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
public class TasksPackage extends nDBObject {
|
||||
public class TasksPackage extends riDBObject {
|
||||
public String pid=""; //сишная часть.
|
||||
public String summary = "";
|
||||
//---
|
||||
|
||||
@@ -10,10 +10,10 @@ import java.util.LinkedHashMap;
|
||||
|
||||
import static Common.UI.Tables.TableRenderers.RendererDate;
|
||||
import static Common.UI.Tables.TableRenderers.RendererStatusEnum;
|
||||
public class TasksPackageDBTable extends DBTable<String, TasksPackage> {
|
||||
public class TasksPackageDBTable extends iDBTable<TasksPackage> {
|
||||
|
||||
public TasksPackageDBTable() {
|
||||
super(String.class, TasksPackage.class);
|
||||
super(TasksPackage.class);
|
||||
}
|
||||
@Override
|
||||
public Current CurrentName() {
|
||||
@@ -36,7 +36,7 @@ public class TasksPackageDBTable extends DBTable<String, TasksPackage> {
|
||||
}
|
||||
@Override
|
||||
protected void AdditionalInitColumns() {
|
||||
columns.get(0).setVisible(false);
|
||||
// columns.get(0).setVisible(false);
|
||||
columns.get(7).setRenderer(RendererDate);
|
||||
columns.get(8).setRenderer(RendererDate);
|
||||
columns.get(9).setRenderer(RendererStatusEnum);
|
||||
|
||||
@@ -7,7 +7,6 @@ import GlobalData.Tasks.TaskState;
|
||||
import Repository.Server.ServerCode;
|
||||
import TestingSystem.DVM.Tasks.TestCompilationTask;
|
||||
import TestingSystem.DVM.Tasks.TestRunTask;
|
||||
import TestingSystem.DVM.Tasks.TestRunTaskInterface;
|
||||
import TestingSystem.DVM.Tasks.TestTask;
|
||||
import TestingSystem.DVM.TasksPackage.TasksPackage;
|
||||
import TestingSystem.DVM.TasksPackage.TasksPackageState;
|
||||
@@ -39,8 +38,8 @@ public class TestsSupervisor_2022 {
|
||||
tasksPackage = tasksPackage_in;
|
||||
compilationTasks = tasks_in;
|
||||
planner.Print(getClass().getSimpleName() + ": найдено задач на компиляцию: " + compilationTasks.size());
|
||||
packageRemoteWorkspace = new RemoteFile(tasksPackage.user_workspace + "/tests", tasksPackage.id, true);
|
||||
packageLocalWorkspace = Paths.get(Global.PackagesDirectory.getAbsolutePath(), tasksPackage.id).toFile();
|
||||
packageRemoteWorkspace = new RemoteFile(tasksPackage.user_workspace + "/tests", String.valueOf(tasksPackage.id), true);
|
||||
packageLocalWorkspace = new File(Global.PackagesDirectory, String.valueOf(tasksPackage.id));
|
||||
}
|
||||
public boolean packageNeedsKill() throws Exception{
|
||||
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> 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;
|
||||
} else {
|
||||
Pair<TaskState, Integer> results = new Pair<>(TaskState.Done, 100);
|
||||
switch (testRunTask.test_type) {
|
||||
case Correctness:
|
||||
results = TestRunTaskInterface.analyzeCorrectness(output_lines);
|
||||
results = Utils.analyzeCorrectness(output_lines);
|
||||
break;
|
||||
case Performance:
|
||||
results = TestRunTaskInterface.analyzePerformance(output_lines);
|
||||
results = Utils.analyzePerformance(output_lines);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
testRunTask.state = results.getKey();
|
||||
testRunTask.progress = results.getValue();
|
||||
testRunTask.CleanTime = TestRunTaskInterface.parseCleanTime(testRunTask.output);
|
||||
testRunTask.CleanTime = Utils.parseCleanTime(testRunTask.output);
|
||||
}
|
||||
File local_sts_text = Utils.getTempFileName("sts_text");
|
||||
Vector<ChannelSftp.LsEntry> files = connection.sftpChannel.ls(testRunTask.remote_workspace);
|
||||
|
||||
Reference in New Issue
Block a user