diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index e97d0ac3..8d3d3009 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -9,9 +9,16 @@
-
-
+
+
+
+
+
+
+
+
+
diff --git a/properties b/properties
index 7c7868a5..e414c9bf 100644
--- a/properties
+++ b/properties
@@ -10,7 +10,7 @@
"SMTPHost": "smtp.mail.ru",
"SMTPPort": 465,
"MailSocketPort": 465,
- "collapseCredentials": false,
+ "collapseCredentials": true,
"collapseFileGraphs": false,
"collapseFileMessages": false,
"collapseProjectTrees": false,
diff --git a/src/_VisualDVM/Repository/Component/Visualiser.java b/src/_VisualDVM/Repository/Component/Visualiser.java
index 8392bd84..3560a84e 100644
--- a/src/_VisualDVM/Repository/Component/Visualiser.java
+++ b/src/_VisualDVM/Repository/Component/Visualiser.java
@@ -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());
diff --git a/src/_VisualDVM/Repository/Server/ServerCode.java b/src/_VisualDVM/Repository/Server/ServerCode.java
index c7846e28..a56838bc 100644
--- a/src/_VisualDVM/Repository/Server/ServerCode.java
+++ b/src/_VisualDVM/Repository/Server/ServerCode.java
@@ -87,5 +87,6 @@ public enum ServerCode {
StartNecessaryMachines,
GetSapforForCompilation,
GetMaxSapforVersion,
- PerformAutoSapforTesting;
+ PerformAutoSapforTesting,
+ ;
}
diff --git a/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java b/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java
index 0e92cbd5..b1e8def5 100644
--- a/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java
+++ b/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java
@@ -21,19 +21,19 @@ public class DVMPackagesForm extends DataSetControlForm {
@Override
protected void createColumns() {
AddColumns(
- new ColumnInfo("Автор") {
+ new ColumnInfo("автор") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.sender_name;
}
},
- new ColumnInfo("Машина") {
+ new ColumnInfo("машина") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.machine_address + ":" + object.machine_port;
}
},
- new ColumnInfo("Пользователь") {
+ new ColumnInfo("пользователь") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.user_name;
@@ -45,7 +45,7 @@ public class DVMPackagesForm extends DataSetControlForm {
return object.version;
}
},
- new ColumnInfo("Конфигурации") {
+ new ColumnInfo("конфигурации") {
@Override
public Object getFieldAt(DVMPackage object) {
return ((PackageCache) VisualCaches.GetCache(object)).getConfigurationsDescriptions();
@@ -55,19 +55,19 @@ public class DVMPackagesForm extends DataSetControlForm {
return RendererMultiline.class;
}
},
- new ColumnInfo("Задач") {
+ new ColumnInfo("задач") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.tasksCount;
}
},
- new ColumnInfo("Ядер") {
+ new ColumnInfo("ядер") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.kernels;
}
},
- new ColumnInfo("Прогресс") {
+ new ColumnInfo("прогресс") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.progress;
@@ -77,7 +77,7 @@ public class DVMPackagesForm extends DataSetControlForm {
return RendererProgressBar.class;
}
},
- new ColumnInfo("Начало") {
+ new ColumnInfo("начало") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.StartDate;
@@ -87,7 +87,7 @@ public class DVMPackagesForm extends DataSetControlForm {
return RendererDate.class;
}
},
- new ColumnInfo("Изменено") {
+ new ColumnInfo("изменено") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.ChangeDate;
@@ -97,7 +97,7 @@ public class DVMPackagesForm extends DataSetControlForm {
return RendererDate.class;
}
},
- new ColumnInfo("Статус") {
+ new ColumnInfo("статус") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.state;
diff --git a/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java b/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java
index af865b38..5b992f89 100644
--- a/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java
+++ b/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforPackage_json.java
@@ -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 getConfigurationsNames() {
Vector 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;
+ }
}
diff --git a/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java b/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java
index 03647314..ada65bd2 100644
--- a/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java
+++ b/src/_VisualDVM/TestingSystem/SAPFOR/Json/SapforVersion_json.java
@@ -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 = "";
diff --git a/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java b/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java
index d887fa24..b6d42daf 100644
--- a/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java
+++ b/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/SapforPackage.java
@@ -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 {
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 {
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 {
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 {
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();
+ }
}
diff --git a/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/UI/SapforPackagesForm.java b/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/UI/SapforPackagesForm.java
index 2224a789..85f5b4db 100644
--- a/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/UI/SapforPackagesForm.java
+++ b/src/_VisualDVM/TestingSystem/SAPFOR/SapforPackage/UI/SapforPackagesForm.java
@@ -21,7 +21,7 @@ public class SapforPackagesForm extends DataSetControlForm {
@Override
protected void createColumns() {
AddColumns(
- new ColumnInfo("Автор") {
+ new ColumnInfo("автор") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.sender_name;
@@ -33,7 +33,7 @@ public class SapforPackagesForm extends DataSetControlForm {
return object.version;
}
},
- new ColumnInfo("Конфигурации") {
+ new ColumnInfo("конфигурации") {
@Override
public Object getFieldAt(SapforPackage object) {
return ((PackageCache) VisualCaches.GetCache(object)).getConfigurationsDescriptions();
@@ -43,19 +43,19 @@ public class SapforPackagesForm extends DataSetControlForm {
return RendererMultiline.class;
}
},
- new ColumnInfo("Задач") {
+ new ColumnInfo("задач") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.tasksCount;
}
},
- new ColumnInfo("Ядер") {
+ new ColumnInfo("ядер") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.kernels;
}
},
- new ColumnInfo("Прогресс") {
+ new ColumnInfo("прогресс") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.progress;
@@ -65,7 +65,7 @@ public class SapforPackagesForm extends DataSetControlForm {
return RendererProgressBar.class;
}
},
- new ColumnInfo("Начало") {
+ new ColumnInfo("начало") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.StartDate;
@@ -75,7 +75,7 @@ public class SapforPackagesForm extends DataSetControlForm {
return RendererDate.class;
}
},
- new ColumnInfo("Изменено") {
+ new ColumnInfo("изменено") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.ChangeDate;
@@ -85,7 +85,13 @@ public class SapforPackagesForm extends DataSetControlForm {
return RendererDate.class;
}
},
- new ColumnInfo("Статус") {
+ new ColumnInfo("различия") {
+ @Override
+ public Object getFieldAt(SapforPackage object) {
+ return object.mismatchesCount;
+ }
+ },
+ new ColumnInfo("статус") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.state;
@@ -113,7 +119,7 @@ public class SapforPackagesForm extends DataSetControlForm {
addSeparator();
addPasses(PassCode.AbortSapforPackage);
addSeparator();
- addPasses(PassCode.SetSapforConfigurationEthalon,PassCode.CompareSapforPackages);
+ addPasses(PassCode.SetSapforConfigurationEthalon, PassCode.CompareSapforPackages);
addSeparator();
addPasses(PassCode.DeleteSapforPackage);
}
diff --git a/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java b/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java
index 990056fb..8ea9a0c9 100644
--- a/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java
+++ b/src/_VisualDVM/TestingSystem/SAPFOR/SapforTask/SapforTask.java
@@ -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 versions1 = getSortedVersions();
+ LinkedHashMap 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);
}
diff --git a/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java b/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java
index f783125e..ffa18691 100644
--- a/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java
+++ b/src/_VisualDVM/TestingSystem/SAPFOR/SapforTestingPlanner.java
@@ -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 {
//не требуется.
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();
diff --git a/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java b/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java
index 91ac050b..375de5a0 100644
--- a/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java
+++ b/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.java
@@ -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);
}