fix умножения сапфоровских задач

v++
This commit is contained in:
2025-02-13 18:40:53 +03:00
parent dd1f7f8040
commit 91f4ed4a17
12 changed files with 69 additions and 60 deletions

View File

@@ -21,7 +21,7 @@ public abstract class DataTable extends StyledTable implements DataControl {
}
}
}
//-------------------------------
//------------------------------
/*
public void SelectRow(int r) {
getSelectionModel().setSelectionInterval(r, r);

View File

@@ -62,7 +62,7 @@ public class Visualiser extends Component {
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
@Override
public void GetVersionInfo() {
version = 1162;
version = 1163;
String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime());

View File

@@ -29,6 +29,8 @@ public class Test extends riDBObject {
public int group_id = CommonConstants.Nan;
@Description("DEFAULT ''")
public String files = ""; //файлы теста
@Description("DEFAULT ''")
public String extended_description="";
//--------------------------------------------->>>
@Description("IGNORE")
public String temp_project_name = "";
@@ -48,6 +50,7 @@ public class Test extends riDBObject {
max_dim = t.max_dim;
args = t.args;
group_id = t.group_id;
extended_description = t.extended_description;
}
@Override
public void select(boolean flag) {

View File

@@ -1,7 +1,8 @@
package _VisualDVM.TestingSystem.SAPFOR.Json;
import Common.CommonConstants;
import _VisualDVM.GlobalData.Tasks.TaskState;
import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.ServerObjectsCache.SapforConfigurationCache;
import _VisualDVM.ServerObjectsCache.VisualCaches;
import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.ComparisonState;
@@ -40,25 +41,27 @@ public class SapforPackage_json implements Serializable {
//---
public SapforPackage_json() {
}
public SapforPackage_json(ServerSapfor serverSapfor, LinkedHashMap<String, Test> testsByDescriptions, Vector<SapforConfiguration> configurations, int kernels_in) {
public SapforPackage_json(ServerSapfor serverSapfor, Vector<SapforConfiguration> configurations, int kernels_in) {
sapfor_drv = serverSapfor.call_command;
kernels = kernels_in;
//рудимент от формирования пакетов. возможно, объединить с текущим классом.
SapforTestingSet_json testingSet = new SapforTestingSet_json(testsByDescriptions, configurations);
testingSet.id = getMaxSetId();
testingSets.add(testingSet);
//формирование задач
LinkedHashMap<String, SapforTask> sortedTasks = new LinkedHashMap<>();
for (SapforConfiguration_json sapforConfiguration_json : testingSet.configurations) {
for (SapforTest_json test : testingSet.tests) {
SapforTask task = new SapforTask(testingSet, test, sapforConfiguration_json);
if (!sortedTasks.containsKey(task.getUniqueKey())) {
task.id = getMaxTaskId();
sortedTasks.put(task.getUniqueKey(), task);
for (SapforConfiguration sapforConfiguration : configurations) {
SapforTestingSet_json testingSet = new SapforTestingSet_json(((SapforConfigurationCache) VisualCaches.GetCache(sapforConfiguration)).getTests(), sapforConfiguration);
testingSet.id = getMaxSetId();
testingSets.add(testingSet);
// формирование задач
LinkedHashMap<String, SapforTask> sortedTasks = new LinkedHashMap<>();
//здесь из за совместимости. на самом деле это параметры а не конфигурации. но название старое.
for (SapforConfiguration_json sapforConfiguration_json : testingSet.configurations) {
for (SapforTest_json test : testingSet.tests) {
SapforTask task = new SapforTask(testingSet, test, sapforConfiguration_json);
if (!sortedTasks.containsKey(task.getUniqueKey())) {
task.id = getMaxTaskId();
sortedTasks.put(task.getUniqueKey(), task);
}
}
}
tasks.addAll(sortedTasks.values());
}
tasks.addAll(sortedTasks.values());
}
public int getMaxSetId() {
return max_set_id++;
@@ -187,8 +190,6 @@ public class SapforPackage_json implements Serializable {
}
}
}
public Vector<String> getConfigurationsNames() {
Vector<String> names = new Vector<>();
for (SapforTestingSet_json set : testingSets) {

View File

@@ -8,24 +8,23 @@ import _VisualDVM.TestingSystem.SAPFOR.SapforSettings.SapforSettings;
import com.google.gson.annotations.Expose;
import java.io.Serializable;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Vector;
public class SapforTestingSet_json implements Serializable {
//устаревшее название. на самом деле соответствует конфигурации
@Expose
public int id = CommonConstants.Nan;
@Expose
public List<SapforTest_json> tests = new Vector<>();
//устаревшее название. на самом деле соответствует параметрам тестирования
@Expose
public List<SapforConfiguration_json> configurations = new Vector<>();
public SapforTestingSet_json() {
}
public SapforTestingSet_json(LinkedHashMap<String, Test> testsByDescriptions, Vector<SapforConfiguration> sapforConfigurations) {
for (Test test : testsByDescriptions.values())
public SapforTestingSet_json(Vector<Test> tests_in, SapforConfiguration configuration) {
for (Test test : tests_in)
tests.add(new SapforTest_json(test));
for (SapforConfiguration configuration : sapforConfigurations) {
for (SapforSettings sapforSettings : ((SapforConfigurationCache) VisualCaches.GetCache(configuration)).getSettings())
configurations.add(new SapforConfiguration_json(sapforSettings));
}
for (SapforSettings sapforSettings : ((SapforConfigurationCache) VisualCaches.GetCache(configuration)).getSettings())
configurations.add(new SapforConfiguration_json(sapforSettings));
}
}

View File

@@ -5,8 +5,10 @@ import _VisualDVM.ServerObjectsCache.SapforConfigurationCache;
import _VisualDVM.ServerObjectsCache.VisualCaches;
import _VisualDVM.TestingSystem.Common.Configuration.Configuration;
import _VisualDVM.TestingSystem.Common.Group.Group;
import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.TestingSystem.SAPFOR.SapforSettings.SapforSettings;
import java.util.LinkedHashMap;
import java.util.Vector;
public class SapforConfiguration extends Configuration {
public SapforConfiguration(SapforConfiguration sapforConfiguration) {
@@ -20,6 +22,7 @@ public class SapforConfiguration extends Configuration {
//--
Vector<Group> groups = cache.getGroups();
Vector<SapforSettings> settingsArray = cache.getSettings();
Vector<Test> tests= cache.getTests();
//--
Vector<LanguageName> groupsLanguages = new Vector<>();
for (Group group : groups) {
@@ -39,6 +42,16 @@ public class SapforConfiguration extends Configuration {
Log.Writeln_("Поддерживается пакетный режим только для языка Fortran");
}
//-
LinkedHashMap<String, Test> testsByDescriptions = new LinkedHashMap<>();
for (Test test : tests) {
String l_description = test.description.toLowerCase();
if (testsByDescriptions.containsKey(l_description)) {
Log.Writeln_("В конфигурацию тестирования SAPFOR не могут входить тесты с одинаковыми именами (без учета регистра):" + test.description.toLowerCase());
} else {
testsByDescriptions.put(l_description, test);
}
}
//-
return Log.isEmpty();
}
}

View File

@@ -54,29 +54,18 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
//--
boolean valid = true;
//проверка исходных данных тестов и групп
LinkedHashMap<String, Test> testsByDescriptions = new LinkedHashMap<>();
//--
kernels = 1;
for (SapforConfiguration configuration : configurations) {
kernels = Math.max(configuration.kernels, kernels);
configuration.validate(Log);
//-
ConfigurationCache cache = (ConfigurationCache) VisualCaches.GetCache(configuration);
//--
for (Test test : cache.getTests()) {
String l_description = test.description.toLowerCase();
if (testsByDescriptions.containsKey(l_description)) {
Log.Writeln_("В пакет не могут входить тесты с одинаковыми именами (без учета регистра):" + test.description.toLowerCase());
valid = false;
} else {
testsByDescriptions.put(l_description, test);
}
}
}
valid = Log.isEmpty();
//формирование задач.
if (valid) {
package_json = new SapforPackage_json(serverSapfor, testsByDescriptions, configurations, kernels);
//тесты в рамках конфиги уникальны значит пересечения по папкам уже не будет.
package_json = new SapforPackage_json(serverSapfor, configurations, kernels);
tasksCount = package_json.tasks.size();
saveConfigurationsAsJson(configurations);
if (configurations.size() == 1 && configurations.get(0).ethalon_id != CommonConstants.Nan) {

View File

@@ -32,6 +32,8 @@ public class SapforTask extends DBObject {
@Expose
public String group_description = "";
@Expose
public String configuration_description = "";
@Expose
public String flags = "";
@Expose
public String codes = "";
@@ -69,6 +71,7 @@ public class SapforTask extends DBObject {
//-- unique key--
group_description = test.group_description;
test_description = test.description;
configuration_description = sapforConfiguration_json.name;
sapfor_configuration_id = sapforConfiguration_json.id;
//---------------
flags = sapforConfiguration_json.flags;
@@ -109,6 +112,7 @@ public class SapforTask extends DBObject {
//-
test_description = t.test_description;
group_description = t.group_description;
configuration_description = t.configuration_description;
versionsDescription = t.versionsDescription;
//--
codes = t.codes;
@@ -222,8 +226,13 @@ public class SapforTask extends DBObject {
}
@Override
public String toString() {
return
"#" + id + " группа " + Utils_.Brackets(group_description) + " тест " + Utils_.Brackets(test_description) + " параметры " + Utils_.Brackets(sapfor_configuration_id);
"#" + id + " группа "
+ Utils_.Brackets(group_description) +
" тест " + Utils_.Brackets(test_description)
+ " параметры "
+ Utils_.Brackets(configuration_description.isEmpty()?sapfor_configuration_id: configuration_description);
// getUniqueKey();
}
public String getPassesInfo() {

View File

@@ -61,6 +61,7 @@ public class MainMenuBar extends VisualiserMenuBar {
//-
setPreferredSize(new Dimension(0, 30));
//--
/*
add(new MenuBarButton() {
{
setIcon("/Common/icons/Apply.png");
@@ -70,6 +71,7 @@ public class MainMenuBar extends VisualiserMenuBar {
});
}
});
*/
//--
add(new JSeparator());
add(MachineButton = new MenuBarButton() {

View File

@@ -265,6 +265,9 @@ public class TestingForm implements FormWithSplitters, TestingWindow {
roText.setText(object.getOutput());
reText.setText(object.getErrors());
stsText.setText(object.getStatistic());
//-
Global.testingServer.db.groups.getUI().SetCurrentByPK(object.group_id);
Global.testingServer.db.tests.getUI().SetCurrentByPK(object.test_id);
}
@Override
public void ShowNoCurrentDVMTask() {