форматирование вывода результатов тестирования в почте.

This commit is contained in:
2023-10-21 02:47:21 +03:00
parent a334d55522
commit 7fac46b249
10 changed files with 85 additions and 23 deletions

9
.idea/workspace.xml generated
View File

@@ -7,10 +7,15 @@
</component>
<component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/SapforTestingSystem/Json/SapforTest_json.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/ProjectData/Messages/Message.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/ProjectData/Messages/Message.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Current.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Current.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Common/Utils/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Utils/Utils.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/Json/SapforTasksPackage_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/Json/SapforTasksPackage_json.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/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackageSupervisor/SapforTasksPackageSupervisor.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />

View File

@@ -386,7 +386,7 @@ public enum Current {
case ServerSapfor:
return "тестовая версия SAPFOR";
case SapforTasksPackage:
return "сценарий SAPFOR";
return "пакет задач SAPFOR";
case SapforProfile:
return "Профиль SAPFOR";
case SapforProfileSetting:

View File

@@ -79,6 +79,9 @@ public class Utils {
public static String Brackets(Object o) {
return "[" + o.toString() + "]";
}
public static String Bold(Object o) {
return "<b>" + o.toString() + "</b>";
}
public static String RBrackets(Object o) {
return "(" + o.toString() + ")";
}

View File

@@ -9,7 +9,7 @@ public class SapforTasksPackage_json {
@Expose
public String sapfor_drv = ""; //файл с сапфором. Имя уникально для сценария.
@Expose
public List<String> tests = new Vector<>();
public List<SapforTest_json> tests = new Vector<>();
@Expose
public List<SapforConfiguration_json> configurations = new Vector<>();
}

View File

@@ -0,0 +1,8 @@
package SapforTestingSystem.Json;
import com.google.gson.annotations.Expose;
public class SapforTest_json {
@Expose
public String test_description = "";
@Expose
public String group_description = "";
}

View File

@@ -5,6 +5,7 @@ import Common.Utils.Utils;
import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforTasksPackage_json;
import SapforTestingSystem.Json.SapforTasksResults_json;
import SapforTestingSystem.Json.SapforTest_json;
import SapforTestingSystem.PerformSapforTask;
import SapforTestingSystem.SapforTask.SapforTask;
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
@@ -26,10 +27,11 @@ public class PackageModeSupervisor extends ThreadsPlanner {
File sapfor_drv = new File(Global.Home, package_json.sapfor_drv);
setMaxKernels(package_json.kernels);
for (SapforConfiguration_json sapforConfiguration_json : package_json.configurations) {
for (String testName : package_json.tests) {
for (SapforTest_json test : package_json.tests) {
//--- чтобы было можно на нее сослаться после выполнения всех нитей.
SapforTask task = new SapforTask();
task.test_description = testName;
task.group_description = test.group_description;
task.test_description = test.test_description;
task.flags = sapforConfiguration_json.flags;
task.sapfor_configuration_id = sapforConfiguration_json.id;
results_json.tasks.add(task);

View File

@@ -1,6 +1,7 @@
package SapforTestingSystem.SapforTask;
import Common.Constants;
import Common.Database.DBObject;
import Common.Utils.Utils;
import GlobalData.Tasks.TaskState;
import SapforTestingSystem.Json.SapforVersion_json;
import com.google.gson.annotations.Expose;
@@ -21,6 +22,9 @@ public class SapforTask extends DBObject {
public String test_description = "";
@Description("DEFAULT ''")
@Expose
public String group_description = "";
@Description("DEFAULT ''")
@Expose
public String flags = "";
@Description("DEFAULT ''")
@Expose
@@ -62,7 +66,7 @@ public class SapforTask extends DBObject {
public String getVersionsChain(){
Vector<String> versionsLines = new Vector<>();
for (int i=1; i< versions.size(); ++i ){
versionsLines.add(versions.get(i).description);
versionsLines.add(Utils.Brackets(versions.get(i).description));
}
return String.join("", versionsLines);
}

View File

@@ -25,6 +25,7 @@ public class SapforTasksPackage extends nDBObject {
public int kernels = 1; //количество потоков.
@Description("DEFAULT 'TestsSynchronize'")
public TasksPackageState state = TasksPackageState.TestsSynchronize;
@Description("DEFAULT ''")
public String testsIds = "";
@Description("DEFAULT ''")

View File

@@ -7,9 +7,11 @@ import Common.Utils.Utils;
import Repository.Server.ServerCode;
import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforTasksPackage_json;
import SapforTestingSystem.Json.SapforTest_json;
import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.Group.Group;
import TestingSystem.TasksPackage.TasksPackageState;
import TestingSystem.Test.Test;
import TestingSystem.TestingPlanner;
@@ -36,11 +38,24 @@ public class SapforTasksPackageSupervisor {
Vector<Object> configurations_ = (Vector<Object>) planner.ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(SapforConfiguration.class, configurationsIds));
LinkedHashMap<String, Test> tests = new LinkedHashMap<>();
LinkedHashMap<String, SapforConfiguration> configurations = new LinkedHashMap<>();
Vector<String> groupsIds = new Vector<>();
LinkedHashMap<String, Group> groups = new LinkedHashMap<>();
//--
for (Object o : tests_) {
Test test = (Test) o;
System.out.println(test.description);
tests.put(test.id, test);
if (!groupsIds.contains(test.group_id))
groupsIds.add(test.group_id);
}
//--
Vector<Object> groups_ = (Vector<Object>) planner.ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(Group.class, groupsIds));
for (Object o : groups_) {
Group group = (Group) o;
System.out.println(group.description);
groups.put(group.id, group);
}
//--
for (Object o : configurations_) {
SapforConfiguration sapforConfiguration = (SapforConfiguration) o;
System.out.println(sapforConfiguration.id);
@@ -49,8 +64,12 @@ public class SapforTasksPackageSupervisor {
//--
SapforTasksPackage_json package_json = new SapforTasksPackage_json();
package_json.kernels = sapforTasksPackage.kernels;
for (String test_id : testsIds)
package_json.tests.add(tests.get(test_id).description);
for (Test test : tests.values()) {
SapforTest_json test_json = new SapforTest_json();
test_json.test_description = test.description;
test_json.group_description = groups.get(test.group_id).description;
package_json.tests.add(test_json);
}
//создание рабочего пространства для пакетного режима
File packageWorkspace = new File(Global.SapforPackagesDirectory, String.valueOf(sapforTasksPackage.id));
Utils.CheckAndCleanDirectory(packageWorkspace);

View File

@@ -245,22 +245,28 @@ public class TestingPlanner {
File results_json_file = new File(sapforTasksPackage.workspace, Constants.results_json);
if (results_json_file.exists()) {
SapforTasksResults_json results_json = (SapforTasksResults_json) Utils.jsonFromFile(results_json_file, SapforTasksResults_json.class);
result_lines.add("");
result_lines.add("Всего задач: " + results_json.tasks.size());
LinkedHashMap<TaskState, LinkedHashMap<String, Vector<SapforTask>>> sortedTasks = new LinkedHashMap<>();
LinkedHashMap<TaskState, LinkedHashMap<String, LinkedHashMap<String, Vector<SapforTask>>>> sortedTasks = new LinkedHashMap<>();
//рассортировать задачи по конфигурациям.
for (TaskState state : TaskState.values()) {
LinkedHashMap<String, Vector<SapforTask>> tasksByFlags = new LinkedHashMap<>();
LinkedHashMap<String, LinkedHashMap<String, Vector<SapforTask>>> tasksByFlags = new LinkedHashMap<>();
sortedTasks.put(state, tasksByFlags);
//--
for (SapforTask task : results_json.tasks) {
if (task.state.equals(state)) {
Vector<SapforTask> tasks = null;
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = null;
if (tasksByFlags.containsKey(task.flags)) {
tasks = tasksByFlags.get(task.flags);
groups_tasks = tasksByFlags.get(task.flags);
} else {
groups_tasks = new LinkedHashMap<>();
tasksByFlags.put(task.flags, groups_tasks);
}
Vector<SapforTask> tasks = null;
if (groups_tasks.containsKey(task.group_description)) {
tasks = groups_tasks.get(task.group_description);
} else {
tasks = new Vector<>();
tasksByFlags.put(task.flags, tasks);
groups_tasks.put(task.group_description, tasks);
}
tasks.add(task);
}
@@ -268,22 +274,36 @@ public class TestingPlanner {
}
//--
for (TaskState state : sortedTasks.keySet()) {
LinkedHashMap<String, Vector<SapforTask>> tasksByFlags = sortedTasks.get(state);
LinkedHashMap<String, LinkedHashMap<String, Vector<SapforTask>>> tasksByFlags = sortedTasks.get(state);
if (!tasksByFlags.isEmpty()) {
int count = 0;
if (state.equals(TaskState.DoneWithErrors)) {
Vector<String> tasksLines = new Vector<>();
Vector<String> flagsLines = new Vector<>();
for (String flags : tasksByFlags.keySet()) {
Vector<SapforTask> tasks = tasksByFlags.get(flags);
count += tasks.size();
for (SapforTask task : tasks)
tasksLines.add(task.test_description + " " + flags + " " + task.getVersionsChain());
LinkedHashMap<String, Vector<SapforTask>> tasksByGroups = tasksByFlags.get(flags);
for (String group : tasksByGroups.keySet()) {
Vector<SapforTask> tasks = tasksByGroups.get(group);
flagsLines.add("Группа " + group + ": "+tasks.size());
count += tasks.size();
for (SapforTask task : tasks)
flagsLines.add(
"тест: " +
Utils.Brackets(task.test_description) + " " +
"флаги: "
+ Utils.Brackets(flags) + " " +
"версии: " +
task.getVersionsChain());
}
}
result_lines.add(state.getDescription() + " :" + count);
result_lines.addAll(tasksLines);
result_lines.addAll(flagsLines);
} else {
for (String flags : tasksByFlags.keySet()) {
count += tasksByFlags.get(flags).size();
LinkedHashMap<String, Vector<SapforTask>> tasksByGroups = tasksByFlags.get(flags);
for (String group : tasksByGroups.keySet()) {
Vector<SapforTask> tasks = tasksByGroups.get(group);
count += tasks.size();
}
}
result_lines.add(state.getDescription() + " :" + count);
}