мелочи. название p для версии общей памяти, фильтр задач по матрицам, отображение числа завершившихся задач в статусе, отображение размерности матрицы и числа процессов в таблице задач
This commit is contained in:
2025-03-06 17:59:03 +03:00
parent 20aef1f340
commit 7b81a8bdd0
26 changed files with 190 additions and 83 deletions

View File

@@ -214,12 +214,6 @@ public abstract class Sapfor extends OSDComponent {
if (!file.setExecutable(true))
throw new Exception("Не удалось сделать файл скрипта " + name + " исполняемым!");
//-- Windows
if (!Utils_.isWindows()) {
Set<PosixFilePermission> permissions = new HashSet<>();
permissions.add(PosixFilePermission.OWNER_EXECUTE);
permissions.add(PosixFilePermission.OWNER_READ);
Files.setPosixFilePermissions(file.toPath(), permissions);
}
boolean flag = false;
do {
try {

View File

@@ -3,9 +3,9 @@ import Common.Utils.Vector_;
import java.util.Vector;
public class Constants {
public static final int version = 1195;
public static final int version = 1198;
public static final int planner_version = 12;
public static final int testingMaxKernels = 64; //вообще говоря, это параметр машины.
public static final int testingMaxKernels = 64;
//--
public static final String ApplicationFileName = "VisualSapfor.jar";
//--

View File

@@ -1,7 +1,6 @@
package _VisualDVM;
import Common.CommonConstants;
import _VisualDVM.ComponentsServer.UserAccount.UserAccount;
import _VisualDVM.ComponentsServer.UserAccount.AccountRole;
import _VisualDVM.Passes.PassCode;
import com.google.gson.annotations.Expose;
@@ -14,9 +13,9 @@ public class NormalProperties extends VisualDVMProperties {
@Expose
public String Name = "";
@Expose
public String ServerUserPassword="";
public String ServerUserPassword = "";
@Expose
public boolean OfferRegistrationOnStart=true;
public boolean OfferRegistrationOnStart = true;
//--->
@Expose
public String Workspace = ""; // место хранения проектов, и загруженных проектов
@@ -66,13 +65,17 @@ public class NormalProperties extends VisualDVMProperties {
public int Kernels = Utils.getHalfKernels();
@Expose
public String LocalMakePathWindows = "C:\\MinGW\\msys\\1.0\\bin\\make.exe";
//--
//--тестирование
@Expose
public int CheckTestingIntervalSeconds = 10; //интервал автопроверки тестирования
@Expose
public boolean AutoCheckTesting = false; // проверять ли задачи тестирования при включенном визуализаторе.
@Expose
public boolean EmailOnTestingProgress = false; //включено ли оповещение по email о результатах тестирования.
@Expose
public boolean CompleteCompilationOptions = true;
@Expose
public boolean CompleteRunEnvironments = true;
//--
@Expose
public int lastMachineId = CommonConstants.Nan;
@@ -116,6 +119,10 @@ public class NormalProperties extends VisualDVMProperties {
@Override
public String getFieldDescription(String fieldName) {
switch (fieldName) {
case "CompleteCompilationOptions":
return "Дополнение опций компиляции";
case "CompleteRunEnvironments":
return "Дополнение переменных окружения запуска";
case "OfferRegistrationOnStart":
return "Проверка регистрации";
case "Email":
@@ -176,7 +183,7 @@ public class NormalProperties extends VisualDVMProperties {
public boolean controlAction(String fieldName, JMenuItem control) {
return (Global.mainModule.getPass(PassCode.UpdateProperty).Do(fieldName));
}
public void SynchronizeAccount(UserAccount account){
public void SynchronizeAccount(UserAccount account) {
Name = account.name;
Email = account.email;
Update();

View File

@@ -103,6 +103,7 @@ public class RefreshDVMPackageResults extends TestingServerPass<DVMPackage> {
}
//--
target.saveJson(); //запись обновленных результатов пакета в json!
target.doneTasksCount = good;
target.state = hasErrors ? TasksPackageState.DoneWithErrors : TasksPackageState.Done;
double percent = (((double) (good)) / target.tasksCount) * 100.0;
target.description = "Выполнено на " + ((int) percent) + "%\n" +

View File

@@ -1,4 +1,8 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Passes.Sapfor.SapforTransformation;
public class SPF_SharedMemoryParallelization extends SapforTransformation {
@Override
protected String getVersionLetter() {
return "p";
}
}

View File

@@ -6,7 +6,6 @@ import Common.Utils.Utils_;
import _VisualDVM.TestingSystem.Common.Configuration.Configuration;
import _VisualDVM.TestingSystem.Common.Configuration.Json.ConfigurationsJson;
import _VisualDVM.TestingSystem.Common.TasksPackageState;
import _VisualDVM.Utils;
import com.sun.org.glassfish.gmbal.Description;
import java.io.File;
@@ -14,6 +13,8 @@ import java.util.Vector;
public abstract class TestingPackage<J> extends riDBObject {
public String PID = "";
public int tasksCount = 0; //Общее число задач
@Description("DEFAULT 0")
public int doneTasksCount = 0;
//--
public int kernels = 1;
public int needsEmail = 0;
@@ -24,8 +25,8 @@ public abstract class TestingPackage<J> extends riDBObject {
public int progress = 0; //прогресс выполнения
public long StartDate = 0;
public long ChangeDate = 0;
public long getMilliseconds(){
return ((StartDate!=0)&&(ChangeDate!=0))?ChangeDate-StartDate:0;
public long getMilliseconds() {
return ((StartDate != 0) && (ChangeDate != 0)) ? ChangeDate - StartDate : 0;
}
@Description("DEFAULT 0")
public int connectionErrosCount = 0;
@@ -47,6 +48,7 @@ public abstract class TestingPackage<J> extends riDBObject {
TestingPackage tp = (TestingPackage) src;
//--
tasksCount = tp.tasksCount;
doneTasksCount = tp.doneTasksCount;
needsEmail = tp.needsEmail;
version = tp.version;
drv = tp.drv;

View File

@@ -75,8 +75,10 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
//---
for (Pair<String, String> p: params) {
//--
String options_ = completeOptions(p.getKey());
String environments_ = completeEnvironments(p.getValue());
String options_ = Global.normalProperties.CompleteCompilationOptions ?
completeOptions(p.getKey()) : p.getKey();
String environments_ = Global.normalProperties.CompleteRunEnvironments ?
completeEnvironments(p.getValue()) : p.getValue();
//--
DVMCompilationTask compilationTask =
new DVMCompilationTask(configuration, options_, group, test);

View File

@@ -1,17 +1,26 @@
package _VisualDVM.TestingSystem.DVM.DVMPackage.UI;
import Common.Database.Tables.DataSet;
import Common.Passes.PassCode_;
import Common.Utils.Utils_;
import Common.Visual.Controls.MenuBarButton;
import Common.Visual.Controls.StableMenuItem;
import Common.Visual.DataSetControlForm;
import Common.Visual.DataSetFiltersMenu;
import Common.Visual.FilterFlag;
import Common.Visual.FilterMenuFlag;
import Common.Visual.Menus.DataMenuBar;
import Common.Visual.Tables.*;
import Common.Visual.Tables.ColumnInfo;
import Common.Visual.Tables.RendererDate;
import Common.Visual.Tables.RendererMilliseconds;
import Common.Visual.Tables.RendererProgressBar;
import _VisualDVM.Global;
import _VisualDVM.GlobalData.Tasks.TaskState;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.ServerObjectsCache.PackageCache;
import _VisualDVM.ServerObjectsCache.VisualCaches;
import _VisualDVM.TestingSystem.Common.TasksPackageState;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
import _VisualDVM.Visual.Tables.RendererTestingPackageStatus;
import javax.swing.*;
import java.util.Comparator;
@@ -107,11 +116,11 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
new ColumnInfo<DVMPackage>("статус") {
@Override
public Object getFieldAt(DVMPackage object) {
return object.state;
return object;
}
@Override
public Class getRendererClass() {
return RendererStatusEnum.class;
return RendererTestingPackageStatus.class;
}
}
);
@@ -178,7 +187,19 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
protected boolean validate(DVMPackage object) {
return object.state.isActive();
}
});
},
new FilterFlag<DVMPackage>(dataSource, new MenuBarButton() {
{
setText("С ошибками");
setToolTipText("Отображать только пакеты тестов с ошибками");
}
}, false) {
@Override
protected boolean validate(DVMPackage object) {
return object.state.equals(TasksPackageState.DoneWithErrors);
}
}
);
}
@Override
protected Comparator<DVMPackage> getDefaultComparator() {

View File

@@ -17,40 +17,6 @@ public class DVMCompilationTask extends DVMTask {
super(configuration, group, test, flags_in);
maxtime = configuration.c_maxtime;
}
/*
public DVMCompilationTask(DVMConfiguration configuration, DVMSettings dvmSettings, Group group, Test test, int kernels_in) {
super(configuration, group, test, checkFlags(dvmSettings.flags));
maxtime = configuration.c_maxtime;
Vector<String> matrixes = dvmSettings.getMatrixes(test.max_dim);
String checkedEnvironments = checkEnvironments(dvmSettings.environments);
if (dvmSettings.flags.trim().equalsIgnoreCase("-s")) {
runTasks.add(new DVMRunTask(
configuration,
dvmSettings,
group,
test,
"",
flags,
checkedEnvironments,
kernels_in
));
} else kill
for (String matrix : matrixes) {
runTasks.add(new DVMRunTask(
configuration,
dvmSettings,
group,
test,
matrix,
flags,
checkedEnvironments,
kernels_in));
}
}
*/
//--
@Override
public Vector<String> pack(Object arg) {

View File

@@ -29,10 +29,6 @@ public class DVMRunTask extends DVMTask {
@Expose
public int cube = 1;
@Expose
public int min_dim = 1;
@Expose
public int max_dim = 1;
@Expose
public String environments = "";
@Expose
public String usr_par = "";
@@ -55,8 +51,6 @@ public class DVMRunTask extends DVMTask {
compilation_state = TaskState.Waiting;
//инфа о запуске
cube = settings.cube;
min_dim = settings.max_dim_proc_count;
max_dim = settings.max_dim_proc_count;
maxtime = configuration.maxtime;
environments = environments_in;
usr_par = settings.getParamsText();
@@ -81,8 +75,6 @@ public class DVMRunTask extends DVMTask {
progress = rt.progress;
language = rt.language;
cube = rt.cube;
min_dim = rt.min_dim;
max_dim = rt.max_dim;
maxtime = rt.maxtime;
environments = rt.environments;
usr_par = rt.usr_par;

View File

@@ -14,6 +14,7 @@ import _VisualDVM.GlobalData.Tasks.TaskState;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.ProjectData.LanguageName;
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
import _VisualDVM.Utils;
import javax.swing.*;
import java.util.Comparator;
@@ -68,6 +69,18 @@ public class DVMRunTasksForm extends DataSetControlForm<DVMRunTask> {
return object.matrix;
}
},
new ColumnInfo<DVMRunTask>("dim") {
@Override
public Object getFieldAt(DVMRunTask object) {
return Utils.getMatrixDimension(object.matrix);
}
},
new ColumnInfo<DVMRunTask>("CPU") {
@Override
public Object getFieldAt(DVMRunTask object) {
return Utils.getMatrixProcessors(object.matrix);
}
},
new ColumnInfo<DVMRunTask>("Окружение") {
@Override
public Object getFieldAt(DVMRunTask object) {
@@ -118,6 +131,7 @@ public class DVMRunTasksForm extends DataSetControlForm<DVMRunTask> {
protected void createFilters() {
AddFilters(
new HeaderTextFilter<>(dataSource, 2, 70),
new HeaderTextFilter<>(dataSource, 7, 100, false),
new DataSetFiltersMenu<DVMRunTask>("Язык", dataSource) {
@Override
public void fill() {

View File

@@ -165,6 +165,7 @@ public class RemoteDVMTestingPlanner extends DVMTestingPlanner {
}
}
testingPackage.progress = 100;
testingPackage.doneTasksCount = good;
testingPackage.saveJson(); //запись обновленных результатов пакета в json!
Print("analysis done, ct_count=" + ct_count + " rt count=" + rt_count);
testingPackage.state = hasErrors ? TasksPackageState.DoneWithErrors : TasksPackageState.Done;

View File

@@ -150,7 +150,7 @@ public class SapforPackage_json implements Serializable {
String.valueOf(task.sapfor_configuration_id)
).toFile());
root.add(taskNode);
if (task.state.equals(TaskState.DoneWithErrors))
if (!task.state.equals(TaskState.Done))
root.errors_count++;
}
}

View File

@@ -60,7 +60,7 @@ public class PerformSapforTask extends Pass<SapforTask> {
}
//слегка изменить подход.
protected boolean transformation(PassCode code) throws Exception {
task = new File(parentTask, "v1");
task = new File(parentTask, code.equals(PassCode.SPF_SharedMemoryParallelization)?"p1":"v1" );
Utils_.CheckAndCleanDirectory(task); //папка для преобразования.
//если версия пустая, это тоже результат тестирования. Поэтому должна учитываться в древе.
target.versions.add(version_json = new SapforVersion_json(

View File

@@ -107,6 +107,7 @@ public class SapforPackage extends TestingPackage<SapforPackage_json> {
double percent = (((double) (good)) / tasksCount) * 100.0;
description = "Выполнено на " + ((int) percent) + "%\n" +
"Всего задач: " + tasksCount + ", из них с ошибками " + bad;
doneTasksCount= good;
}
public boolean canCompare(SapforPackage package2, TextLog log){
if (package_json.tasks.size() != package2.package_json.tasks.size()) {

View File

@@ -10,7 +10,10 @@ import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import _VisualDVM.ServerObjectsCache.PackageCache;
import _VisualDVM.ServerObjectsCache.VisualCaches;
import _VisualDVM.TestingSystem.Common.TasksPackageState;
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
import _VisualDVM.TestingSystem.SAPFOR.SapforPackage.SapforPackage;
import _VisualDVM.Visual.Tables.RendererTestingPackageStatus;
import javax.swing.*;
import java.util.Comparator;
@@ -100,11 +103,11 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
new ColumnInfo<SapforPackage>("статус") {
@Override
public Object getFieldAt(SapforPackage object) {
return object.state;
return object;
}
@Override
public Class getRendererClass() {
return RendererStatusEnum.class;
return RendererTestingPackageStatus.class;
}
}
);
@@ -163,6 +166,20 @@ public class SapforPackagesForm extends DataSetControlForm<SapforPackage> {
protected boolean validate(SapforPackage object) {
return object.state.isActive();
}
});
},
new FilterFlag<SapforPackage>(dataSource, new MenuBarButton() {
{
setText("С ошибками");
setToolTipText("Отображать только пакеты тестов с ошибками");
}
}, false) {
@Override
protected boolean validate(SapforPackage object) {
return object.state.equals(TasksPackageState.DoneWithErrors);
}
}
);
}
}

View File

@@ -354,6 +354,11 @@ public class Utils {
res *= Integer.parseInt(d);
return res;
}
public static int getMatrixDimension(String matrix) {
if (matrix.trim().isEmpty()) return 0;
return matrix.split(" ").length;
}
public static int getCTestMaxDim(File test) {
int fileMax = 0;
final String prefix = "#pragma dvm array distribute";

View File

@@ -107,6 +107,8 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showNoBugReports();
Global.normalProperties.setControlVisible("AutoBugReportsLoad", false);
Global.normalProperties.setControlVisible("AutoTestsLoad", false);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", false);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", false);
Global.normalProperties.AutoCheckTesting = false;
Global.normalProperties.Update();
};
@@ -117,6 +119,8 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showMyOnlyBugReports();
Global.normalProperties.setControlVisible("AutoBugReportsLoad", true);
Global.normalProperties.setControlVisible("AutoTestsLoad", false);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", false);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", false);
Global.normalProperties.AutoCheckTesting = false;
Global.normalProperties.Update();
};
@@ -127,6 +131,8 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showAllBugreports();
Global.normalProperties.setControlVisible("AutoBugReportsLoad", true);
Global.normalProperties.setControlVisible("AutoTestsLoad", true);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", true);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", true);
}
void showAdminRights(){
Global.mainModule.SetAdminPassesAccess();
@@ -135,6 +141,8 @@ public class MainUI extends UIModule_ {
getMainWindow().getCallbackWindow().showAllBugReportsAdmin(); //метод избыточный. возможно.
Global.normalProperties.setControlVisible("AutoBugReportsLoad", true);
Global.normalProperties.setControlVisible("AutoTestsLoad", true);
Global.normalProperties.setControlVisible("AddDefaultsToCompilationOptions", true);
Global.normalProperties.setControlVisible("AddDefaultsToRunEnvironments", true);
};
public void ShowAccount(){
getMainWindow().getCallbackWindow().ShowAccountInfo();

View File

@@ -1,4 +1,4 @@
package _VisualDVM.Visual.Menus.MainMenuBar;
package _VisualDVM.Visual.Menus.MainMenuBar.VisualiserSettingsMenu;
import _VisualDVM.Global;
import _VisualDVM.Visual.Menus.PropertiesSubmenu;
public class SynchronizationSettingsMenu extends PropertiesSubmenu {

View File

@@ -0,0 +1,12 @@
package _VisualDVM.Visual.Menus.MainMenuBar.VisualiserSettingsMenu;
import _VisualDVM.Global;
import _VisualDVM.Visual.Menus.PropertiesSubmenu;
public class TestingMenu extends PropertiesSubmenu {
public TestingMenu() {
super("Тестирование", null,
Global.normalProperties,
"CompleteCompilationOptions",
"CompleteRunEnvironments"
);
}
}

View File

@@ -1,4 +1,4 @@
package _VisualDVM.Visual.Menus.MainMenuBar;
package _VisualDVM.Visual.Menus.MainMenuBar.VisualiserSettingsMenu;
import _VisualDVM.Global;
import _VisualDVM.Visual.Menus.PropertiesSubmenu;
public class VersionsComparisonMenu extends PropertiesSubmenu {

View File

@@ -2,8 +2,6 @@ package _VisualDVM.Visual.Menus.MainMenuBar.VisualiserSettingsMenu;
import Common.Utils.Utils_;
import Common.Visual.Menus.VisualiserMenu;
import _VisualDVM.Global;
import _VisualDVM.Visual.Menus.MainMenuBar.SynchronizationSettingsMenu;
import _VisualDVM.Visual.Menus.MainMenuBar.VersionsComparisonMenu;
import _VisualDVM.Visual.Menus.PropertiesSubmenu;
public class VisualiserSettingsMenu extends VisualiserMenu {
public VisualiserSettingsMenu() {
@@ -29,9 +27,9 @@ public class VisualiserSettingsMenu extends VisualiserMenu {
"Kernels"
));
}
add(new SynchronizationSettingsMenu());
add(new VersionsComparisonMenu());
add(new TestingMenu());
add(Global.normalProperties.getMenuItem("Workspace"));
add(Global.normalProperties.getMenuItem("BugReportsAgeLimit"));
}

View File

@@ -0,0 +1,32 @@
package _VisualDVM.Visual.Tables;
import Common.MainModule_;
import Common.Utils.Utils_;
import Common.Visual.StatusEnum;
import Common.Visual.Tables.RendererCell;
import _VisualDVM.TestingSystem.Common.TasksPackageState;
import _VisualDVM.TestingSystem.Common.TestingPackage.TestingPackage;
import javax.swing.*;
public class RendererTestingPackageStatus extends RendererCell<TestingPackage> {
@Override
public TestingPackage Init(JTable table, Object value, int row, int column) {
return (TestingPackage) value;
}
@Override
public void Display() {
if (value != null) {
TasksPackageState state = value.state;
setFont(MainModule_.instance.getUI().getTheme().Fonts.get(state.getFont()));
String text_ = state.getDescription();
switch (state){
case Done:
case DoneWithErrors:
text_+=" "+ Utils_.Brackets(value.doneTasksCount+"/"+value.tasksCount);
break;
default:
break;
}
setText(text_);
}
}
}