Оптимизация анализа состояния версий пакетов сапфор
This commit is contained in:
2025-04-03 19:08:17 +03:00
parent 98ec37233a
commit 419af0766e
14 changed files with 142 additions and 68 deletions

10
.idea/workspace.xml generated
View File

@@ -7,11 +7,19 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/RefreshSapforPackageResults.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Message.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ProjectData/Messages/Message.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServer/Component/Sapfor/Sapfor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/ComponentsServer/Component/Sapfor/Sapfor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.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/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestsDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestsDatabase.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/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/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/Visual/Windows/SapforPackagesComparisonForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/SapforPackagesComparisonForm.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> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />

View File

@@ -26,7 +26,7 @@
"Kernels": 8, "Kernels": 8,
"LocalMakePathWindows": "C:\\MinGW\\msys\\1.0\\bin\\make.exe", "LocalMakePathWindows": "C:\\MinGW\\msys\\1.0\\bin\\make.exe",
"CheckTestingIntervalSeconds": 10, "CheckTestingIntervalSeconds": 10,
"AutoCheckTesting": false, "AutoCheckTesting": true,
"EmailOnTestingProgress": true, "EmailOnTestingProgress": true,
"CompleteCompilationOptions": true, "CompleteCompilationOptions": true,
"CompleteRunEnvironments": true, "CompleteRunEnvironments": true,

View File

@@ -180,6 +180,11 @@ public abstract class Sapfor extends OSDComponent {
if (line.toLowerCase().contains("segmentation fault")) { if (line.toLowerCase().contains("segmentation fault")) {
return false; return false;
} }
/*
if (line.toLowerCase().contains("error in unparse")) {
return false;
}
*/
} }
return true; return true;
} }

View File

@@ -3,7 +3,7 @@ import Common.Utils.Vector_;
import java.util.Vector; import java.util.Vector;
public class Constants { public class Constants {
public static final int version = 1232; public static final int version = 1233;
public static final int planner_version = 24; public static final int planner_version = 24;
public static final int testingMaxKernels = 64; public static final int testingMaxKernels = 64;
//-- //--

View File

@@ -0,0 +1,47 @@
package _VisualDVM.Passes.All;
import Common.CommonConstants;
import Common.Utils.Utils_;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.Passes.Server.TestingServerPass;
import _VisualDVM.Repository.Server.ServerCode;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import javafx.util.Pair;
import java.io.File;
public class RefreshSapforPackageResults extends TestingServerPass<SapforPackage> {
@Override
public String getIconPath() {
return "/icons/Menu/Undo.png";
}
@Override
protected boolean needsAnimation() {
return true;
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (!Global.testingServer.db.sapforPackages.getUI().CheckCurrent(Log))
return false;
target = Global.testingServer.db.sapforPackages.getUI().getCurrent();
if (!new File(target.getLocalWorkspace(), CommonConstants.LOADED).exists()) {
Log.Writeln_("Пакет не загружен!");
return false;
}
return true;
}
@Override
protected void body() throws Exception {
target.checkFinishState();
}
@Override
protected void performDone() throws Exception {
SendRequest(ServerCode.ReplaceSapforPackageResults, "",
new Pair<>(
target,
Utils_.fileToBytes(target.getJsonFile())
)
);
Global.mainModule.getPass(PassCode.SynchronizeTests).Do();
}
}

View File

@@ -360,7 +360,8 @@ public enum PassCode implements PassCode_ {
ComponentsServerBackUp, ComponentsServerBackUp,
TestingServerBackUp, TestingServerBackUp,
CompareDVMRunTaskToEthalon, CompareDVMRunTaskToEthalon,
DropSapforConfigurationEthalon; DropSapforConfigurationEthalon,
RefreshSapforPackageResults;
//-- //--
@Override @Override
public String getDescription() { public String getDescription() {
@@ -393,6 +394,8 @@ public enum PassCode implements PassCode_ {
return "Определить размерность тестов"; return "Определить размерность тестов";
case RefreshDVMPackageResults: case RefreshDVMPackageResults:
return "Обновить результаты анализа пакета тестирования DVM"; return "Обновить результаты анализа пакета тестирования DVM";
case RefreshSapforPackageResults:
return "Обновить результаты анализа пакета тестирования SAPFOR";
case JoinSapforTestingVersionsToGroup: case JoinSapforTestingVersionsToGroup:
return "Присоединить итоговые версии пакета тестирования SAPFOR к текущей группе тестов"; return "Присоединить итоговые версии пакета тестирования SAPFOR к текущей группе тестов";
case ResumeDVMPackage: case ResumeDVMPackage:

View File

@@ -68,7 +68,8 @@ public enum ServerCode {
GetDVMPackageCredentials, GetDVMPackageCredentials,
CreateBackUp, CreateBackUp,
GetFirstEmailToSend, GetFirstEmailToSend,
SynchronizeSapforRepoitory; SynchronizeSapforRepoitory,
ReplaceSapforPackageResults;
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case SynchronizeSapforRepoitory: case SynchronizeSapforRepoitory:
@@ -95,6 +96,8 @@ public enum ServerCode {
return "Определить размерность тестов на сервере"; return "Определить размерность тестов на сервере";
case ReplaceDVMPackageResults: case ReplaceDVMPackageResults:
return "Заменить json DVM пакета"; return "Заменить json DVM пакета";
case ReplaceSapforPackageResults:
return "Заменить json Sapfor пакета";
case JoinSapforVersionsToGroup: case JoinSapforVersionsToGroup:
return "Присоединение версий к группе на сервере"; return "Присоединение версий к группе на сервере";
case GetComponentsVersionsInfo: case GetComponentsVersionsInfo:

View File

@@ -689,6 +689,16 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
db.Update(dst); db.Update(dst);
Utils_.bytesToFile(packed_file, dst.getJsonFile()); Utils_.bytesToFile(packed_file, dst.getJsonFile());
} }
void ReplaceSapforPackageJson() throws Exception {
Pair<SapforPackage, byte[]> p = (Pair<SapforPackage, byte[]>) request.object;
SapforPackage src = p.getKey();
byte[] packed_file = p.getValue();
checkExistense(src.id, SapforPackage.class);
SapforPackage dst = db.sapforPackages.get(src.id);
dst.SynchronizeFields(src);
db.Update(dst);
Utils_.bytesToFile(packed_file, dst.getJsonFile());
}
void DetectTestsMinMaxDim() throws Exception { void DetectTestsMinMaxDim() throws Exception {
Vector<Object> keys = (Vector<Object>) request.object; Vector<Object> keys = (Vector<Object>) request.object;
for (Object key : keys) { for (Object key : keys) {
@@ -776,6 +786,9 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
case ReplaceDVMPackageResults: case ReplaceDVMPackageResults:
ReplaceDVMPackageJson(); ReplaceDVMPackageJson();
break; break;
case ReplaceSapforPackageResults:
ReplaceSapforPackageJson();
break;
case DetectTestsMinMaxDim: case DetectTestsMinMaxDim:
DetectTestsMinMaxDim(); DetectTestsMinMaxDim();
break; break;

View File

@@ -667,53 +667,6 @@ public class TestsDatabase extends SQLiteDatabase {
} }
} }
//-- //--
public void Patch() throws Exception {
/*
Vector<DVMCompilationOptionsSet> sets1 = new Vector<>();
for (DVMSettings dvm_settings : dvmSettings.Data.values()) {
OptionsSetJson optionsSetJson = Utils_.gson.fromJson(dvm_settings.packedCompilationOptionsJson, OptionsSetJson.class);
for (OptionsJson optionsJson : optionsSetJson.values) {
DVMCompilationOptionsSet set = new DVMCompilationOptionsSet(dvm_settings);
set.options = new Vector<>();
for (OptionJson optionJson : optionsJson.values) {
set.options.add(new DVMCompilationOption(optionJson.name, optionJson.value));
}
sets1.add(set);
}
}
BeginTransaction();
for (DVMCompilationOptionsSet set : sets1) {
Insert(set);
for (DVMCompilationOption option : set.options) {
option.dvmcompilationoptionsset_id = set.id;
Insert(option);
}
}
Commit();
Vector<DVMEnvironmentsSet> sets = new Vector<>();
for (DVMSettings dvm_settings : dvmSettings.Data.values()) {
EnvironmentsSetJson environmentsSetJson = Utils_.gson.fromJson(dvm_settings.packedRunEnvironmentValuesJson, EnvironmentsSetJson.class);
for (EnvironmentsJson environmentsJson : environmentsSetJson.values) {
DVMEnvironmentsSet set = new DVMEnvironmentsSet(dvm_settings);
set.environments = new Vector<>();
for (EnvironmentJson environmentJson : environmentsJson.values) {
set.environments.add(new DVMEnvironment(environmentJson.name, environmentJson.value));
}
sets.add(set);
}
}
BeginTransaction();
for (DVMEnvironmentsSet set : sets) {
Insert(set);
for (DVMEnvironment option : set.environments) {
option.dvmenvironmentsset_id = set.id;
Insert(option);
}
}
Commit();
*/
}
public Vector<Pair<String, String>> getTasksParameters(DVMSettings dvmSettings_in) { public Vector<Pair<String, String>> getTasksParameters(DVMSettings dvmSettings_in) {
//уравниваем количество наборов опций и окружений и сопоставляем 1 к 1 //уравниваем количество наборов опций и окружений и сопоставляем 1 к 1
Vector<Pair<String, String>> res = new Vector<>(); Vector<Pair<String, String>> res = new Vector<>();
@@ -739,4 +692,6 @@ public class TestsDatabase extends SQLiteDatabase {
} }
return res; return res;
} }
public void Patch() throws Exception {
}
} }

View File

@@ -177,6 +177,7 @@ public class SapforPackage_json implements Serializable {
} }
return comparison_root.mismatches_count; return comparison_root.mismatches_count;
} }
public void getVersionsFiles(SapforPackage package_in) { public void getVersionsFiles(SapforPackage package_in) {
//--- //---
//--- //---

View File

@@ -27,6 +27,8 @@ public class SapforVersion_json implements Serializable {
public String version = ""; public String version = "";
@Expose @Expose
public String description = ""; public String description = "";
@Expose
public SapforVersionState state = null;
//поля для отображения деревьев. //поля для отображения деревьев.
public File Home = null; public File Home = null;
public LinkedHashMap<String, ProjectFile> files = new LinkedHashMap<>(); public LinkedHashMap<String, ProjectFile> files = new LinkedHashMap<>();
@@ -39,8 +41,7 @@ public class SapforVersion_json implements Serializable {
public SapforTask task = null; //родная задача. Нужна для построения дерева версий. public SapforTask task = null; //родная задача. Нужна для построения дерева версий.
public db_project_info project = null; public db_project_info project = null;
//-- //--
public SapforVersionState state = null; public VersionComparisonState comparisonState = VersionComparisonState.Unknown;
public VersionComparisonState comparisonState = null;
//-- //--
public SapforVersion_json(String version_in, String description_in) { public SapforVersion_json(String version_in, String description_in) {
version = version_in; version = version_in;
@@ -52,7 +53,6 @@ public class SapforVersion_json implements Serializable {
} }
public void getFiles(File configurationRoot) { public void getFiles(File configurationRoot) {
//-- //--
state = SapforVersionState.Empty;
comparisonState = VersionComparisonState.Unknown; comparisonState = VersionComparisonState.Unknown;
//-- //--
String relativePath = Utils_.isWindows() ? Utils_.toW(version) : version; String relativePath = Utils_.isWindows() ? Utils_.toW(version) : version;
@@ -70,7 +70,37 @@ public class SapforVersion_json implements Serializable {
} }
} }
} }
}
parse_out = new ProjectFile(Paths.get(Home.getAbsolutePath(), Constants.data, Constants.parse_out_file).toFile());
parse_err = new ProjectFile(Paths.get(Home.getAbsolutePath(), Constants.data, Constants.parse_err_file).toFile());
out = new ProjectFile(Paths.get(Home.getAbsolutePath(), Constants.data, Constants.out_file).toFile());
err = new ProjectFile(Paths.get(Home.getAbsolutePath(), Constants.data, Constants.err_file).toFile());
//--
Vector<File> out_files = new Vector<>();
out_files.add(parse_out.file);
out_files.add(parse_err.file);
out_files.add(out.file);
out_files.add(err.file);
}
public void getFilesAndCheckState(File configurationRoot) {
//--
state = SapforVersionState.Empty;
//--
String relativePath = Utils_.isWindows() ? Utils_.toW(version) : version;
Home = Paths.get(configurationRoot.getAbsolutePath(), relativePath).toFile();
files = new LinkedHashMap<>();
//--
File[] files_ = Home.listFiles();
if (files_ != null) {
for (File file : files_) {
if (file.isFile()) {
ProjectFile projectFile = new ProjectFile(file);
if (!projectFile.fileType.equals(FileType.forbidden)
) {
files.put(projectFile.file.getName(), projectFile);
}
}
}
if (!files.isEmpty()) if (!files.isEmpty())
state = SapforVersionState.Normal; state = SapforVersionState.Normal;
} }
@@ -84,7 +114,7 @@ public class SapforVersion_json implements Serializable {
out_files.add(parse_err.file); out_files.add(parse_err.file);
out_files.add(out.file); out_files.add(out.file);
out_files.add(err.file); out_files.add(err.file);
//--
for (File file : out_files) { for (File file : out_files) {
try { try {
if (file.exists()) { if (file.exists()) {

View File

@@ -10,6 +10,7 @@ import _VisualDVM.TestingSystem.Common.Configuration.Configuration;
import _VisualDVM.TestingSystem.Common.TasksPackageState; import _VisualDVM.TestingSystem.Common.TasksPackageState;
import _VisualDVM.TestingSystem.Common.TestingPackage.TestingPackage; import _VisualDVM.TestingSystem.Common.TestingPackage.TestingPackage;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforPackage_json; import _VisualDVM.TestingSystem.SAPFOR.Json.SapforPackage_json;
import _VisualDVM.TestingSystem.SAPFOR.Json.SapforVersion_json;
import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration; import _VisualDVM.TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackageConfiguration.SapforPackageConfiguration; import _VisualDVM.TestingSystem.SAPFOR.SapforPackageConfiguration.SapforPackageConfiguration;
import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask; import _VisualDVM.TestingSystem.SAPFOR.SapforTask.SapforTask;
@@ -17,6 +18,7 @@ import _VisualDVM.TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
import com.sun.org.glassfish.gmbal.Description; import com.sun.org.glassfish.gmbal.Description;
import java.io.File; import java.io.File;
import java.nio.file.Paths;
import java.util.Vector; import java.util.Vector;
public class SapforPackage extends TestingPackage<SapforPackage_json> { public class SapforPackage extends TestingPackage<SapforPackage_json> {
public int sapforId = CommonConstants.Nan; // так как сапфор на машине. public int sapforId = CommonConstants.Nan; // так как сапфор на машине.
@@ -106,8 +108,21 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
if (!task.state.equals(TaskState.Done)) if (!task.state.equals(TaskState.Done))
bad++; bad++;
else good++; else good++;
//--
Vector<SapforVersion_json> all_versions= new Vector<>();
all_versions.addAll(task.versions);
all_versions.addAll(task.variants);
for (SapforVersion_json version_json: all_versions){
File configurationRoot = Utils_.getFile(
getLocalWorkspace().getAbsolutePath(),
String.valueOf(task.set_id),
String.valueOf(task.sapfor_configuration_id));
version_json.getFilesAndCheckState(configurationRoot);
}
//--
} }
state = (bad > 0) ? TasksPackageState.DoneWithErrors : TasksPackageState.Done; saveJson();
state = ((bad > 0) ||(mismatchesCount>0)) ? TasksPackageState.DoneWithErrors : TasksPackageState.Done;
double percent = (((double) (good)) / tasksCount) * 100.0; double percent = (((double) (good)) / tasksCount) * 100.0;
description = "Выполнено на " + ((int) percent) + "%\n" + description = "Выполнено на " + ((int) percent) + "%\n" +
"Всего задач: " + tasksCount + ", из них с ошибками " + bad; "Всего задач: " + tasksCount + ", из них с ошибками " + bad;

View File

@@ -130,7 +130,9 @@ public class SapforPackagesForm extends RDataSetControlForm<SapforPackage> {
addSeparator(); addSeparator();
addPasses(PassCode.AbortSapforPackage); addPasses(PassCode.AbortSapforPackage);
addSeparator(); addSeparator();
addPasses(PassCode.CompareSapforPackageToEthalon, PassCode.JoinSapforTestingVersionsToGroup); addPasses(PassCode.CompareSapforPackageToEthalon, PassCode.JoinSapforTestingVersionsToGroup
// PassCode.RefreshSapforPackageResults
);
addSeparator(); addSeparator();
addPasses(PassCode.DeleteSapforPackage); addPasses(PassCode.DeleteSapforPackage);
} }

View File

@@ -242,14 +242,6 @@ public class SapforPackagesComparisonForm {
} }
@Override @Override
protected void body() throws Exception { protected void body() throws Exception {
//теперь сравниваем задачи
System.out.println("serial comparison");
for (SapforTask task1 : package1.package_json.tasks) {
SapforTask task2 = package2.package_json.getTaskByKey(task1.getUniqueKey());
task1.checkMatch(task2);
}
System.out.println("DONE");
/*
ForkJoinPool commonPool = ForkJoinPool.commonPool(); ForkJoinPool commonPool = ForkJoinPool.commonPool();
System.out.println("parallel comparison"); System.out.println("parallel comparison");
commonPool.submit(() -> commonPool.submit(() ->
@@ -259,7 +251,7 @@ public class SapforPackagesComparisonForm {
task1.checkMatch(task2); task1.checkMatch(task2);
}) })
).join(); ).join();
*/ System.out.println("done");
package1.package_json.buildComparisonTree(package1); package1.package_json.buildComparisonTree(package1);
package2.package_json.buildComparisonTree(package2); package2.package_json.buildComparisonTree(package2);
} }