промежуточный. выкинул старые объекты и функционал. Осталось восстановить эксель, и отображение пакетов Сапфор

This commit is contained in:
2023-12-16 16:52:17 +03:00
parent 94ff786ed6
commit 0c513cec5e
57 changed files with 276 additions and 3460 deletions

View File

@@ -2,7 +2,6 @@ package Visual_DVM_2021.Passes.All;
import Common.Current;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.Common.TestingPackageToKill.TestingPackageToKill;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import Visual_DVM_2021.Passes.AbortTestingPackage;

View File

@@ -1,41 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
public class AbortSapforTaskPackage extends TestingSystemPass<SapforTasksPackage> {
TasksPackageToKill tasksPackageToKill = null;
@Override
public String getIconPath() {
return "/icons/Ban.PNG";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
tasksPackageToKill = null;
if (Current.Check(Log, Current.SapforTasksPackage)) {
target = Current.getSapforTasksPackage();
switch (target.state) {
case Done:
case Aborted:
Log.Writeln_("Пакет уже завершен.");
break;
default:
tasksPackageToKill = new TasksPackageToKill();
tasksPackageToKill.packageId = target.id;
return true;
}
}
;
return false;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.PublishObject, Current.getAccount().email, tasksPackageToKill));
}
}

View File

@@ -1,42 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
public class AbortTaskPackage extends TestingSystemPass<TasksPackage> {
TasksPackageToKill tasksPackageToKill = null;
@Override
public String getIconPath() {
return "/icons/Ban.PNG";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
tasksPackageToKill = null;
if (Current.Check(Log, Current.TasksPackage)) {
target = Current.getTasksPackage();
switch (target.state) {
case Done:
case Aborted:
Log.Writeln_("Пакет уже завершен.");
break;
default:
tasksPackageToKill = new TasksPackageToKill();
tasksPackageToKill.packageId = target.id;
return true;
}
}
;
return false;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.PublishObject, Current.getAccount().email, tasksPackageToKill));
}
}

View File

@@ -10,7 +10,6 @@ import GlobalData.Machine.MachineType;
import GlobalData.User.UserState;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import TestingSystem.DVM.DVMPackage.DVMPackage_json;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.AddObjectPass;
import Visual_DVM_2021.Passes.PassCode_2021;

View File

@@ -1,54 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Database.Database;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Utils;
import TestingSystem.Common.TestingServer;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import Visual_DVM_2021.Passes.DeleteServerObjects;
import java.util.Vector;
public class DeleteSapforTasksPackage extends DeleteServerObjects<TestingServer,SapforTasksPackage> {
public DeleteSapforTasksPackage() {
super(Global.testingServer,SapforTasksPackage.class);
}
protected Database getDb() {
return server.account_db;
}
protected String getEmail() {
return Current.getAccount().email;
}
Vector<SapforTasksPackage> to_delete;
//---
public boolean checkActivity() {
to_delete = new Vector<>();
for (Object key : target) {
SapforTasksPackage tasksPackage = server.account_db.sapforTasksPackages.get(key);
if (!tasksPackage.state.equals(TasksPackageState.Done) &&
!tasksPackage.state.equals(TasksPackageState.Aborted)
) {
Log.Writeln_("Нельзя удалить активный пакет " + key + " !");
return false;
}
to_delete.add(tasksPackage);
}
return true;
}
@Override
protected boolean canStart(Object... args) throws Exception {
return super.canStart(args) && checkActivity();
}
@Override
protected void showPreparation() throws Exception {
UI.getMainWindow().getTestingWindow().DropSapforComparison();
}
@Override
protected void performDone() throws Exception {
super.performDone();
for (SapforTasksPackage tasksPackage: to_delete)
Utils.delete_with_check(tasksPackage.getLocalWorkspace());
}
}

View File

@@ -1,41 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Database.Database;
import Common.Global;
import Common.UI.UI;
import TestingSystem.Common.TestingServer;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.DeleteServerObjects;
public class DeleteTasksPackage extends DeleteServerObjects<TestingServer, TasksPackage> {
public DeleteTasksPackage() {
super(Global.testingServer, TasksPackage.class);
}
protected Database getDb() {
return server.account_db;
}
protected String getEmail() {
return Current.getAccount().email;
}
//---
public boolean checkActivity() {
for (Object key : target) {
TasksPackage tasksPackage = server.account_db.packages.get(key);
if (!tasksPackage.state.equals(TasksPackageState.Done) &&
!tasksPackage.state.equals(TasksPackageState.Aborted)
) {
Log.Writeln_("Нельзя удалить активный пакет " + key + " !");
return false;
}
}
return true;
}
@Override
protected boolean canStart(Object... args) throws Exception {
return super.canStart(args) && checkActivity();
}
@Override
protected void showPreparation() throws Exception {
UI.getMainWindow().getTestingWindow().DropTestRunTasksComparison();
}
}

View File

@@ -1,57 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Utils.Utils;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import java.io.File;
public class DownloadSapforTasksPackage extends TestingSystemPass<SapforTasksPackage> {
@Override
public String getIconPath() {
return "/icons/DownloadBugReport.png";
}
@Override
public String getButtonText() {
return "";
}
File tmpArchive = null;
@Override
protected boolean canStart(Object... args) throws Exception {
if (args.length > 0) {
target = (SapforTasksPackage) args[0];
} else {
if (Current.Check(Log, Current.SapforTasksPackage))
target = Current.getSapforTasksPackage();
else return false;
}
//-
if (!target.state.equals(TasksPackageState.Done)) {
Log.Writeln_("Пакет не завершен.");
return false;
}
if (target.isLoaded()) {
System.out.println("Пакет уже загружен");
return false;
}
return true;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.DownloadSapforTasksPackage, Current.getAccount().email, target.id));
response.Unpack(tmpArchive = Utils.getTempFileName(String.valueOf(target.id)));
}
@Override
protected boolean validate() {
return tmpArchive != null && tmpArchive.exists();
}
@Override
protected void performDone() throws Exception {
super.performDone();
passes.get(PassCode_2021.UnpackSapforTasksPackage).Do(tmpArchive, target);
}
}

View File

@@ -1,13 +1,13 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.DVMTasks.DVMRunTask;
import TestingSystem.Common.Test.Test;
public class DownloadTaskTest extends DownloadTest {
@Override
protected boolean canStart(Object... args) throws Exception {
target = null;
if (Current.getAccount().CheckRegistered(Log) && Current.Check(Log, Current.TestRunTask)) {
TestRunTask task = Current.getTestRunTask();
if (Current.getAccount().CheckRegistered(Log) && Current.Check(Log, Current.DVMRunTask)) {
DVMRunTask task = Current.getDVMRunTask();
//-- квазиобъект, нам от него нужно только имя.
target = new Test();
target.id = task.test_id;

View File

@@ -6,8 +6,8 @@ import Common.Utils.Files.VDirectoryChooser;
import Common.Utils.Index;
import Common.Utils.Utils;
import GlobalData.Tasks.TaskState;
import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import TestingSystem.DVM.DVMPackage.DVMPackage;
import TestingSystem.DVM.DVMTasks.DVMRunTask;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.Pass_2021;
import org.apache.commons.io.FileUtils;
@@ -22,7 +22,7 @@ import java.io.File;
import java.io.FileOutputStream;
import java.util.LinkedHashMap;
import java.util.Vector;
public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
public class ExportTasksPackageToExcel extends Pass_2021<Vector<DVMPackage>> {
//https://tproger.ru/translations/how-to-read-write-excel-file-java-poi-example
File dir;
File res;
@@ -37,7 +37,7 @@ public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
int total_tasks_count = 0;
long total_time = 0;
//--
LinkedHashMap<Long, Vector<TestRunTask>> packages_tasks = null;
LinkedHashMap<Integer, Vector<DVMRunTask>> packages_tasks = null;
//--
@Override
public String getIconPath() {
@@ -59,24 +59,26 @@ public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
packages_tasks = new LinkedHashMap<>();
target = null;
//--
if (Global.testingServer.account_db.packages.getCheckedCount() > 0) {
target = Global.testingServer.account_db.packages.getCheckedItems();
if (Global.testingServer.db.dvmPackages.getCheckedCount() > 0) {
target = Global.testingServer.db.dvmPackages.getCheckedItems();
} else {
if (Current.Check(Log, Current.TasksPackage)) {
if (Current.Check(Log, Current.DVMPackage)) {
target = new Vector<>();
target.add(Current.getTasksPackage());
target.add(Current.getDVMPackage());
} else return false;
}
for (TasksPackage tasksPackage : target) {
if (!tasksPackage.state.equals(TasksPackageState.Done)) {
Log.Writeln_("Пакет " + tasksPackage.id + " не завершен.");
for (DVMPackage dvmPackage : target) {
if (!dvmPackage.state.equals(TasksPackageState.Done)) {
Log.Writeln_("Пакет " + dvmPackage.id + " не завершен.");
} else {
Vector<TestRunTask> tasks = new Vector<>();
for (TestRunTask task : Global.testingServer.account_db.testRunTasks.Data.values()) {
if (task.taskspackage_id == tasksPackage.id)
Vector<DVMRunTask> tasks = new Vector<>();
/* todo Загрузить и распаковать все выделенные пакеты
for (DVMRunTask task : Global.testingServer.db.testRunTasks.Data.values()) {
if (task.taskspackage_id == dvmPackage.id)
tasks.add(task);
}
packages_tasks.put(tasksPackage.id, tasks);
*/
packages_tasks.put(dvmPackage.id, tasks);
}
}
if (!Log.isEmpty())
@@ -90,17 +92,17 @@ public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
return true;
}
//---
String getPackageInfo(TasksPackage object) {
String getPackageInfo(DVMPackage object) {
Vector<String> lines = new Vector<>();
lines.add("задач " + object.runTasksCount);
lines.add("задач " + object.tasksCount);
lines.add("машина " + object.machine_address + ":" + object.machine_port);
lines.add("ядер " + object.kernels);
lines.add("DVM-система " + object.dvm_version);
lines.add("DVM-система " + object.version);
//--
total_tasks_count+=object.runTasksCount;
total_tasks_count += object.tasksCount;
//--
long milliseconds = object.ChangeDate - object.StartDate;
total_time+= milliseconds;
total_time += milliseconds;
//--
lines.add("время выполнения " + Utils.printSplittedDateInterval(milliseconds));
return String.join("; ", lines);
@@ -300,9 +302,9 @@ public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
styles.add(style);
}
}
void exportPackageTasks(TasksPackage tasksPackage, Index offset) {
Vector<TestRunTask> tasks = packages_tasks.get(tasksPackage.id);
for (TestRunTask task : tasks) {
void exportPackageTasks(DVMPackage dvmPackage, Index offset) {
Vector<DVMRunTask> tasks = packages_tasks.get(dvmPackage.id);
for (DVMRunTask task : tasks) {
ShowMessage2(task.test_description);
//---
Integer NUM_THREADS = extractIntegerEnvironmentValue(task.environments, "DVMH_NUM_THREADS");
@@ -345,12 +347,12 @@ public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
createStyles();
//--
Index offset = new Index();
for (TasksPackage tasksPackage : target) {
addInfoRow(offset.getValue(), getPackageInfo(tasksPackage));
for (DVMPackage dvmPackage : target) {
addInfoRow(offset.getValue(), getPackageInfo(dvmPackage));
offset.Inc();
}
if (target.size()>1){
addInfoRow(offset.getValue(), "всего задач "+total_tasks_count+"; общее время выполнения "+Utils.printSplittedDateInterval(total_time));
if (target.size() > 1) {
addInfoRow(offset.getValue(), "всего задач " + total_tasks_count + "; общее время выполнения " + Utils.printSplittedDateInterval(total_time));
offset.Inc();
}
addHeaderRow(offset.getValue(),
@@ -372,8 +374,8 @@ public class ExportTasksPackageToExcel extends Pass_2021<Vector<TasksPackage>> {
"Прогресс (%)");
//--
offset.Inc();
for (TasksPackage tasksPackage : target) {
exportPackageTasks(tasksPackage, offset);
for (DVMPackage dvmPackage : target) {
exportPackageTasks(dvmPackage, offset);
}
//--
for (int i = 0; i < max_columns; ++i)

View File

@@ -1,30 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.UI.UI;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
public class GetTestsQueueSize extends TestingSystemPass<Long> {
@Override
public String getIconPath() {
return "/icons/Help.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected boolean canStart(Object... args) throws Exception {
return Current.Check(Log, Current.TasksPackage);
}
@Override
protected void ServerAction() throws Exception {
target = 0L;
Command(new ServerExchangeUnit_2021(ServerCode.GetQueueSize, "", Current.getTasksPackage().StartDate));
target = (long) response.object;
}
@Override
protected void showDone() throws Exception {
UI.Info("Задач в очереди: "+target);
}
}

View File

@@ -1,211 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Constants;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Index;
import ProjectData.LanguageName;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import TestingSystem.DVM.TasksPackage.TasksPackageState;
import TestingSystem.SAPFOR.SapforConfiguration.SapforConfiguration;
import TestingSystem.SAPFOR.SapforConfigurationCommand.SapforConfigurationCommand;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Server.PublishServerAccountObject;
import java.io.File;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Vector;
public class StartSapforTests extends PublishServerAccountObject<SapforTasksPackage> {
protected int allTasksCount = 0;
protected LinkedHashMap<Integer, Vector<Integer>> groupsTests = null;
protected LinkedHashMap<String, Test> testsByDescriptions = null;
protected Vector<String> testsNames_lower = null; //все тесты что участвуют здесь
protected Vector<LanguageName> groupsLanguages = null;
protected Vector<String> testsIds = null;
protected Vector<String> configurationsIds = null;
protected File sapfor = null;
//--
public StartSapforTests() {
super(SapforTasksPackage.class);
}
//---
@Override
public String getIconPath() {
return "/icons/Start.png";
}
//--
protected boolean checkTestName(Test test) {
String name = test.description.toLowerCase();
if (testsNames_lower.contains(name)) {
Log.Writeln_("В пакет не могут входить тесты с одинаковыми именами (без учета регистра):" + test.description.toLowerCase());
return false;
}
testsNames_lower.add(name);
return true;
}
protected boolean getGroupTests(int groupId) {
Vector<Integer> groupTests = new Vector<>();
Vector<Integer> selectedGroupTests = new Vector<>();
//---
for (Test test : server.db.tests.Data.values()) {
if (test.group_id==groupId) {
groupTests.add(test.id);
if (test.isSelected())
selectedGroupTests.add(test.id);
}
}
if (!groupTests.isEmpty() && !selectedGroupTests.isEmpty())
groupTests = selectedGroupTests;
//---
if (groupTests.isEmpty()) {
Log.Writeln_("Пустая группа тестов: " + groupId);
return false;
}
//--
for (int testId : groupTests) {
Test test = Global.testingServer.db.tests.get(testId);
if (!checkTestName(test))
return false;
else
testsByDescriptions.put(test.description, test);
}
//--
groupsTests.put(groupId, groupTests);
//--
return true;
}
boolean checkTerminalCode(SapforConfiguration sapforConfiguration, PassCode_2021 code, int count, Vector<PassCode_2021> codes) {
if (count > 2) {
Log.Writeln_("Неверная конфигурация:" + sapforConfiguration.id + ": " +
code.getDescription() +
" возможно только один раз.");
return false;
}
//--
if ((count == 1) && codes.size() > 1) {
if (!codes.lastElement().equals(code)) {
Log.Writeln_("Неверная конфигурация:" + sapforConfiguration.id + ": " +
code.getDescription() +
" может быть только завершающей командой!");
return false;
}
}
return true;
}
public boolean getConfigurationCommands(SapforConfiguration sapforConfiguration) {
//1. получить список всех команд.
Vector<PassCode_2021> codes = new Vector<>();
//-- счетчик завершающих команд.
LinkedHashMap<PassCode_2021, Index> terminalCodesCount = new LinkedHashMap<>();
for (PassCode_2021 code : Constants.terminalSapforTestingCodes)
terminalCodesCount.put(code, new Index());
//--
for (SapforConfigurationCommand command : Global.testingServer.db.sapforConfigurationCommands.Data.values()) {
if (command.sapforconfiguration_id==sapforConfiguration.id) {
codes.add(command.passCode);
//---
for (PassCode_2021 t_code : Constants.terminalSapforTestingCodes) {
if (command.passCode.equals(t_code))
terminalCodesCount.get(t_code).Inc();
}
//---
}
}
//--
if (codes.size() == 0) {
Log.Writeln_("Пустая конфигурация:" + sapforConfiguration.id);
return false;
}
for (PassCode_2021 t_code : Constants.terminalSapforTestingCodes) {
if (!checkTerminalCode(sapforConfiguration, t_code,
terminalCodesCount.get(t_code).getValue(), codes
))
return false;
}
//--
return true;
}
//--
@Override
public boolean fillObjectFields() throws Exception {
//--
allTasksCount = 0;
groupsTests = new LinkedHashMap<>();
testsNames_lower = new Vector<>();
testsByDescriptions = new LinkedHashMap<>();
groupsLanguages = new Vector<>();
testsIds =new Vector<>();
configurationsIds = new Vector<>();
//-->>
if (!Current.getAccount().CheckRegistered(Log)) {
return false;
}
//проверка стартовых условий.
if (!Current.Check(Log, Current.ServerSapfor))
return false;
//--->>
if (Global.testingServer.db.sapforConfigurations.getCheckedCount() == 0) {
Log.Writeln_("Не отмечено ни одной конфигурации SAPFOR.");
return false;
}
//-
for (SapforConfiguration configuration : Global.testingServer.db.sapforConfigurations.getCheckedItems()) {
if (!getConfigurationCommands(configuration))
return false;
}
//--
if (Global.testingServer.db.groups.getCheckedCount() == 0) {
Log.Writeln_("Не отмечено ни одной группы тестов");
return false;
}
//--
for (Group group : Global.testingServer.db.groups.getCheckedItems()) {
//---
if (!groupsLanguages.contains(group.language))
groupsLanguages.add(group.language);
//-
if (groupsLanguages.get(0) != LanguageName.fortran) {
Log.Writeln_("Поддерживается пакетный режим только для языка Fortran!");
return false;
}
if (groupsLanguages.size() > 1) {
Log.Writeln_("Запуск тестов на разных языках в рамках одного пакета запрещен!");
return false;
}
//---
if (!getGroupTests(group.id))
return false;
}
//--
for (int i = 0; i < Global.testingServer.db.sapforConfigurations.getCheckedCount(); ++i) {
for (Vector<Integer> tests : groupsTests.values())
allTasksCount += tests.size();
}
//--
for (Test test : testsByDescriptions.values())
testsIds.add(String.valueOf(test.id));
//--
for (SapforConfiguration configuration : Global.testingServer.db.sapforConfigurations.getCheckedItems())
configurationsIds.add(String.valueOf(configuration.id));
//--
target.tasksCount = allTasksCount;
target.testsIds = String.join("\n", testsIds);
target.configurationsIds = String.join("\n", configurationsIds);
//--
target.sapforId = Current.getServerSapfor().id;
target.sapfor_version = Current.getServerSapfor().version;
//--
target.testsNames = String.join(";", testsNames_lower);
target.StartDate = new Date().getTime();
target.kernels = Global.properties.TestingKernels;
target.state = TasksPackageState.Queued;
target.needsEmail = Global.properties.EmailOnTestingProgress ? 1 : 0;
//---
return (UI.Question("Будет запущено:\n"
+ allTasksCount + " задач\n" +
"Продолжить"));
}
}

View File

@@ -1,221 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Utils;
import GlobalData.Compiler.CompilerType;
import GlobalData.Machine.MachineType;
import GlobalData.User.UserState;
import TestingSystem.Common.Group.Group;
import TestingSystem.Common.Test.Test;
import TestingSystem.DVM.Tasks.TestCompilationTask;
import TestingSystem.DVM.Tasks.TestRunTask;
import TestingSystem.DVM.TasksPackage.TasksPackage;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.Server.PublishServerAccountObject;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Vector;
public class StartTests extends PublishServerAccountObject<TasksPackage> {
public StartTests() {
super(TasksPackage.class);
}
@Override
protected int getTimeout() {
return 0;
}
@Override
public String getIconPath() {
return "/icons/Start.png";
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (!Current.getAccount().CheckRegistered(Log)) {
return false;
}
if (Current.Check(Log, Current.Machine, Current.User, Current.Compiler)) {
if (!Current.getMachine().type.equals(MachineType.Server)) {
Log.Writeln_("Тестирование поддерживается только на одиночном удалённом сервере.");
return false;
}
if (!Current.getUser().state.equals(UserState.ready_to_work)) {
Log.Writeln_("Пользователь не готов к работе. Выполните инициализацию пользователя!");
return false;
}
if (!Current.getCompiler().type.equals(CompilerType.dvm)) {
Log.Writeln_("Тестирование поддерживается только для DVM компиляторов.");
return false;
}
if (!Current.getCompiler().versionLoaded)
passes.get(PassCode_2021.ShowCompilerVersion).Do(Current.getCompiler(), false);
if (!CreateTasks()) {
Log.Writeln_("Не удалось создать задачи.\n" +
"Для создания задач отметьте требуемые конфигурации,\n" +
"Отметьте группы, или отдельные тесты в отмеченной текущей группе");
return false;
}
//-
if (target.runTasksCount == 0) {
Log.Writeln_("Не будет создано ни одной задачи на запуск.");
return false;
}
//todo сюда же флаг нужно ли почтовое отправление.
if (UI.Question("Будет запущено:\n"
+ target.compilationTasksCount + " задач на компиляцию\n" +
+target.runTasksCount + " задач на запуск.\n" +
"Продолжить")) {
return true;
}
}
return false;
}
public static String checkFlags(String flags_in) {
if (!flags_in.contains("-shared-dvm")) {
if (flags_in.isEmpty())
return "-shared-dvm";
else return flags_in + " -shared-dvm";
} else
return flags_in;
}
public static String checkEnvironments(String environmentsSet_in) {
if (!environmentsSet_in.contains("DVMH_NO_DIRECT_COPY")) {
if (environmentsSet_in.isEmpty())
return "DVMH_NO_DIRECT_COPY=" + Utils.DQuotes("1");
else
return environmentsSet_in + " " + "DVMH_NO_DIRECT_COPY=" + Utils.DQuotes("1");
} else
return environmentsSet_in;
}
public static Vector<TestCompilationTask> createTasksCGT(
TestingSystem.DVM.Configuration.Configuration configuration,
Group group,
Test test
) {
Vector<TestCompilationTask> compilationTasks = new Vector<>();
for (String flags : configuration.getFlags()) {
String checked_flags = checkFlags(flags);
TestCompilationTask testCompilationTask = new TestCompilationTask(
configuration,
group,
test,
checked_flags
);
testCompilationTask.runTasks = new Vector<>();
Vector<String> matrixes = configuration.getMatrixes(test.max_dim);
Vector<String> environments = configuration.getEnvironments();
for (String environmentSet : environments) {
String checkedEnvironments = checkEnvironments(environmentSet);
if (flags.trim().equalsIgnoreCase("-s")) {
testCompilationTask.runTasks.add(new TestRunTask(
configuration,
group,
test,
"",
checked_flags,
checkedEnvironments,
configuration.getParamsText()
));
} else
for (String matrix : matrixes) {
testCompilationTask.runTasks.add(new TestRunTask(
configuration,
group,
test,
matrix,
checked_flags,
checkedEnvironments,
configuration.getParamsText()));
}
}
compilationTasks.add(testCompilationTask);
}
return compilationTasks;
}
protected boolean CreateTasks() {
//---------
Vector<String> configurations_lines = new Vector<>();
Vector<String> groups_lines = new Vector<>();
//-----------
target = new TasksPackage();
target.StartDate = new Date().getTime();
//-
target.machine_name = Current.getMachine().name;
target.machine_address = Current.getMachine().address;
target.machine_port = Current.getMachine().port;
target.machine_type = Current.getMachine().type;
//-
target.user_name = Current.getUser().login;
target.user_password = Current.getUser().password;
target.user_workspace = Current.getUser().workspace;
target.dvm_drv = Current.getCompiler().call_command;
target.dvm_version = Current.getCompiler().getVersionInfo();
target.kernels = Global.properties.TestingKernels;
Vector<TestCompilationTask> tasks = new Vector<>();
//1, Проверяем выбраны ли конфиги.
if (server.db.configurations.getCheckedCount() == 0) {
Log.Writeln_("Не отмечена ни одна конфигурация тестирования.");
return false;
}
if (server.db.groups.getCheckedCount() > 0) {
//2 Проверяем выбраны ли группы.
configurations_lines.add("Конфигурации: ");
for (TestingSystem.DVM.Configuration.Configuration configuration : server.db.configurations.getCheckedItems()) {
configurations_lines.add(configuration.getSummary());
groups_lines.add("Группы: ");
for (Group group : server.db.groups.getCheckedItems()) {
groups_lines.add(group.getSummary());
Vector<Test> groupTests = new Vector<>();
Vector<Test> checkedGroupTests = new Vector<>();
for (Test test : server.db.tests.Data.values()) {
if (test.group_id == group.id) {
groupTests.add(test);
if (test.isSelected())
checkedGroupTests.add(test);
}
}
if (!groupTests.isEmpty()) {
if (checkedGroupTests.isEmpty()) {
for (Test test : groupTests)
tasks.addAll(createTasksCGT(configuration, group, test));
} else {
//добавляем только отмеченные.
for (Test test : checkedGroupTests) {
tasks.addAll(createTasksCGT(configuration, group, test));
}
}
}
}
}
}
//рассортировать по группам и тестам задачи.
for (TestCompilationTask task : tasks) {
target.compilationTasksCount++;
target.runTasksCount += task.runTasks.size();
LinkedHashMap<Integer, Vector<TestCompilationTask>> group_tasks = null;
if (target.sorted_tasks.containsKey(task.group_id))
group_tasks = target.sorted_tasks.get(task.group_id);
else {
group_tasks = new LinkedHashMap<>();
target.sorted_tasks.put(task.group_id, group_tasks);
}
Vector<TestCompilationTask> test_tasks = null;
if (group_tasks.containsKey(task.test_id))
test_tasks = group_tasks.get((task.test_id));
else {
test_tasks = new Vector<>();
group_tasks.put(task.test_id, test_tasks);
}
test_tasks.add(task);
}
Vector<String> summary_lines = new Vector<>();
summary_lines.addAll(configurations_lines);
summary_lines.addAll(groups_lines);
target.summary =
"Задач на компиляцию: " + target.compilationTasksCount + "\n" +
"Задач на запуск: " + target.runTasksCount + "\n" +
String.join("\n", summary_lines);
target.needsEmail = Global.properties.EmailOnTestingProgress ? 1 : 0;
return !tasks.isEmpty();
}
}

View File

@@ -1,95 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Current;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Utils;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TestingServer;
import Visual_DVM_2021.Passes.Pass_2021;
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import org.apache.commons.io.FileUtils;
import java.io.File;
public class SynchronizeTestsTasks extends Pass_2021 {
byte[] db_file_bytes;
File new_db_file;
@Override
protected boolean canStart(Object... args) throws Exception {
db_file_bytes = null;
new_db_file = null;
if (Current.getAccount().CheckRegistered(Log)) {
TestingSystemPass download = new TestingSystemPass() {
@Override
protected boolean needsAnimation() {
return false;
}
@Override
public String getDescription() {
return "Загрузка базы тестовых задач";
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.ReceiveTestsTasksDatabase, Current.getAccount().email));
db_file_bytes = (byte[]) response.object;
}
};
return download.Do();
}
return false;
}
@Override
protected boolean needsAnimation() {
return false;
}
@Override
public String getIconPath() {
return "/icons/ComponentsActual.png";
}
@Override
public String getButtonText() {
return "";
}
@Override
protected void performPreparation() throws Exception {
Global.testingServer.account_db.Disconnect();
}
@Override
protected void showPreparation() throws Exception {
Global.testingServer.account_db.SaveLastSelections();
Global.testingServer.account_db.packages.ClearUI();
Global.testingServer.account_db.sapforTasksPackages.ClearUI();
}
@Override
protected void body() throws Exception {
Utils.unpackFile(db_file_bytes, new_db_file = Utils.getTempFileName("tdb"));
if (new_db_file.exists()) {
Utils.forceDeleteWithCheck(Global.testingServer.account_db.getFile());
FileUtils.moveFile(new_db_file, Global.testingServer.account_db.getFile());
Global.testingServer.account_db.setFile(Current.getAccount().email);
}
//--
Global.testingServer.account_db.Connect();
Global.testingServer.account_db.CreateAllTables();
Global.testingServer.account_db.prepareTablesStatements();
Global.testingServer.account_db.Synchronize();
UI.getMainWindow().getTestingWindow().RemountTestTable();
//--
}
@Override
protected boolean validate() {
return (db_file_bytes != null);
}
@Override
protected void showFinish() throws Exception {
Global.testingServer.account_db.packages.ShowUI();
Global.testingServer.account_db.sapforTasksPackages.ShowUI();
Global.testingServer.account_db.RestoreLastSelections();
if (!Global.testingServer.account_db.hasActivePackages()) {
Global.properties.updateField("AutoCheckTesting", false);
TestingServer.TimerOff();
UI.testingBar.ShowAutoCheckTesting();
}
}
}

View File

@@ -1,31 +0,0 @@
package Visual_DVM_2021.Passes.All;
import Common.Global;
import Common.Utils.Utils;
import TestingSystem.SAPFOR.SapforTasksPackage.SapforTasksPackage;
import org.apache.commons.io.FileUtils;
import java.io.File;
import java.util.Date;
public class UnpackSapforTasksPackage extends UnzipFolderPass<SapforTasksPackage> {
@Override
protected boolean needsAnimation() {
return true;
}
@Override
protected boolean canStart(Object... args) {
File tmpArchive = (File) args[0];
target = (SapforTasksPackage) args[1];
return super.canStart(tmpArchive.getAbsolutePath(),Global.SapforPackagesDirectory.getAbsolutePath(), false);
}
@Override
protected void performPreparation() throws Exception {
super.performPreparation();
File packageWorkspace = target.getLocalWorkspace();
Utils.forceDeleteWithCheck(packageWorkspace);
}
@Override
protected void body() throws Exception {
super.body();
FileUtils.writeStringToFile(target.getLoadedSign(), new Date().toString());
}
}

View File

@@ -5,20 +5,14 @@ public enum PassCode_2021 {
UpdateProperty,
ShowAllParallelVariants,
ShowParallelVariantsCoverage,
AbortSapforTaskPackage,
UnpackSapforTasksPackage,
//-
DeleteServerSapfor,
StartSapforTests,
InstallServerSapfor,
SaveProfile,
ApplyProfile,
EditProfile,
DeleteProfile,
//-
DeleteSapforTasksPackage,
//-
//-
CheckAccount,
CheckRegistrationOnServer,
EditAccount,
@@ -235,7 +229,6 @@ public enum PassCode_2021 {
EditDVMParameter,
DeleteDVMParameter,
//-
SynchronizeTestsTasks,
SPF_GetArrayLinks,
Precompilation,
GCOV,
@@ -252,11 +245,8 @@ public enum PassCode_2021 {
PublishConfiguration,
EditConfiguration,
//-
StartTests,
//-
DownloadTaskTest,
//-
GetTestsQueueSize,
ApplyCurrentFunction,
//->
CheckRemoteWorkspace,
@@ -286,13 +276,11 @@ public enum PassCode_2021 {
EditSapforConfigurationCommand,
DeleteSapforConfigurationCommand,
//->
DownloadSapforTasksPackage,
OpenSapforEtalonVersion,
OpenSapforVersion,
PublishServerSapfor,
DeleteTest,
DeleteConfiguration,
AbortTaskPackage,
//--
CreateGroupFromDirectory,
CreateTestFromDirectory,
@@ -301,7 +289,6 @@ public enum PassCode_2021 {
CreateTestFromFile,
CreateTestsFromFiles,
CreateGroupFromFiles,
DeleteTasksPackage,
DeleteSubscriberWorkspace,
ExportTasksPackageToExcel,
//->
@@ -356,8 +343,6 @@ public enum PassCode_2021 {
return "Экспорт пакета задач в Excel";
case DeleteSubscriberWorkspace:
return "Удалить рабочее пространство пользователя";
case DeleteTasksPackage:
return "Удалить пакет задач";
case CreateGroupFromFiles:
return "Создать группу из файлов в папке";
case CreateTestsFromFiles:
@@ -374,8 +359,6 @@ public enum PassCode_2021 {
return "Удаление Open MP директив";
case CreateGroupFromDirectory:
return "Создать группу тестов из папки";
case AbortTaskPackage:
return "Прерывать пакет тестирования DVM";
case DeleteConfiguration:
return "Удалить конфигурацию";
case DeleteTest:
@@ -390,22 +373,12 @@ public enum PassCode_2021 {
return "Открыть текущую эталонную версию SAPFOR как проект";
case OpenSapforVersion:
return "Открыть текущую версию SAPFOR как проект";
case UnpackSapforTasksPackage:
return "Распаковка пакета задач SAPFOR";
case DownloadSapforTasksPackage:
return "Загрузить пакет задач SAPFOR";
case AbortSapforTaskPackage:
return "Прервать пакет задач SAPFOR";
case ShowAllParallelVariants:
return "Отобразить все параллельные варианты";
case ShowParallelVariantsCoverage:
return "Отобразить минимальное покрытие параллельных вариантов";
case DeleteSapforTasksPackage:
return "Удалить пакет задач SAPFOR";
case DeleteServerSapfor:
return "Удалить версию SAPFOR";
case StartSapforTests:
return "Запустить тестирование на сервере";
case InstallServerSapfor:
return "Собрать актуальную версию SAPFOR";
case EditProfile:
@@ -492,12 +465,8 @@ public enum PassCode_2021 {
return "Публикация удалённой рабочей папки";
case ApplyCurrentFunction:
return "Назначить текущую функцию по имени";
case GetTestsQueueSize:
return "Очередь перед текущим пакетом";
case DownloadTaskTest:
return "Загрузить тест текущей задачи";
case StartTests:
return "Запуск тестов";
case PublishConfiguration:
return "Опубликовать конфигурацию тестирования";
case EditConfiguration:
@@ -524,8 +493,6 @@ public enum PassCode_2021 {
return "Предварительная компиляция на локальной машине";
case SPF_GetArrayLinks:
return "Получить связи между массивами";
case SynchronizeTestsTasks:
return "Синхронизация базы данных тестовых задач.";
case SaveBugReportExecutor:
return "Назначить исполнителя отчёта об ошибке";
case SaveBugReportRecipients:

View File

@@ -1,23 +0,0 @@
package Visual_DVM_2021.Passes.Server;
import Common.Current;
import Common.Database.DBObject;
import Common.Database.Database;
import Common.Global;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.Common.TestingServer;
import javafx.util.Pair;
public class DeleteServerAccountObject<D extends DBObject> extends DeleteServerObject<TestingServer, D> {
public DeleteServerAccountObject(Class<D> d_in) {
super(Global.testingServer, d_in);
}
@Override
protected Database getDb() {
return Global.testingServer.account_db;
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.DeleteAccountObjectByPK, Current.getAccount().email,
new Pair<>(target.getClass(), target.getPK())));
}
}

View File

@@ -1,19 +0,0 @@
package Visual_DVM_2021.Passes.Server;
import Common.Current;
import Common.Database.DBObject;
import Common.Database.Database;
import Common.Global;
import TestingSystem.Common.TestingServer;
public class PublishServerAccountObject<D extends DBObject> extends PublishServerObject<TestingServer, D> {
public PublishServerAccountObject(Class<D> d_in) {
super(Global.testingServer, d_in);
}
@Override
protected Database getDb() {
return Global.testingServer.account_db;
}
@Override
protected String getEmail() {
return Current.getAccount().email;
}
}