2023-12-12 01:01:36 +03:00
|
|
|
|
package Visual_DVM_2021.Passes.All;
|
|
|
|
|
|
import Common.Current;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
import Common.Global;
|
|
|
|
|
|
import Common.UI.UI;
|
2023-12-12 01:01:36 +03:00
|
|
|
|
import Common.Utils.Utils;
|
2024-09-14 00:18:27 +03:00
|
|
|
|
import TestingSystem.Common.Configuration;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
import TestingSystem.Common.Group.Group;
|
2024-09-10 01:50:44 +03:00
|
|
|
|
import TestingSystem.Common.TasksPackageState;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
import TestingSystem.Common.Test.Test;
|
2024-09-14 00:18:27 +03:00
|
|
|
|
import TestingSystem.DVM.Configuration.DVMConfiguration;
|
2023-12-12 01:01:36 +03:00
|
|
|
|
import TestingSystem.DVM.DVMPackage.DVMPackage;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
import TestingSystem.DVM.DVMPackage.DVMPackage_json;
|
|
|
|
|
|
import TestingSystem.DVM.DVMTasks.DVMCompilationTask;
|
|
|
|
|
|
import TestingSystem.DVM.DVMTasks.DVMRunTask;
|
2023-12-12 01:01:36 +03:00
|
|
|
|
import Visual_DVM_2021.Passes.Pass_2021;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
|
|
|
|
|
|
import java.util.Vector;
|
2023-12-12 01:01:36 +03:00
|
|
|
|
public class AddTasksToDVMPackage extends Pass_2021<DVMPackage> {
|
2023-12-12 16:09:14 +03:00
|
|
|
|
Vector<DVMCompilationTask> tasks;
|
2024-09-10 01:50:44 +03:00
|
|
|
|
Vector<Configuration> configurations;
|
|
|
|
|
|
Vector<Group> groups;
|
|
|
|
|
|
Vector<Test> tests;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
int tasks_count;
|
2023-12-12 01:01:36 +03:00
|
|
|
|
@Override
|
|
|
|
|
|
public String getIconPath() {
|
|
|
|
|
|
return "/icons/AddTasks.png";
|
|
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
public String getButtonText() {
|
|
|
|
|
|
return "";
|
|
|
|
|
|
}
|
2023-12-12 16:09:14 +03:00
|
|
|
|
//--
|
|
|
|
|
|
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 Vector<DVMCompilationTask> createTasksCGT(
|
2024-09-14 00:18:27 +03:00
|
|
|
|
DVMConfiguration configuration,
|
2023-12-12 16:09:14 +03:00
|
|
|
|
Group group,
|
|
|
|
|
|
Test test
|
|
|
|
|
|
) {
|
|
|
|
|
|
Vector<DVMCompilationTask> compilationTasks = new Vector<>();
|
2024-09-14 00:18:27 +03:00
|
|
|
|
for (String flags : configuration.getFlagsArray()) {
|
2023-12-12 16:09:14 +03:00
|
|
|
|
String checked_flags = checkFlags(flags);
|
|
|
|
|
|
DVMCompilationTask dvmCompilationTask = new DVMCompilationTask(
|
|
|
|
|
|
configuration,
|
|
|
|
|
|
group,
|
|
|
|
|
|
test,
|
|
|
|
|
|
checked_flags
|
|
|
|
|
|
);
|
|
|
|
|
|
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")) {
|
|
|
|
|
|
dvmCompilationTask.runTasks.add(new DVMRunTask(
|
|
|
|
|
|
configuration,
|
|
|
|
|
|
group,
|
|
|
|
|
|
test,
|
|
|
|
|
|
"",
|
|
|
|
|
|
checked_flags,
|
|
|
|
|
|
checkedEnvironments,
|
|
|
|
|
|
configuration.getParamsText(),
|
|
|
|
|
|
target.kernels
|
|
|
|
|
|
));
|
|
|
|
|
|
tasks_count++;
|
|
|
|
|
|
} else
|
|
|
|
|
|
for (String matrix : matrixes) {
|
|
|
|
|
|
dvmCompilationTask.runTasks.add(new DVMRunTask(
|
|
|
|
|
|
configuration,
|
|
|
|
|
|
group,
|
|
|
|
|
|
test,
|
|
|
|
|
|
matrix,
|
|
|
|
|
|
checked_flags,
|
|
|
|
|
|
checkedEnvironments,
|
|
|
|
|
|
configuration.getParamsText(),
|
|
|
|
|
|
target.kernels));
|
|
|
|
|
|
tasks_count++;
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
compilationTasks.add(dvmCompilationTask);
|
|
|
|
|
|
}
|
|
|
|
|
|
return compilationTasks;
|
|
|
|
|
|
}
|
2023-12-12 01:01:36 +03:00
|
|
|
|
@Override
|
|
|
|
|
|
protected boolean canStart(Object... args) throws Exception {
|
|
|
|
|
|
if (Current.Check(Log, Current.DVMPackage)) {
|
|
|
|
|
|
target = Current.getDVMPackage();
|
|
|
|
|
|
if (!target.state.equals(TasksPackageState.Draft)) {
|
|
|
|
|
|
Log.Writeln_("Пакет " + Utils.Brackets(target.id) + " не готовится к публикации!");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
2023-12-12 16:09:14 +03:00
|
|
|
|
//---
|
|
|
|
|
|
tasks = new Vector<>();
|
2024-09-10 01:50:44 +03:00
|
|
|
|
configurations = new Vector<>();
|
|
|
|
|
|
groups = new Vector<>();
|
|
|
|
|
|
tests = new Vector<>();
|
2023-12-12 16:09:14 +03:00
|
|
|
|
tasks_count = 0;
|
|
|
|
|
|
//-----------
|
|
|
|
|
|
//1, Проверяем выбраны ли конфиги.
|
2024-09-14 00:18:27 +03:00
|
|
|
|
if (Global.testingServer.db.dvm_configurations.getCheckedCount() == 0) {
|
2023-12-12 16:09:14 +03:00
|
|
|
|
Log.Writeln_("Не отмечена ни одна конфигурация тестирования.");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
if (Global.testingServer.db.groups.getCheckedCount() > 0) {
|
|
|
|
|
|
//2 Проверяем выбраны ли группы.
|
2024-09-14 00:18:27 +03:00
|
|
|
|
for (DVMConfiguration configuration : Global.testingServer.db.dvm_configurations.getCheckedItems()) {
|
2024-09-10 01:50:44 +03:00
|
|
|
|
configurations.add(configuration);
|
2023-12-12 16:09:14 +03:00
|
|
|
|
for (Group group : Global.testingServer.db.groups.getCheckedItems()) {
|
|
|
|
|
|
Vector<Test> groupTests = new Vector<>();
|
|
|
|
|
|
Vector<Test> checkedGroupTests = new Vector<>();
|
|
|
|
|
|
for (Test test : Global.testingServer.db.tests.Data.values()) {
|
|
|
|
|
|
if (test.group_id == group.id) {
|
|
|
|
|
|
groupTests.add(test);
|
|
|
|
|
|
if (test.isSelected())
|
|
|
|
|
|
checkedGroupTests.add(test);
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (!groupTests.isEmpty()) {
|
2024-09-10 01:50:44 +03:00
|
|
|
|
groups.add(group);
|
2023-12-12 16:09:14 +03:00
|
|
|
|
if (checkedGroupTests.isEmpty()) {
|
2024-09-10 01:50:44 +03:00
|
|
|
|
for (Test test : groupTests) {
|
2023-12-12 16:09:14 +03:00
|
|
|
|
tasks.addAll(createTasksCGT(configuration, group, test));
|
2024-09-10 01:50:44 +03:00
|
|
|
|
tests.add(test);
|
|
|
|
|
|
}
|
2023-12-12 16:09:14 +03:00
|
|
|
|
} else {
|
|
|
|
|
|
//добавляем только отмеченные.
|
|
|
|
|
|
for (Test test : checkedGroupTests) {
|
|
|
|
|
|
tasks.addAll(createTasksCGT(configuration, group, test));
|
2024-09-10 01:50:44 +03:00
|
|
|
|
tests.add(test);
|
2023-12-12 16:09:14 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2024-09-10 01:50:44 +03:00
|
|
|
|
//--
|
2023-12-12 16:09:14 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
if (tasks.isEmpty()) {
|
|
|
|
|
|
Log.Writeln_("Не удалось добавить задачи.\n" +
|
|
|
|
|
|
"Для создания задач отметьте требуемые конфигурации,\n" +
|
|
|
|
|
|
"Отметьте группы, или отдельные тесты в отмеченной текущей группе");
|
|
|
|
|
|
return false;
|
|
|
|
|
|
}
|
|
|
|
|
|
return UI.Question("Будет добавлено " + tasks_count + " задач. Продолжить");
|
|
|
|
|
|
}
|
|
|
|
|
|
//
|
2023-12-14 02:30:56 +03:00
|
|
|
|
return false;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void body() throws Exception {
|
2024-09-13 00:19:15 +03:00
|
|
|
|
target.package_json = new DVMPackage_json();
|
2023-12-12 16:09:14 +03:00
|
|
|
|
DVMPackage_json json = target.package_json;
|
|
|
|
|
|
//инициализируем идентификаторы задач.
|
|
|
|
|
|
for (DVMCompilationTask compilationTask : tasks) {
|
|
|
|
|
|
//--
|
2023-12-27 03:05:46 +03:00
|
|
|
|
compilationTask.id = json.getMaxTaskId();
|
2023-12-12 16:09:14 +03:00
|
|
|
|
//-
|
|
|
|
|
|
for (DVMRunTask runTask : compilationTask.runTasks) {
|
2023-12-27 03:05:46 +03:00
|
|
|
|
runTask.id = json.getMaxTaskId();
|
2023-12-12 16:09:14 +03:00
|
|
|
|
runTask.dvmcompilationtask_id = compilationTask.id;
|
|
|
|
|
|
}
|
2023-12-12 01:01:36 +03:00
|
|
|
|
}
|
2023-12-12 16:09:14 +03:00
|
|
|
|
json.compilationTasks.addAll(tasks);
|
2024-09-10 01:50:44 +03:00
|
|
|
|
//--
|
2024-09-14 00:18:27 +03:00
|
|
|
|
target.saveConfigurations(configurations);
|
|
|
|
|
|
target.saveGroups(groups);
|
|
|
|
|
|
target.saveTests(tests);
|
2024-09-10 01:50:44 +03:00
|
|
|
|
//--
|
2023-12-12 16:09:14 +03:00
|
|
|
|
target.tasksCount += tasks_count;
|
2024-09-13 00:19:15 +03:00
|
|
|
|
target.state= TasksPackageState.Inactive;
|
2023-12-12 16:09:14 +03:00
|
|
|
|
Global.testingServer.db.Update(target);
|
2024-09-10 01:50:44 +03:00
|
|
|
|
//--
|
2024-09-11 17:00:36 +03:00
|
|
|
|
// target.printCGT();
|
2023-12-12 16:09:14 +03:00
|
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
|
|
|
protected void showDone() throws Exception {
|
|
|
|
|
|
Global.testingServer.db.dvmPackages.ShowUI(target.id);
|
2023-12-18 15:44:48 +03:00
|
|
|
|
Global.testingServer.db.dvmRunTasks.ShowDVMPackage(target);
|
2023-12-12 01:01:36 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|