Перенос кнопки синхронизации на панель тестирования. Исправление бага с формированием пакета.

This commit is contained in:
2023-12-18 15:44:48 +03:00
parent ed2222c163
commit ef65bb2439
24 changed files with 315 additions and 79 deletions

View File

@@ -9,7 +9,8 @@ import Visual_DVM_2021.Passes.PassCode_2021;
import javax.swing.*;
public class GroupsMenuBar extends DataMenuBar {
public GroupsMenuBar() {
super("группы", PassCode_2021.SynchronizeTests, PassCode_2021.ConvertCorrectnessTests,
super("группы",
PassCode_2021.ConvertCorrectnessTests,
PassCode_2021.PublishGroup,
PassCode_2021.CreateGroupFromDirectory,
PassCode_2021.CreateGroupFromFiles,

View File

@@ -1,4 +1,5 @@
package TestingSystem.Common;
import Common.Constants;
import Common.Utils.Utils;
import Repository.EmailMessage;
import Repository.Server.ServerCode;
@@ -135,14 +136,15 @@ public abstract class TestingPlanner<P extends TestingPackage> {
} else {
try {
if (Connect()) {
if ((boolean) ServerCommand(getCheckIfNeedsKillCode(), testingPackage.id)) {
int ptk_id = (int) ServerCommand(getCheckIfNeedsKillCode(), testingPackage.id);
if (ptk_id!= Constants.Nan) {
Print("package " + testingPackage.id + " NEEDS TO KILL");
Kill();
UpdatePackageState(TasksPackageState.Aborted);
EmailPackage();
ServerCommand(ServerCode.DeleteObjectByPK, ptk_id);
} else {
Session();
}
}
} catch (Exception ex) {

View File

@@ -408,27 +408,25 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
}
private void DVMPackageNeedsKill() {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = Constants.Nan;
int packageId = (int) request.object;
boolean res_ = false;
for (TestingPackageToKill packageToKill : db.testingPackagesToKill.Data.values()) {
if ((packageToKill.packageId == packageId) && (packageToKill.type == 0)) {
res_ = true;
response.object = packageToKill.id;
break;
}
}
response.object = res_;
}
private void SapforPackageNeedsKill() throws Exception {
response = new ServerExchangeUnit_2021(ServerCode.OK);
response.object = Constants.Nan;
int packageId = (int) request.object;
boolean res_ = false;
for (TestingPackageToKill packageToKill : db.testingPackagesToKill.Data.values()) {
if ((packageToKill.packageId == packageId) && (packageToKill.type == 1)) {
res_ = true;
response.object = packageToKill.id;
break;
}
}
response.object = res_;
}
private void DownloadDVMPackage() throws Exception {
int dvmPackage_id = (int) request.object;
@@ -468,6 +466,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
zipFolderPass.Do(workspace.getAbsolutePath(), results_zip.getAbsolutePath());
if (results_zip.exists())
response.object = Utils.packFile(results_zip);
else throw new RepositoryRefuseException("Не удалось заархивировать пакет тестирования SAPFOR с ключом "+ sapforPackage_id);
else
throw new RepositoryRefuseException("Не удалось заархивировать пакет тестирования SAPFOR с ключом " + sapforPackage_id);
}
}

View File

@@ -25,7 +25,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
}
@Override
public File getHomeDirectory() {
return Global.PackagesDirectory;
return Global.DVMPackagesDirectory;
}
public DVMPackage(DVMPackage p) {
super(p);

View File

@@ -41,7 +41,7 @@ public class DVMPackageDBTable extends iDBTable<DVMPackage> {
@Override
public void ShowCurrentObject() throws Exception {
super.ShowCurrentObject();
Global.testingServer.db.dvmRunTasks.ShowNoPackage();
Global.testingServer.db.dvmRunTasks.ShowDVMPackage(getCurrent());
UI.getMainWindow().getTestingWindow().DropTestRunTasksComparison();
}
@Override

View File

@@ -116,7 +116,7 @@ public class DVMRunTask extends DVMTask {
}
public File getCompilationTaskWorkspace() {
return Paths.get(
Global.PackagesDirectory.getAbsolutePath(),
Global.DVMPackagesDirectory.getAbsolutePath(),
String.valueOf(dvm_package_id),
"results",
String.valueOf(dvmcompilationtask_id)

View File

@@ -212,9 +212,6 @@ public class DVMRunTasksSet extends DataSet<Integer, DVMRunTask> {
public void ShowNoPackage() {
ClearUI();
Data.clear();
if (target != null) {
target.destructor();
target = null;
}
target = null;
}
}

View File

@@ -75,7 +75,7 @@ public class DVMTask extends iDBObject {
}
public File getLocalWorkspace() {
return
Paths.get(Global.PackagesDirectory.getAbsolutePath(),
Paths.get(Global.DVMPackagesDirectory.getAbsolutePath(),
String.valueOf(dvm_package_id),
"results",
String.valueOf(id)).toFile();

View File

@@ -284,9 +284,11 @@ public class DVMTestingPlanner extends TestingPlanner<DVMPackage> {
}
//todo привязать это к настройкам, чтобы можно было включать/выключать удаление.
//получили результат. теперь уничтожаем папку пакета на целевой машине.
/*
if ( user.connection.Exists(packageRemoteWorkspace)){
user.connection.RMDIR(packageRemoteWorkspace.full_name);
}
*/
}
@Override
protected void AnalyseResults() throws Exception {
@@ -372,7 +374,7 @@ public class DVMTestingPlanner extends TestingPlanner<DVMPackage> {
user = users.get(testingPackage.user_name);
//--
packageRemoteWorkspace = new RemoteFile(user.workspace + "/tests", String.valueOf(testingPackage.id), true);
packageLocalWorkspace = new File(Global.PackagesDirectory, String.valueOf(testingPackage.id));
packageLocalWorkspace = new File(Global.DVMPackagesDirectory, String.valueOf(testingPackage.id));
}
@Override
protected boolean Connect() {

View File

@@ -1,9 +1,16 @@
package TestingSystem.SAPFOR.Json;
import GlobalData.Tasks.TaskState;
import TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import TestingSystem.SAPFOR.SapforTask.MatchState;
import TestingSystem.SAPFOR.SapforTask.SapforTask;
import TestingSystem.SAPFOR.SapforTasksPackage.UI.PackageSummary;
import TestingSystem.SAPFOR.SapforTasksPackage.UI.*;
import com.google.gson.annotations.Expose;
import javax.swing.tree.DefaultMutableTreeNode;
import java.io.File;
import java.io.Serializable;
import java.util.Comparator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Vector;
public class SapforTasksPackage_json implements Serializable {
@@ -18,4 +25,194 @@ public class SapforTasksPackage_json implements Serializable {
//---
@Expose
public List<SapforTask> tasks = new Vector<>();
//-
public PackageSummary root = null;
public PackageSummary comparison_root = null;
public LinkedHashMap<String, SapforTask> allTasks = new LinkedHashMap<>();
public LinkedHashMap<TaskState, LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>>> sortedTasks = new LinkedHashMap<>();
//-- задачи, отсортированные для сравнения.
public LinkedHashMap<MatchState, LinkedHashMap<TaskState, LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>>>> comparisonSortedTasks = new LinkedHashMap<>();
//----
//---------
public void DropComparison() {
comparison_root = null;
comparisonSortedTasks.clear();
for (SapforTask task : allTasks.values())
task.match = MatchState.NotMatch;
}
public void SortTasks() {
sortedTasks.clear();
//--
for (TaskState state : TaskState.values()) {
LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>> configuration_tasks = new LinkedHashMap<>();
sortedTasks.put(state, configuration_tasks);
//--
for (SapforTask task : tasks) {
if (task.state.equals(state)) {
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = null;
if (configuration_tasks.containsKey(task.sapfor_configuration_id)) {
groups_tasks = configuration_tasks.get(task.sapfor_configuration_id);
} else {
groups_tasks = new LinkedHashMap<>();
configuration_tasks.put(task.sapfor_configuration_id, groups_tasks);
}
Vector<SapforTask> tasks_ = null;
if (groups_tasks.containsKey(task.group_description)) {
tasks_ = groups_tasks.get(task.group_description);
} else {
tasks_ = new Vector<>();
groups_tasks.put(task.group_description, tasks_);
}
tasks_.add(task);
}
}
//--
}
//--
for (TaskState state : TaskState.values()) {
LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>> configuration_tasks = sortedTasks.get(state);
for (int configuration_id : configuration_tasks.keySet()) {
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = configuration_tasks.get(configuration_id);
for (String group : groups_tasks.keySet()) {
Vector<SapforTask> tasks_ = groups_tasks.get(group);
tasks_.sort(Comparator.comparing(SapforTask::getUniqueKey));
}
}
}
}
public void SortTasksForComparison() {
comparisonSortedTasks.clear();
//раскидать задачи по состояниям, конфигам, группам
for (MatchState matchState : MatchState.values()) {
LinkedHashMap<TaskState, LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>>> state_tasks = new LinkedHashMap<>();
comparisonSortedTasks.put(matchState, state_tasks);
//--
for (TaskState state : TaskState.values()) {
LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>> configuration_tasks = new LinkedHashMap<>();
state_tasks.put(state, configuration_tasks);
//--
for (SapforTask task : tasks) {
if (task.match.equals(matchState) && task.state.equals(state)) {
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = null;
if (configuration_tasks.containsKey(task.sapfor_configuration_id)) {
groups_tasks = configuration_tasks.get(task.sapfor_configuration_id);
} else {
groups_tasks = new LinkedHashMap<>();
configuration_tasks.put(task.sapfor_configuration_id, groups_tasks);
}
Vector<SapforTask> tasks = null;
if (groups_tasks.containsKey(task.group_description)) {
tasks = groups_tasks.get(task.group_description);
} else {
tasks = new Vector<>();
groups_tasks.put(task.group_description, tasks);
}
tasks.add(task);
}
}
}
//--
}
//рассортировать задачи в группах по ключам.
for (MatchState matchState : MatchState.values()) {
LinkedHashMap<TaskState, LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>>> state_tasks = comparisonSortedTasks.get(matchState);
for (TaskState state : TaskState.values()) {
LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>> configuration_tasks = state_tasks.get(state);
for (int configuration_id : configuration_tasks.keySet()) {
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = configuration_tasks.get(configuration_id);
for (String group : groups_tasks.keySet()) {
Vector<SapforTask> tasks_ = groups_tasks.get(group);
tasks_.sort(Comparator.comparing(SapforTask::getUniqueKey));
}
}
}
}
}
public void buildTree(SapforPackage package_in) {
root = new PackageSummary();
//---
for (TaskState state : sortedTasks.keySet()) {
//--
StateSummary stateSummary = new StateSummary(state);
//--
LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>> tasksByConfigurations = sortedTasks.get(state);
for (int configuration_id : tasksByConfigurations.keySet()) {
//--
DefaultMutableTreeNode configurationNode = null;
//--
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = tasksByConfigurations.get(configuration_id);
for (String group : groups_tasks.keySet()) {
//--
GroupSummary groupSummary = new GroupSummary(group);
//--
for (SapforTask task : groups_tasks.get(group)) {
//--
stateSummary.count++;
root.count++;
//--
if (configurationNode == null) {
configurationNode = new ConfigurationSummary(configuration_id, task);
}
//--
groupSummary.add(task.getVersionsTree(new File(package_in.getLocalWorkspace(), String.valueOf(configuration_id))));
}
if (configurationNode != null)
configurationNode.add(groupSummary);
}
stateSummary.add(configurationNode);
}
if (stateSummary.count > 0) {
root.add(stateSummary);
}
}
}
public void buildComparisonTree(SapforPackage package_in) {
comparison_root = new PackageSummary();
for (MatchState match_state : comparisonSortedTasks.keySet()) {
//--
MatchesSummary matchesSummary = new MatchesSummary(match_state);
//---
LinkedHashMap<TaskState, LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>>> task_states = comparisonSortedTasks.get(match_state);
//---
for (TaskState state : task_states.keySet()) {
//--
StateSummary stateSummary = new StateSummary(state);
//--
LinkedHashMap<Integer, LinkedHashMap<String, Vector<SapforTask>>> tasksByConfigurations = task_states.get(state);
for (int configuration_id : tasksByConfigurations.keySet()) {
//--
DefaultMutableTreeNode configurationNode = null;
//--
LinkedHashMap<String, Vector<SapforTask>> groups_tasks = tasksByConfigurations.get(configuration_id);
for (String group : groups_tasks.keySet()) {
//--
GroupSummary groupSummary = new GroupSummary(group);
//--
for (SapforTask task : groups_tasks.get(group)) {
//--
stateSummary.count++;
matchesSummary.count++;
comparison_root.count++;
//--
if (configurationNode == null) {
configurationNode = new ConfigurationSummary(configuration_id, task);
}
//--
groupSummary.add(task.getVersionsTree(new File(package_in.getLocalWorkspace(), String.valueOf(configuration_id))));
}
if (configurationNode != null)
configurationNode.add(groupSummary);
}
stateSummary.add(configurationNode);
}
if (stateSummary.count > 0) {
matchesSummary.add(stateSummary);
}
}
//---
if (matchesSummary.count > 0) {
comparison_root.add(matchesSummary);
}
}
}
}