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

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>
<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/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$/.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/Common/Current.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Current.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/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/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" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />

View File

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

View File

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

View File

@@ -9,7 +9,7 @@ public class SapforTasksPackage_json {
@Expose @Expose
public String sapfor_drv = ""; //файл с сапфором. Имя уникально для сценария. public String sapfor_drv = ""; //файл с сапфором. Имя уникально для сценария.
@Expose @Expose
public List<String> tests = new Vector<>(); public List<SapforTest_json> tests = new Vector<>();
@Expose @Expose
public List<SapforConfiguration_json> configurations = new Vector<>(); 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.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforTasksPackage_json; import SapforTestingSystem.Json.SapforTasksPackage_json;
import SapforTestingSystem.Json.SapforTasksResults_json; import SapforTestingSystem.Json.SapforTasksResults_json;
import SapforTestingSystem.Json.SapforTest_json;
import SapforTestingSystem.PerformSapforTask; import SapforTestingSystem.PerformSapforTask;
import SapforTestingSystem.SapforTask.SapforTask; import SapforTestingSystem.SapforTask.SapforTask;
import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner; import SapforTestingSystem.ThreadsPlanner.ThreadsPlanner;
@@ -26,10 +27,11 @@ public class PackageModeSupervisor extends ThreadsPlanner {
File sapfor_drv = new File(Global.Home, package_json.sapfor_drv); File sapfor_drv = new File(Global.Home, package_json.sapfor_drv);
setMaxKernels(package_json.kernels); setMaxKernels(package_json.kernels);
for (SapforConfiguration_json sapforConfiguration_json : package_json.configurations) { 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(); 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.flags = sapforConfiguration_json.flags;
task.sapfor_configuration_id = sapforConfiguration_json.id; task.sapfor_configuration_id = sapforConfiguration_json.id;
results_json.tasks.add(task); results_json.tasks.add(task);

View File

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

View File

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

View File

@@ -7,9 +7,11 @@ import Common.Utils.Utils;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import SapforTestingSystem.Json.SapforConfiguration_json; import SapforTestingSystem.Json.SapforConfiguration_json;
import SapforTestingSystem.Json.SapforTasksPackage_json; import SapforTestingSystem.Json.SapforTasksPackage_json;
import SapforTestingSystem.Json.SapforTest_json;
import SapforTestingSystem.SapforConfiguration.SapforConfiguration; import SapforTestingSystem.SapforConfiguration.SapforConfiguration;
import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface; import SapforTestingSystem.SapforConfiguration.SapforConfigurationInterface;
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage; import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.Group.Group;
import TestingSystem.TasksPackage.TasksPackageState; import TestingSystem.TasksPackage.TasksPackageState;
import TestingSystem.Test.Test; import TestingSystem.Test.Test;
import TestingSystem.TestingPlanner; import TestingSystem.TestingPlanner;
@@ -36,11 +38,24 @@ public class SapforTasksPackageSupervisor {
Vector<Object> configurations_ = (Vector<Object>) planner.ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(SapforConfiguration.class, configurationsIds)); Vector<Object> configurations_ = (Vector<Object>) planner.ServerCommand(ServerCode.GetObjectsCopiesByPK, "", new Pair<>(SapforConfiguration.class, configurationsIds));
LinkedHashMap<String, Test> tests = new LinkedHashMap<>(); LinkedHashMap<String, Test> tests = new LinkedHashMap<>();
LinkedHashMap<String, SapforConfiguration> configurations = new LinkedHashMap<>(); LinkedHashMap<String, SapforConfiguration> configurations = new LinkedHashMap<>();
Vector<String> groupsIds = new Vector<>();
LinkedHashMap<String, Group> groups = new LinkedHashMap<>();
//--
for (Object o : tests_) { for (Object o : tests_) {
Test test = (Test) o; Test test = (Test) o;
System.out.println(test.description); System.out.println(test.description);
tests.put(test.id, test); 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_) { for (Object o : configurations_) {
SapforConfiguration sapforConfiguration = (SapforConfiguration) o; SapforConfiguration sapforConfiguration = (SapforConfiguration) o;
System.out.println(sapforConfiguration.id); System.out.println(sapforConfiguration.id);
@@ -49,8 +64,12 @@ public class SapforTasksPackageSupervisor {
//-- //--
SapforTasksPackage_json package_json = new SapforTasksPackage_json(); SapforTasksPackage_json package_json = new SapforTasksPackage_json();
package_json.kernels = sapforTasksPackage.kernels; package_json.kernels = sapforTasksPackage.kernels;
for (String test_id : testsIds) for (Test test : tests.values()) {
package_json.tests.add(tests.get(test_id).description); 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)); File packageWorkspace = new File(Global.SapforPackagesDirectory, String.valueOf(sapforTasksPackage.id));
Utils.CheckAndCleanDirectory(packageWorkspace); Utils.CheckAndCleanDirectory(packageWorkspace);

View File

@@ -245,22 +245,28 @@ public class TestingPlanner {
File results_json_file = new File(sapforTasksPackage.workspace, Constants.results_json); File results_json_file = new File(sapforTasksPackage.workspace, Constants.results_json);
if (results_json_file.exists()) { if (results_json_file.exists()) {
SapforTasksResults_json results_json = (SapforTasksResults_json) Utils.jsonFromFile(results_json_file, SapforTasksResults_json.class); SapforTasksResults_json results_json = (SapforTasksResults_json) Utils.jsonFromFile(results_json_file, SapforTasksResults_json.class);
result_lines.add("");
result_lines.add("Всего задач: " + results_json.tasks.size()); 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()) { 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); sortedTasks.put(state, tasksByFlags);
//-- //--
for (SapforTask task : results_json.tasks) { for (SapforTask task : results_json.tasks) {
if (task.state.equals(state)) { if (task.state.equals(state)) {
Vector<SapforTask> tasks = null; LinkedHashMap<String, Vector<SapforTask>> groups_tasks = null;
if (tasksByFlags.containsKey(task.flags)) { 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 { } else {
tasks = new Vector<>(); tasks = new Vector<>();
tasksByFlags.put(task.flags, tasks); groups_tasks.put(task.group_description, tasks);
} }
tasks.add(task); tasks.add(task);
} }
@@ -268,22 +274,36 @@ public class TestingPlanner {
} }
//-- //--
for (TaskState state : sortedTasks.keySet()) { 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()) { if (!tasksByFlags.isEmpty()) {
int count = 0; int count = 0;
if (state.equals(TaskState.DoneWithErrors)) { if (state.equals(TaskState.DoneWithErrors)) {
Vector<String> tasksLines = new Vector<>(); Vector<String> flagsLines = new Vector<>();
for (String flags : tasksByFlags.keySet()) { for (String flags : tasksByFlags.keySet()) {
Vector<SapforTask> tasks = tasksByFlags.get(flags); LinkedHashMap<String, Vector<SapforTask>> tasksByGroups = tasksByFlags.get(flags);
count += tasks.size(); for (String group : tasksByGroups.keySet()) {
for (SapforTask task : tasks) Vector<SapforTask> tasks = tasksByGroups.get(group);
tasksLines.add(task.test_description + " " + flags + " " + task.getVersionsChain()); 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.add(state.getDescription() + " :" + count);
result_lines.addAll(tasksLines); result_lines.addAll(flagsLines);
} else { } else {
for (String flags : tasksByFlags.keySet()) { 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); result_lines.add(state.getDescription() + " :" + count);
} }