черновик сравнения задач.
This commit is contained in:
2
.idea/workspace.xml
generated
2
.idea/workspace.xml
generated
@@ -8,8 +8,6 @@
|
||||
<component name="ChangeListManager">
|
||||
<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$/src/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Server/ServerCode.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/PackageModeSupervisor/PackageModeSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/PackageModeSupervisor/PackageModeSupervisor.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTask/SapforTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTask/SapforTask.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" afterDir="false" />
|
||||
</list>
|
||||
|
||||
@@ -6,7 +6,10 @@ import GlobalData.Tasks.TaskState;
|
||||
import SapforTestingSystem.Json.SapforVersion_json;
|
||||
import com.google.gson.annotations.Expose;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
public class SapforTask extends DBObject {
|
||||
@@ -81,10 +84,48 @@ public class SapforTask extends DBObject {
|
||||
}
|
||||
return String.join("→", versionsLines);
|
||||
}
|
||||
public static boolean compareVersionsFiles(SapforVersion_json version1, SapforVersion_json version2, List<String> files) throws Exception {
|
||||
for (String fileName : files) {
|
||||
File file1 = new File(version1.version, fileName);
|
||||
if (!file1.exists()) return false;
|
||||
File file2 = new File(version2.version, fileName);
|
||||
if (!file2.exists()) return false;
|
||||
String text1 = FileUtils.readFileToString(file1, Charset.defaultCharset());
|
||||
String text2 = FileUtils.readFileToString(file2, Charset.defaultCharset());
|
||||
if (!text1.equals(text2))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
//должны совпасть им теста, флаги, и коды
|
||||
public boolean isComparable(SapforTask task) throws Exception {
|
||||
return test_description.equalsIgnoreCase(task.test_description) &&
|
||||
flags.equalsIgnoreCase(task.flags) &&
|
||||
codes.equalsIgnoreCase(task.codes);
|
||||
}
|
||||
public boolean Compare(SapforTask task, Vector<String> comparisonLog) throws Exception {
|
||||
//1. сравнить списки файлов. без учета порядка.
|
||||
if (files.size() != task.files.size())
|
||||
return false;
|
||||
for (String file1 : files) {
|
||||
if (!task.files.contains(file1)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
//2. сравнить состояния.
|
||||
if (!state.equals(task.state))
|
||||
return false;
|
||||
//3. сравнить цепочки версий (?)
|
||||
if (!getVersionsChain().equalsIgnoreCase(task.getVersionsChain()))
|
||||
return false;
|
||||
//4. сравнить версии. уже знаем что порядок преобразований идентичен и набор файлов одинаков.
|
||||
// первая всегда исходная. поэтому не берется.
|
||||
for (int i = 1; i < versions.size(); ++i) {
|
||||
SapforVersion_json version1 = versions.get(i);
|
||||
SapforVersion_json version2 = task.versions.get(i);
|
||||
//--
|
||||
if (!compareVersionsFiles(version1, version2, files)) return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -314,30 +314,47 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
return (SapforTasksResults_json) Utils.jsonFromFile(
|
||||
results_file, SapforTasksResults_json.class);
|
||||
}
|
||||
public String CompareSapforPackages(SapforTasksPackage package1, SapforTasksPackage package2) throws Exception {
|
||||
String res = "";
|
||||
|
||||
|
||||
|
||||
//надо в другое место.
|
||||
public Vector<String> CompareSapforPackages(SapforTasksPackage package1, SapforTasksPackage package2) throws Exception {
|
||||
Vector<String> comparisonLog = new Vector<>();
|
||||
// чтобы сравнивать. должен быть идентичный список тестов. (без учета последовательности)
|
||||
// идентичный набор проходов (с учетом последовательности)
|
||||
//идентичный набор флагов (?) без учета последовательности.
|
||||
// то есть должны отличаться только тестируемые версии САПФОР.
|
||||
SapforTasksResults_json results1_json = getSapforPackageResults(package1);
|
||||
SapforTasksResults_json results2_json = getSapforPackageResults(package2);
|
||||
if (results1_json.tasks.size()!=results2_json.tasks.size())
|
||||
throw new RepositoryRefuseException("В пакетах разное число задач.");
|
||||
if (results1_json.tasks.size() != results2_json.tasks.size()) {
|
||||
comparisonLog.add("Количество задач в пакетах не совпадает.");
|
||||
comparisonLog.add(package1.id + ": " + results1_json.tasks.size() + "/" + package2.id + ": " + results2_json.tasks.size());
|
||||
return comparisonLog;
|
||||
}
|
||||
//подходит если все задачи из первого пакета содержатся во втором, и размер одинаковый.
|
||||
Vector<SapforTask> sortedTasks2 = new Vector<>();
|
||||
for (SapforTask task1 : results1_json.tasks) {
|
||||
//на
|
||||
boolean match = false;
|
||||
for (SapforTask task2: results2_json.tasks){
|
||||
for (SapforTask task2 : results2_json.tasks) {
|
||||
if (task1.isComparable(task2)) {
|
||||
match = true;
|
||||
sortedTasks2.add(task2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!match)
|
||||
throw new RepositoryRefuseException("Задачи в пакетах не совпадают!");
|
||||
if (!match) {
|
||||
comparisonLog.add("Найдена не совпадающая задача.");
|
||||
return comparisonLog;
|
||||
}
|
||||
}
|
||||
return "";
|
||||
|
||||
for (SapforTask task1: results1_json.tasks){
|
||||
for (SapforTask task2: sortedTasks2){
|
||||
task1.Compare(task2, comparisonLog);
|
||||
}
|
||||
}
|
||||
return comparisonLog;
|
||||
}
|
||||
@Override
|
||||
protected void Session() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user