эталоны
работают только для тестов на корректность,и если задана соответствующая настройка( с последним можно подумать и искать их самостоятельно, если они есть)
This commit is contained in:
@@ -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!
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user