From 0092b708d33d3fdff3c0c4eac93e7dec4c64e774 Mon Sep 17 00:00:00 2001 From: 02090095 Date: Fri, 23 Feb 2024 21:34:01 +0300 Subject: [PATCH] =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=BC=D0=B5=D0=B6=D1=83?= =?UTF-8?q?=D1=82=D0=BE=D1=87=D0=BD=D1=8B=D0=B9.=20=D0=BD=D0=B5=D0=BC?= =?UTF-8?q?=D0=BD=D0=BE=D0=B3=D0=BE=20=D0=B8=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=BB=20=D0=BE=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=20=D1=81=D0=B0?= =?UTF-8?q?=D0=BF=D1=84=D0=BE=D1=80=D0=B0.=20=D1=81=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BD=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B2=20=D0=BF=D1=80=D0=BE?= =?UTF-8?q?=D1=86=D0=B5=D1=81=D1=81=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/workspace.xml | 11 +- src/Repository/Component/Visualiser.java | 2 +- src/TestingSystem/Common/TestingServer.java | 47 ++++-- .../SAPFOR/Json/SapforPackage_json.java | 152 +++++++----------- .../SAPFOR/Json/SapforVersionMatchState.java | 7 + .../SAPFOR/Json/SapforVersion_json.java | 1 + .../SAPFOR/SapforTask/SapforTask.java | 42 ++++- .../SapforTasksPackage/UI/PackageSummary.java | 5 +- .../UI/SapforPackageTreeNode.java | 3 - .../Passes/All/InstallServerSapfor.java | 67 +++++--- 10 files changed, 189 insertions(+), 148 deletions(-) create mode 100644 src/TestingSystem/SAPFOR/Json/SapforVersionMatchState.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index c0af1d08..8642db2e 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -7,10 +7,15 @@ + - - + + + + + + diff --git a/src/Repository/Component/Visualiser.java b/src/Repository/Component/Visualiser.java index d99de5a7..33bb7c20 100644 --- a/src/Repository/Component/Visualiser.java +++ b/src/Repository/Component/Visualiser.java @@ -62,7 +62,7 @@ public class Visualiser extends Component { //http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html @Override public void GetVersionInfo() { - version = 1067; + version = 1068; String pattern = "MMM dd yyyy HH:mm:ss"; DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH); date_text = df.format(getClassBuildTime()); diff --git a/src/TestingSystem/Common/TestingServer.java b/src/TestingSystem/Common/TestingServer.java index f4a37aba..45cf2fed 100644 --- a/src/TestingSystem/Common/TestingServer.java +++ b/src/TestingSystem/Common/TestingServer.java @@ -29,13 +29,10 @@ import Visual_DVM_2021.Passes.Pass_2021; import javafx.util.Pair; import org.apache.commons.io.FileUtils; -import javax.swing.*; +import javax.swing.Timer; import java.io.File; import java.nio.file.Paths; -import java.util.Arrays; -import java.util.Comparator; -import java.util.LinkedHashMap; -import java.util.Vector; +import java.util.*; public class TestingServer extends RepositoryServer { /* @Override @@ -495,24 +492,56 @@ public class TestingServer extends RepositoryServer { File repoSapforHome = Paths.get(repo.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN ).toFile(); File repo_bin = new File(repoSapforHome, "Sapfor_F"); //-- + System.out.println("Синхронизация ветви DVM..."); Utils.startScript(repo, repo, "dvm_checkout", "svn checkout " + Constants.REPOSITORY_AUTHENTICATION + " " + Constants.DVM_REPOSITORY + " 1>dvm_out.txt 2>dvm_err.txt\n").waitFor(); - + System.out.println("Синхронизация ветви SAPFOR..."); Utils.startScript(repo, repo, "spf_checkout", "svn checkout " + Constants.REPOSITORY_AUTHENTICATION + " " + Constants.SAPFOR_REPOSITORY + " 1>spf_out.txt 2>spf_err.txt\n").waitFor(); //-- - if (repo_bin.exists()){ + if (repo_bin.exists()) FileUtils.forceDelete(repo_bin); - } //-- + System.out.println("Сборка SAPFOR..."); Utils.startScript(repoSapforHome, repoSapforHome, "build_sapfor", "cmake ../ 1>out.txt 2>err.txt\nmake -j 14 1>>out.txt 2>>err.txt\n").waitFor(); //-- - response = new ServerExchangeUnit_2021(ServerCode.OK); + System.out.println("DONE"); + File repoSapfor = new File(repoSapforHome, "Sapfor_F"); + System.out.println("Result file is "+Utils.Brackets(repoSapfor.getAbsolutePath())); + if (repoSapfor.exists()) { + System.out.println("assembly found!"); + response = new ServerExchangeUnit_2021(ServerCode.OK); + File sapforsDirectory = new File(testingSystemHome, "Sapfors"); + //создать папку. Для того чтобы скопировать из репозитория. + File sapforHome = new File(sapforsDirectory, Utils.getDateName("sapfor")); + sapforHome.mkdir(); + File sapforBin = new File(sapforHome, "Sapfor_F"); + FileUtils.copyFile(repo_bin, sapforBin); + sapforBin.setExecutable(true, false); + // //-->>> + ServerSapfor serverSapfor = new ServerSapfor(); + serverSapfor.home_path = sapforHome.getAbsolutePath(); + serverSapfor.call_command = sapforBin.getAbsolutePath(); + serverSapfor.languageName = LanguageName.fortran; + serverSapfor.buildDate = new Date().getTime(); + response.object = serverSapfor; + File version =new File(sapforHome, "version.txt"); + System.out.println("Запрос версии.."); + Utils.startScript(sapforHome, sapforHome, "get_version", + serverSapfor.getVersionCommand()+" 1>"+Utils.DQuotes(version.getAbsolutePath())).waitFor(); + if (version.exists()){ + System.out.println("version.txt found"); + String raw = FileUtils.readFileToString(version); + System.out.println(Utils.Brackets(raw)); + String[] data = raw.split(" "); + if (data.length >= 4) serverSapfor.version = data[3].replace(",", ""); + } + }else throw new RepositoryRefuseException("Не удалось собрать SAPFOR"); } } diff --git a/src/TestingSystem/SAPFOR/Json/SapforPackage_json.java b/src/TestingSystem/SAPFOR/Json/SapforPackage_json.java index 74a4ac3d..4382db51 100644 --- a/src/TestingSystem/SAPFOR/Json/SapforPackage_json.java +++ b/src/TestingSystem/SAPFOR/Json/SapforPackage_json.java @@ -1,5 +1,4 @@ package TestingSystem.SAPFOR.Json; -import Common.UI.UI; import GlobalData.Tasks.TaskState; import TestingSystem.SAPFOR.SapforPackage.SapforPackage; import TestingSystem.SAPFOR.SapforTask.MatchState; @@ -34,14 +33,16 @@ public class SapforPackage_json implements Serializable { //- public PackageSummary root = null; public PackageSummary comparison_root = null; + //-- public LinkedHashMap allTasks = new LinkedHashMap<>(); - public LinkedHashMap>>> sortedTasks = new LinkedHashMap<>(); + public LinkedHashMap> sortedTasks = new LinkedHashMap<>(); + // public LinkedHashMap>>> sortedTasks = new LinkedHashMap<>(); //-- задачи, отсортированные для сравнения. public LinkedHashMap>>>> comparisonSortedTasks = new LinkedHashMap<>(); //---- //--------- public void DropComparison() { - // UI.Info("DROP COMPARISON"); + // UI.Info("DROP COMPARISON"); comparison_root = null; comparisonSortedTasks.clear(); for (SapforTask task : allTasks.values()) @@ -49,49 +50,22 @@ public class SapforPackage_json implements Serializable { } public void SortTasks() { sortedTasks.clear(); - //-- for (TaskState state : TaskState.values()) { - LinkedHashMap>> configuration_tasks = new LinkedHashMap<>(); - sortedTasks.put(state, configuration_tasks); - //-- + Vector stateTasks = new Vector<>(); for (SapforTask task : tasks) { - if (task.state.equals(state)) { - LinkedHashMap> 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 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>> configuration_tasks = sortedTasks.get(state); - for (int configuration_id : configuration_tasks.keySet()) { - LinkedHashMap> groups_tasks = configuration_tasks.get(configuration_id); - for (String group : groups_tasks.keySet()) { - Vector tasks_ = groups_tasks.get(group); - tasks_.sort(Comparator.comparing(SapforTask::getUniqueKey)); - } + if (task.state.equals(state)) + stateTasks.add(task); } + if (!stateTasks.isEmpty()) + sortedTasks.put(state, stateTasks); } } + public void SortTasksForComparison() { comparisonSortedTasks.clear(); //раскидать задачи по состояниям, конфигам, группам for (MatchState matchState : MatchState.values()) { - System.out.println("match_state="+matchState.toString()); + System.out.println("match_state=" + matchState.toString()); LinkedHashMap>>> state_tasks = new LinkedHashMap<>(); comparisonSortedTasks.put(matchState, state_tasks); //-- @@ -100,25 +74,25 @@ public class SapforPackage_json implements Serializable { state_tasks.put(state, configuration_tasks); //-- for (SapforTask task : tasks) { - // if (matchState.equals(MatchState.Unknown)) { - if (task.match.equals(matchState) && task.state.equals(state)) { - LinkedHashMap> 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 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); + // if (matchState.equals(MatchState.Unknown)) { + if (task.match.equals(matchState) && task.state.equals(state)) { + LinkedHashMap> 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 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); + } + // } } } //-- @@ -138,49 +112,6 @@ public class SapforPackage_json implements Serializable { } } } - //---------------------------------------------------->> - public void buildTree(SapforPackage package_in) { - root = new PackageSummary(); - //--- - for (TaskState state : sortedTasks.keySet()) { - //-- - StateSummary stateSummary = new StateSummary(state); - //-- - LinkedHashMap>> tasksByConfigurations = sortedTasks.get(state); - for (int configuration_id : tasksByConfigurations.keySet()) { - //-- - DefaultMutableTreeNode configurationNode = null; - //-- - LinkedHashMap> 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( - Paths.get(package_in.getLocalWorkspace().getAbsolutePath(), - String.valueOf(task.set_id), - String.valueOf(configuration_id)).toFile()) - ); - } - 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()) { @@ -234,4 +165,29 @@ public class SapforPackage_json implements Serializable { } } } + //-- + // public + public void buildTree(SapforPackage package_in) { + root = new PackageSummary(); + root.count = package_in.package_json.allTasks.size(); + //-- + for (TaskState state : sortedTasks.keySet()) { + StateSummary stateSummary = new StateSummary(state); + Vector tasks = sortedTasks.get(state); + //- + if (state.equals(TaskState.DoneWithErrors)) + root.errors_count += tasks.size(); + //- + for (SapforTask task : tasks) { + DefaultMutableTreeNode taskNode = task.getNode(Paths.get( + package_in.getLocalWorkspace().getAbsolutePath(), + String.valueOf(task.set_id), + String.valueOf(task.sapfor_configuration_id) + ).toFile()); + stateSummary.add(taskNode); + stateSummary.count++; + } + root.add(stateSummary); + } + } } diff --git a/src/TestingSystem/SAPFOR/Json/SapforVersionMatchState.java b/src/TestingSystem/SAPFOR/Json/SapforVersionMatchState.java new file mode 100644 index 00000000..0f902488 --- /dev/null +++ b/src/TestingSystem/SAPFOR/Json/SapforVersionMatchState.java @@ -0,0 +1,7 @@ +package TestingSystem.SAPFOR.Json; +public enum SapforVersionMatchState { + Unknown, + Match, //версия совпадает + FilesQuantityMissmatch, //количество выходных файлов в версии не совпадает + CodeMissmatch //код файлов не совпадает. +} diff --git a/src/TestingSystem/SAPFOR/Json/SapforVersion_json.java b/src/TestingSystem/SAPFOR/Json/SapforVersion_json.java index b54cf881..6bdaacca 100644 --- a/src/TestingSystem/SAPFOR/Json/SapforVersion_json.java +++ b/src/TestingSystem/SAPFOR/Json/SapforVersion_json.java @@ -36,6 +36,7 @@ public class SapforVersion_json implements Serializable { //-- public SapforTask task = null; //родная задача. Нужна для построения дерева версий. public db_project_info project = null; + public SapforVersionMatchState matchState = SapforVersionMatchState.Unknown; //-- public SapforVersion_json(String version_in, String description_in) { version = version_in; diff --git a/src/TestingSystem/SAPFOR/SapforTask/SapforTask.java b/src/TestingSystem/SAPFOR/SapforTask/SapforTask.java index 3a263d38..bc325f7a 100644 --- a/src/TestingSystem/SAPFOR/SapforTask/SapforTask.java +++ b/src/TestingSystem/SAPFOR/SapforTask/SapforTask.java @@ -1,6 +1,5 @@ package TestingSystem.SAPFOR.SapforTask; import Common.Constants; -import Common.Current; import Common.Database.DBObject; import Common.Utils.Utils; import GlobalData.Tasks.TaskState; @@ -58,7 +57,7 @@ public class SapforTask extends DBObject { // MatchState.Unknown; //----------- public String getUniqueKey() { - return sapfor_configuration_id + "_" + group_description + "_" + test_description; + return group_description + "_" + test_description + "_" +sapfor_configuration_id; } public String getSummary() { Vector lines = new Vector<>(); @@ -85,19 +84,19 @@ public class SapforTask extends DBObject { root = child; parent = child; } else { - if (!child.state.equals(SapforVersionState.Empty)) { + // if (!child.state.equals(SapforVersionState.Empty)) { parent.add(child); parent = child; - } + // } } //- } if (parent != null) { for (SapforVersion_json version_json : variants) { version_json.task = this; - if (!child.state.equals(SapforVersionState.Empty)) { + // if (!child.state.equals(SapforVersionState.Empty)) { parent.add(new VersionSummary(version_json, version_json.init(configurationRoot))); - } + // } } } //-- @@ -196,4 +195,35 @@ public class SapforTask extends DBObject { public Date getChangeDate() { return new Date(ChangeDate); } + @Override + public String toString() { + return + "группа "+Utils.Brackets(group_description)+" тест "+Utils.Brackets(test_description)+" конфигурация "+Utils.Brackets(sapfor_configuration_id); + // getUniqueKey(); + } + public String getPassesInfo(){ + String res = ""; + String [] data = codes.split(" "); + Vector strings = new Vector<>(); + for (String code_s: data){ + PassCode_2021 code = PassCode_2021.valueOf(code_s); + strings.add(Utils.Brackets(code.getDescription())); + } + return String.join("→", strings); + } + //--- + public DefaultMutableTreeNode getNode(File configurationRoot) { + DefaultMutableTreeNode res = new DefaultMutableTreeNode(this); + DefaultMutableTreeNode flags_info = new DefaultMutableTreeNode("флаги: "+this.flags); + DefaultMutableTreeNode passes_info = new DefaultMutableTreeNode("проходы: "+getPassesInfo()); + //- + int total_versions_count = versions.size()+variants.size(); + DefaultMutableTreeNode versions_info = new DefaultMutableTreeNode("версии: "+total_versions_count); + versions_info.add(getVersionsTree(configurationRoot)); + //-- + res.add(flags_info); + res.add(passes_info); + res.add(versions_info); + return res; + } } diff --git a/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/PackageSummary.java b/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/PackageSummary.java index 741078c3..a25c4f1d 100644 --- a/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/PackageSummary.java +++ b/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/PackageSummary.java @@ -2,16 +2,15 @@ package TestingSystem.SAPFOR.SapforTasksPackage.UI; import Common.UI.UI; public class PackageSummary extends SapforPackageTreeNode { public int count = 0; + public int errors_count=0; @Override public String getImageKey() { - // System.out.println("PACKAGE_SUMMARY "+ this.count); return "UnknownStateSummary"; - // return null; } public PackageSummary() { } @Override public String toString() { - return "всего задач : " + count; + return "всего задач : " + count+", с ошибками : "+errors_count; } } diff --git a/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/SapforPackageTreeNode.java b/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/SapforPackageTreeNode.java index 2a880fc3..d487c654 100644 --- a/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/SapforPackageTreeNode.java +++ b/src/TestingSystem/SAPFOR/SapforTasksPackage/UI/SapforPackageTreeNode.java @@ -4,11 +4,8 @@ import javax.swing.tree.DefaultMutableTreeNode; import java.util.Objects; public abstract class SapforPackageTreeNode extends DefaultMutableTreeNode { public ImageIcon getIcon() { - // System.out.println(getImageKey()); ImageIcon res = new ImageIcon(Objects.requireNonNull(getClass().getResource("/icons/versions/" + getImageKey() + ".png"))); - // System.out.println(res); return (getImageKey() != null) ? res : null; } public abstract String getImageKey(); - } diff --git a/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java b/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java index e797ce20..a5663fc4 100644 --- a/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java +++ b/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java @@ -95,9 +95,51 @@ public class InstallServerSapfor extends ConnectionPass { //--- } } + +} + +*/ +public class InstallServerSapfor extends TestingSystemPass{ + boolean result; + ServerSapfor serverSapfor; + String version_text; + //-- + @Override + protected boolean canStart(Object... args) { + result = false; + version_text = ""; + serverSapfor = null; + return true; + } + //-- + @Override + public String getIconPath() { + return "/icons/DownloadAll.png"; + } + @Override + public String getButtonText() { + return ""; + } + @Override + protected boolean needsAnimation() { + return true; + } + @Override + protected int getTimeout() { + return 0; + } + @Override + protected void ServerAction() throws Exception { + Command(new ServerExchangeUnit_2021(ServerCode.InstallServerSapfor)); + if (response.object!=null){ + result = true; + serverSapfor = (ServerSapfor) response.object; + } + } @Override protected void performFinish() throws Exception { super.performFinish(); + new TestingSystemPass() { @Override public String getDescription() { @@ -128,28 +170,3 @@ public class InstallServerSapfor extends ConnectionPass { passes.get(PassCode_2021.PublishServerSapfor).Do(serverSapfor); } } - -*/ -public class InstallServerSapfor extends TestingSystemPass{ - @Override - public String getIconPath() { - return "/icons/DownloadAll.png"; - } - @Override - public String getButtonText() { - return ""; - } - @Override - protected boolean needsAnimation() { - return true; - } - @Override - protected int getTimeout() { - return 0; - } - @Override - protected void ServerAction() throws Exception { - Command(new ServerExchangeUnit_2021(ServerCode.InstallServerSapfor)); - System.out.println(response.object); - } -}