эталоны

работают только для тестов на корректность,и если задана соответствующая настройка( с последним можно подумать и искать их самостоятельно, если они есть)
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

View File

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

View File

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