эталоны

работают только для тестов на корректность,и если задана соответствующая настройка( с последним можно подумать и искать их самостоятельно, если они есть)
This commit is contained in:
2025-03-14 23:55:09 +03:00
parent 9a5b84c068
commit c8d597e9cd
7 changed files with 66 additions and 20 deletions

6
.idea/workspace.xml generated
View File

@@ -8,11 +8,11 @@
<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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/GlobalData/Tasks/TaskState.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/GlobalData/Tasks/TaskState.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/GlobalData/Tasks/TaskState.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/GlobalData/Tasks/TaskState.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/RefreshDVMPackageResults.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/RefreshDVMPackageResults.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/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/DVMTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/UI/DVMRunTasksForm.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/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Utils.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

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

View File

@@ -3,7 +3,7 @@ import Common.Utils.Vector_;
import java.util.Vector; import java.util.Vector;
public class Constants { public class Constants {
public static final int version = 1211; public static final int version = 1212;
public static final int planner_version = 24; public static final int planner_version = 24;
public static final int testingMaxKernels = 64; public static final int testingMaxKernels = 64;
//-- //--

View File

@@ -66,7 +66,7 @@ public enum TaskState implements StatusEnum {
case Done: case Done:
return "успешно"; return "успешно";
case DoneWithDiffs: case DoneWithDiffs:
return "различия с эталоном"; return "различия";
case DoneWithErrors: case DoneWithErrors:
return "с ошибками"; return "с ошибками";
case Crushed: case Crushed:
@@ -103,6 +103,7 @@ public enum TaskState implements StatusEnum {
case WrongTestFormat: case WrongTestFormat:
case InternalError: case InternalError:
case Canceled: case Canceled:
case DoneWithDiffs:
return VisualiserFonts.BadState; return VisualiserFonts.BadState;
case Queued: case Queued:
case Running: case Running:
@@ -112,7 +113,6 @@ public enum TaskState implements StatusEnum {
case Crushed: case Crushed:
return VisualiserFonts.Fatal; return VisualiserFonts.Fatal;
case Finished: case Finished:
case DoneWithDiffs:
return VisualiserFonts.BlueState; return VisualiserFonts.BlueState;
case WorkspaceReady: case WorkspaceReady:
return VisualiserFonts.ReadyState; return VisualiserFonts.ReadyState;

View File

@@ -24,7 +24,6 @@ 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 _VisualDVM.TestingSystem.DVM.DVMTasks.DVMTask; import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMTask;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.Utils; import _VisualDVM.Utils;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
import javafx.util.Pair; import javafx.util.Pair;
@@ -149,7 +148,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
if (Global.normalProperties.CreateEthalonTasks && group.type.equals(TestType.Correctness)) { if (Global.normalProperties.CreateEthalonTasks && group.type.equals(TestType.Correctness)) {
if (ethalon == null) { if (ethalon == null) {
compilationTasks.add(compilationTask = new DVMCompilationTask(index, configuration, "-s", group, test)); compilationTasks.add(compilationTask = new DVMCompilationTask(index, configuration, "-s", group, test));
compilationTask.runTasks.add(ethalon= new DVMRunTask( compilationTask.runTasks.add(ethalon = new DVMRunTask(
index, index,
compilationTask, compilationTask,
configuration, configuration,
@@ -160,10 +159,10 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
"", "",
"-s", "", "-s", "",
kernels)); kernels));
tasksCount ++; tasksCount++;
} }
//-- //--
for (DVMRunTask dvmRunTask: testRunTasks) { for (DVMRunTask dvmRunTask : testRunTasks) {
dvmRunTask.ethalon_id = ethalon.id; dvmRunTask.ethalon_id = ethalon.id;
} }
} }
@@ -229,7 +228,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
for (DVMTask task : tasks) for (DVMTask task : tasks)
sorted_tasks.put(task.id, task); sorted_tasks.put(task.id, task);
//-- //--
File info_file = Utils_.getFile(packageLocalWorkspace.getAbsolutePath(),"results", file_name); File info_file = Utils_.getFile(packageLocalWorkspace.getAbsolutePath(), "results", file_name);
List<String> lines = FileUtils.readLines(info_file, Charset.defaultCharset()); List<String> lines = FileUtils.readLines(info_file, Charset.defaultCharset());
for (String packed : lines) { for (String packed : lines) {
if (!packed.isEmpty()) { if (!packed.isEmpty()) {
@@ -253,13 +252,16 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
for (DVMCompilationTask compilationTask : package_json.compilationTasks) for (DVMCompilationTask compilationTask : package_json.compilationTasks)
runTasks.addAll(compilationTask.runTasks); runTasks.addAll(compilationTask.runTasks);
//---- //----
getTasksInfo(packageLocalWorkspace,package_json.compilationTasks, "CompilationInfo.txt"); getTasksInfo(packageLocalWorkspace, package_json.compilationTasks, "CompilationInfo.txt");
getTasksInfo(packageLocalWorkspace,runTasks, "RunningInfo.txt"); getTasksInfo(packageLocalWorkspace, runTasks, "RunningInfo.txt");
//-- //--
int ct_count = 0; int ct_count = 0;
int rt_count = 0; int rt_count = 0;
int good = 0; int good = 0;
//-- //--
LinkedHashMap<Integer, DVMRunTask> sortedRunTasks = new LinkedHashMap<>();
Vector<Integer> rte_ids = new Vector<>(); //id задач у которых есть эталон.
//-
for (DVMCompilationTask compilationTask : package_json.compilationTasks) { for (DVMCompilationTask compilationTask : package_json.compilationTasks) {
compilationTask.dvm_package_id = id; compilationTask.dvm_package_id = id;
if (!compilationTask.state.equals(TaskState.Done)) if (!compilationTask.state.equals(TaskState.Done))
@@ -267,7 +269,10 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
ct_count++; ct_count++;
File ct_workspace = Paths.get(packageLocalWorkspace.getAbsolutePath(), "results", String.valueOf(compilationTask.id)).toFile(); File ct_workspace = Paths.get(packageLocalWorkspace.getAbsolutePath(), "results", String.valueOf(compilationTask.id)).toFile();
if (ct_workspace.exists()) { if (ct_workspace.exists()) {
//1 проход. анализ всех задач подряд
for (DVMRunTask runTask : compilationTask.runTasks) { for (DVMRunTask runTask : compilationTask.runTasks) {
sortedRunTasks.put(runTask.id, runTask);
//--
runTask.dvm_package_id = id; runTask.dvm_package_id = id;
rt_count++; rt_count++;
runTask.compilation_state = compilationTask.state; runTask.compilation_state = compilationTask.state;
@@ -294,6 +299,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
if (Utils.isCrushed(output_lines, errors_lines)) { if (Utils.isCrushed(output_lines, errors_lines)) {
runTask.state = TaskState.Crushed; runTask.state = TaskState.Crushed;
} else { } else {
//--
Pair<TaskState, Integer> results = new Pair<>(TaskState.Done, 100); Pair<TaskState, Integer> results = new Pair<>(TaskState.Done, 100);
switch (runTask.test_type) { switch (runTask.test_type) {
case Correctness: case Correctness:
@@ -301,23 +307,58 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
break; break;
case Performance: case Performance:
results = Utils.analyzePerformance(output_lines); results = Utils.analyzePerformance(output_lines);
runTask.CleanTime = Utils.parseCleanTime(output);
break; break;
default: default:
break; break;
} }
//---
runTask.state = results.getKey(); runTask.state = results.getKey();
runTask.progress = results.getValue(); runTask.progress = results.getValue();
runTask.CleanTime = Utils.parseCleanTime(output);
} }
} }
} }
} }
if (!runTask.state.equals(TaskState.Done)) if (runTask.state.equals(TaskState.Done)) {
good++;
if (runTask.ethalon_id != CommonConstants.Nan) rte_ids.add(runTask.id);
//с эталоном сверяем только если задача выполнена
} else {
hasErrors = true; hasErrors = true;
else good++; }
} }
} }
} }
//-
//2 проход. если у успешных задач есть эталоны.
for (int task_id : rte_ids) {
DVMRunTask runTask = sortedRunTasks.get(task_id);
DVMRunTask ethalon = sortedRunTasks.get(runTask.ethalon_id);
if (ethalon.state.equals(TaskState.Done)) {
//проверяем только если эталон выполнен.
//--------------------------------------
File taskOutFile = Utils_.getFile(
packageLocalWorkspace.getAbsolutePath(),
"results",
String.valueOf(runTask.id),
Constants.out_file
);
File ethalonOutFile = Utils_.getFile(
packageLocalWorkspace.getAbsolutePath(),
"results",
String.valueOf(ethalon.id),
Constants.out_file
);
String taskOut = FileUtils.readFileToString(taskOutFile);
String ethalonOut = FileUtils.readFileToString(ethalonOutFile);
if (!taskOut.equals(ethalonOut)){
runTask.state = TaskState.DoneWithDiffs;
hasErrors = true;
good--;
}
}
}
//-
progress = 100; progress = 100;
doneTasksCount = good; doneTasksCount = good;
saveJson(); //запись обновленных результатов пакета в json! saveJson(); //запись обновленных результатов пакета в json!

View File

@@ -63,6 +63,14 @@ public class DVMRunTasksForm extends DataSetControlForm<DVMRunTask> {
return RendererStatusEnum.class; return RendererStatusEnum.class;
} }
}, },
/*
new ColumnInfo<DVMRunTask>("эталон") {
@Override
public Object getFieldAt(DVMRunTask object) {
return object.ethalon_id;
}
},
*/
new ColumnInfo<DVMRunTask>("Матрица") { new ColumnInfo<DVMRunTask>("Матрица") {
@Override @Override
public Object getFieldAt(DVMRunTask object) { public Object getFieldAt(DVMRunTask object) {

View File

@@ -511,9 +511,6 @@ public class Utils {
} }
} }
TaskState state = TaskState.Finished; TaskState state = TaskState.Finished;
// if (starts == 0 || ends == 0) {
// state = TaskState.WrongTestFormat;
// } else
if (errors > 0) { if (errors > 0) {
state = TaskState.DoneWithErrors; state = TaskState.DoneWithErrors;
} else { } else {