сравнение с эталоном начальная версия

v++
This commit is contained in:
2024-11-22 02:54:17 +03:00
parent d5b6d9dd55
commit f66790f67a
12 changed files with 199 additions and 34 deletions

11
.idea/workspace.xml generated
View File

@@ -9,9 +9,16 @@
<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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/MainModule_.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/MainModule_.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Global.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Global.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/UI/SapforPackagesForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/UI/SapforPackagesForm.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -10,7 +10,7 @@
"SMTPHost": "smtp.mail.ru",
"SMTPPort": 465,
"MailSocketPort": 465,
"collapseCredentials": false,
"collapseCredentials": true,
"collapseFileGraphs": false,
"collapseFileMessages": false,
"collapseProjectTrees": false,

View File

@@ -61,7 +61,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 = 1119;
version = 1120;
String pattern = "MMM dd yyyy HH:mm:ss";
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
date_text = df.format(getClassBuildTime());

View File

@@ -87,5 +87,6 @@ public enum ServerCode {
StartNecessaryMachines,
GetSapforForCompilation,
GetMaxSapforVersion,
PerformAutoSapforTesting;
PerformAutoSapforTesting,
;
}

View File

@@ -21,19 +21,19 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
@Override
protected void createColumns() {
AddColumns(
new ColumnInfo<DVMPackage>("Автор") {
new ColumnInfo<DVMPackage>("автор") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.sender_name;
}
},
new ColumnInfo<DVMPackage>("Машина") {
new ColumnInfo<DVMPackage>("машина") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.machine_address + ":" + object.machine_port;
}
},
new ColumnInfo<DVMPackage>("Пользователь") {
new ColumnInfo<DVMPackage>("пользователь") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.user_name;
@@ -45,7 +45,7 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
return object.version;
}
},
new ColumnInfo<DVMPackage>("Конфигурации") {
new ColumnInfo<DVMPackage>("конфигурации") {
@Override
public Object getFieldAt(DVMPackage object) {
return ((PackageCache) VisualCaches.GetCache(object)).getConfigurationsDescriptions();
@@ -55,19 +55,19 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
return RendererMultiline.class;
}
},
new ColumnInfo<DVMPackage>("Задач") {
new ColumnInfo<DVMPackage>("задач") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.tasksCount;
}
},
new ColumnInfo<DVMPackage>("Ядер") {
new ColumnInfo<DVMPackage>("ядер") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.kernels;
}
},
new ColumnInfo<DVMPackage>("Прогресс") {
new ColumnInfo<DVMPackage>("прогресс") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.progress;
@@ -77,7 +77,7 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
return RendererProgressBar.class;
}
},
new ColumnInfo<DVMPackage>("Начало") {
new ColumnInfo<DVMPackage>("начало") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.StartDate;
@@ -87,7 +87,7 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
return RendererDate.class;
}
},
new ColumnInfo<DVMPackage>("Изменено") {
new ColumnInfo<DVMPackage>("изменено") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.ChangeDate;
@@ -97,7 +97,7 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
return RendererDate.class;
}
},
new ColumnInfo<DVMPackage>("Статус") {
new ColumnInfo<DVMPackage>("статус") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.state;

View File

@@ -1,4 +1,5 @@
package _VisualDVM.TestingSystem.SAPFOR.Json;
import Common.CommonConstants;
import _VisualDVM.GlobalData.Tasks.TaskState;
import _VisualDVM.TestingSystem.Common.Test.Test;
import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
@@ -150,7 +151,7 @@ public class SapforPackage_json implements Serializable {
root.errors_count++;
}
}
public void buildComparisonTree(SapforPackage package_in) {
public int buildComparisonTree(SapforPackage package_in) {
comparison_root = new PackageComparisonSummary();
comparison_root.count = tasks.size();
comparison_root.mismatches_count = 0;
@@ -167,6 +168,7 @@ public class SapforPackage_json implements Serializable {
if (task.comparisonState.equals(ComparisonState.NotMatch))
comparison_root.mismatches_count++;
}
return comparison_root.mismatches_count;
}
public void getVersionsFiles(SapforPackage package_in) {
for (SapforTask task : tasks) {
@@ -185,6 +187,8 @@ public class SapforPackage_json implements Serializable {
}
}
}
public Vector<String> getConfigurationsNames() {
Vector<String> names = new Vector<>();
for (SapforTestingSet_json set : testingSets) {
@@ -201,4 +205,13 @@ public class SapforPackage_json implements Serializable {
});
return names;
}
public int getConfigurationId() {
if (testingSets.size() == 1) {
SapforTestingSet_json testingSet_json = testingSets.get(0);
if (testingSet_json.configurations.size() == 1) {
return testingSet_json.configurations.get(0).id;
}
}
return CommonConstants.Nan;
}
}

View File

@@ -131,6 +131,42 @@ public class SapforVersion_json implements Serializable {
}
return true;
}
public boolean isMatchServer(SapforVersion_json version_json) {
if (!description.equals(version_json.description)) {
return false;
}
if (files.size() != version_json.files.size()) {
return false;
}
for (String name1 : files.keySet()) {
if (!version_json.files.containsKey(name1)) {
return false;
}
}
for (String name1 : files.keySet()) {
ProjectFile file1 = files.get(name1);
ProjectFile file2 = version_json.files.get(name1);
//---
String text1 = "";
String text2 = "";
try {
text1 = FileUtils.readFileToString(file1.file, Charset.defaultCharset());
} catch (Exception ex) {
ex.printStackTrace();
}
try {
text2 = FileUtils.readFileToString(file2.file, Charset.defaultCharset());
} catch (Exception ex) {
ex.printStackTrace();
}
return text1.equalsIgnoreCase(text2);
// if (!Utils.compareFortranTexts(text1, text2)) {
// return false;
// }
}
return true;
}
public MessageError unpackMessage(String line_in) throws Exception {
MessageError res = new MessageError();
res.file = "";

View File

@@ -15,13 +15,19 @@ import _VisualDVM.TestingSystem.SAPFOR.Json.SapforPackage_json;
import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
import com.sun.org.glassfish.gmbal.Description;
import java.io.File;
import java.util.LinkedHashMap;
import java.util.Vector;
public class SapforPackage extends TestingPackage<SapforPackage_json> {
public int sapforId = CommonConstants.Nan; // так как сапфор на машине.
//--------------
//--
@Description("DEFAULT -1")
public int ethalon_id = CommonConstants.Nan;
@Description("DEFAULT 0")
public int mismatchesCount = 0; //различия с эталоном
//--
public SapforPackage() {
}
public SapforPackage(SapforPackage sapforPackage) {
@@ -73,6 +79,9 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
package_json = new SapforPackage_json(serverSapfor, testsByDescriptions, configurations, kernels);
tasksCount = package_json.tasks.size();
saveConfigurationsAsJson(configurations);
if (configurations.size() == 1 && configurations.get(0).ethalon_id != CommonConstants.Nan) {
ethalon_id = configurations.get(0).ethalon_id;
}
}
}
@Override
@@ -80,6 +89,8 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
super.SynchronizeFields(src);
SapforPackage p = (SapforPackage) src;
sapforId = p.sapforId;
ethalon_id = p.ethalon_id;
mismatchesCount=p.mismatchesCount;
}
@Override
public Class getJsonClass() {
@@ -112,4 +123,16 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
description = "Выполнено на " + ((int) percent) + "%\n" +
"Всего задач: " + tasksCount + ", из них с ошибками " + bad;
}
public boolean canCompare(SapforPackage package2, TextLog log){
if (package_json.tasks.size() != package2.package_json.tasks.size()) {
log.Writeln_("Количество задач в пакетах не совпадает!");
return false;
}
for (SapforTask task : package_json.tasks) {
if (!package2.package_json.containsKey(task.getUniqueKey())) {
log.Writeln_("Задача эталона " + task.getUniqueKey() + "не найдена в сравниваемом пакете!");
}
}
return log.isEmpty();
}
}

View File

@@ -21,7 +21,7 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
@Override
protected void createColumns() {
AddColumns(
new ColumnInfo<SapforPackage>("Автор") {
new ColumnInfo<SapforPackage>("автор") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.sender_name;
@@ -33,7 +33,7 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
return object.version;
}
},
new ColumnInfo<SapforPackage>("Конфигурации") {
new ColumnInfo<SapforPackage>("конфигурации") {
@Override
public Object getFieldAt(SapforPackage object) {
return ((PackageCache) VisualCaches.GetCache(object)).getConfigurationsDescriptions();
@@ -43,19 +43,19 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
return RendererMultiline.class;
}
},
new ColumnInfo<SapforPackage>("Задач") {
new ColumnInfo<SapforPackage>("задач") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.tasksCount;
}
},
new ColumnInfo<SapforPackage>("Ядер") {
new ColumnInfo<SapforPackage>("ядер") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.kernels;
}
},
new ColumnInfo<SapforPackage>("Прогресс") {
new ColumnInfo<SapforPackage>("прогресс") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.progress;
@@ -65,7 +65,7 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
return RendererProgressBar.class;
}
},
new ColumnInfo<SapforPackage>("Начало") {
new ColumnInfo<SapforPackage>("начало") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.StartDate;
@@ -75,7 +75,7 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
return RendererDate.class;
}
},
new ColumnInfo<SapforPackage>("Изменено") {
new ColumnInfo<SapforPackage>("изменено") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.ChangeDate;
@@ -85,7 +85,13 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
return RendererDate.class;
}
},
new ColumnInfo<SapforPackage>("Статус") {
new ColumnInfo<SapforPackage>("различия") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.mismatchesCount;
}
},
new ColumnInfo<SapforPackage>("статус") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.state;

View File

@@ -174,6 +174,46 @@ public class SapforTask extends DBObject {
task2.comparisonState = ComparisonState.Match;
}
}
public void checkMatchServer(SapforTask task2) {
if (!state.equals(task2.state)) {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
}
if ((versions.size() != task2.versions.size()) || (variants.size() != task2.variants.size())) {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
}
LinkedHashMap<String, SapforVersion_json> versions1 = getSortedVersions();
LinkedHashMap<String, SapforVersion_json> versions2 = task2.getSortedVersions();
//---
for (String name1 : versions1.keySet()) {
if (versions2.containsKey(name1)) {
SapforVersion_json version1 = versions1.get(name1);
SapforVersion_json version2 = versions2.get(name1);
//---
if (!version1.isMatchServer(version2)) {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
version1.comparisonState = VersionComparisonState.NotMatch;
version2.comparisonState = VersionComparisonState.NotMatch;
//-
} else {
version1.comparisonState = VersionComparisonState.Match;
version2.comparisonState = VersionComparisonState.Match;
//-
}
} else {
comparisonState = ComparisonState.NotMatch;
task2.comparisonState = ComparisonState.NotMatch;
//--
}
}
//--
if (comparisonState.equals(ComparisonState.Unknown)) {
comparisonState = ComparisonState.Match;
task2.comparisonState = ComparisonState.Match;
}
}
public Date getStartDate() {
return new Date(StartDate);
}

View File

@@ -1,5 +1,6 @@
package _VisualDVM.TestingSystem.SAPFOR;
import Common.CommonConstants;
import Common.Utils.TextLog;
import Common.Utils.Utils_;
import _VisualDVM.*;
import _VisualDVM.ProjectData.LanguageName;
@@ -12,6 +13,8 @@ import _VisualDVM.TestingSystem.SAPFOR.Json.SapforConfiguration_json;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforTest_json;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforTestingSet_json;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.ComparisonState;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
import _VisualDVM.TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
import _VisualDVM.TestingSystem.SAPFOR.ServerSapfor.ServerSapforState;
import javafx.util.Pair;
@@ -148,8 +151,52 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
//не требуется.
testingPackage.progress = 100;
testingPackage.checkFinishState();
//--для эталона
if (testingPackage.ethalon_id != CommonConstants.Nan) {
TextLog log = new TextLog();
try {
CheckEthalon(log);
} catch (Exception ex) {
ex.printStackTrace();
log.Writeln_("При сравнении с эталоном возникло исключение:");
log.Writeln_(ex.getMessage());
} finally {
if (!log.isEmpty())
testingPackage.description += "\n" + log.text;
}
}
UpdatePackageState();
}
protected void CheckEthalon(TextLog log) throws Exception {
Print("эталон = " + testingPackage.ethalon_id);
SapforPackage ethalon = (SapforPackage) ServerCommand(ServerCode.GetObjectCopyByPK, "", new Pair<>(SapforPackage.class, testingPackage.ethalon_id));
if (ethalon != null) {
Print("найден эталон " + testingPackage.ethalon_id);
ethalon.readJson();
Print("задач в эталоне: " + ethalon.package_json.tasks.size());
Print("задач в пакете: " + testingPackage.package_json.tasks.size());
if (ethalon.canCompare(testingPackage, log)) {
Print("сравнение...");
//--
testingPackage.package_json.getVersionsFiles(testingPackage);
ethalon.package_json.getVersionsFiles(ethalon);
//--
for (SapforTask task1 : ethalon.package_json.tasks) {
SapforTask task2 = testingPackage.package_json.getTaskByKey(task1.getUniqueKey());
task1.checkMatchServer(task2); //тексты сравниваются просто посимвольно.
if (task1.comparisonState.equals(ComparisonState.NotMatch)) {
testingPackage.mismatchesCount++;
}
}
Print("сравнение завершено");
testingPackage.description += "\nРазличий с эталоном: " + testingPackage.mismatchesCount;
return;
} else {
Print("сравнение с эталоном невозможно");
testingPackage.description += ("\nCравнение с эталоном невозможно:\n" + log.text);
}
}
}
@Override
protected void Kill() throws Exception {
File workspace = testingPackage.getLocalWorkspace();

View File

@@ -238,18 +238,10 @@ public class SapforPackagesComparisonForm {
@Override
protected void body() throws Exception {
//теперь сравниваем задачи
int i = 1;
for (SapforTask task1 : package1.package_json.tasks) {
SapforTask task2 = package2.package_json.getTaskByKey(task1.getUniqueKey());
task1.checkMatch(task2);
//--
++i;
}
//--
for (SapforTask task1 : package1.package_json.tasks) {
SapforTask task2 = package2.package_json.getTaskByKey(task1.getUniqueKey());
}
//---
package1.package_json.buildComparisonTree(package1);
package2.package_json.buildComparisonTree(package2);
}