отслеживание нанов в тестах
This commit is contained in:
2025-03-18 15:28:00 +03:00
parent 21a41987b4
commit afaaaba1e7
11 changed files with 65 additions and 68 deletions

View File

@@ -6,6 +6,7 @@ import Common.Visual.Tables.ColumnInfo;
import _VisualDVM.ComponentsServer.SubscriberWorkspace.SubscriberWorkspace;
import _VisualDVM.ComponentsServer.UserAccount.UserAccount;
import _VisualDVM.Global;
import _VisualDVM.Passes.PassCode;
import javax.swing.*;
public class SubscriberWorkspacesForm extends DataSetControlForm<SubscriberWorkspace> {
@@ -45,7 +46,7 @@ public class SubscriberWorkspacesForm extends DataSetControlForm<SubscriberWorks
}
@Override
public DataMenuBar createMenuBar() {
return new DataMenuBar(dataSource.getPluralDescription());
return new DataMenuBar(dataSource.getPluralDescription(), PassCode.DeleteRemoteWorkspace);
}
@Override
public boolean isObjectVisible(SubscriberWorkspace object) {

View File

@@ -3,7 +3,7 @@ import Common.Utils.Vector_;
import java.util.Vector;
public class Constants {
public static final int version = 1216;
public static final int version = 1217;
public static final int planner_version = 24;
public static final int testingMaxKernels = 64;
//--

View File

@@ -14,11 +14,12 @@ public enum TaskState implements StatusEnum {
//-----------------------
Finished,
//--- результирующие
Crushed,
NaN,
DoneWithErrors,
DoneWithDiffs,
AbortedByTimeout,
AbortedByUser,
Crushed,
WrongTestFormat,
InternalError,
Done,
@@ -40,6 +41,7 @@ public enum TaskState implements StatusEnum {
case InternalError:
case Crushed:
case DoneWithDiffs:
case NaN:
return true;
default:
return false;
@@ -47,6 +49,8 @@ public enum TaskState implements StatusEnum {
}
public String getDescription() {
switch (this) {
case NaN:
return "NaN";
case Waiting:
return "ожидание";
case WorkspaceCreated:
@@ -104,6 +108,7 @@ public enum TaskState implements StatusEnum {
case InternalError:
case Canceled:
case DoneWithDiffs:
case NaN:
return VisualiserFonts.BadState;
case Queued:
case Running:
@@ -149,6 +154,7 @@ public enum TaskState implements StatusEnum {
case Crushed:
case InternalError:
case Canceled:
case NaN:
return true;
default:
return false;

View File

@@ -0,0 +1,21 @@
package _VisualDVM.Passes.All;
import _VisualDVM.ComponentsServer.SubscriberWorkspace.SubscriberWorkspace;
import _VisualDVM.Global;
import _VisualDVM.Passes.Server.ComponentsServerPass;
import _VisualDVM.Repository.Server.ServerCode;
import javafx.util.Pair;
public class DeleteRemoteWorkspace extends ComponentsServerPass<SubscriberWorkspace> {
@Override
public String getIconPath() {
return "/Common/icons/Delete.png";
}
@Override
protected boolean canStart(Object... args) throws Exception {
if (Global.componentsServer.credentials_db.workspaces.getUI().CheckCurrent(Log)) {
target = Global.componentsServer.credentials_db.workspaces.getUI().getCurrent();
return SendRequest(ServerCode.DeleteSubscriberWorkspace, "",
new Pair<>(target.getClass(), target.getPK()));
}
return false;
}
}

View File

@@ -1,5 +1,6 @@
package _VisualDVM.Passes.All;
import Common.Passes.Pass;
import _VisualDVM.Utils;
import java.io.BufferedReader;
import java.io.File;
@@ -38,46 +39,5 @@ public class TestPass extends Pass {
}
@Override
protected void body() throws Exception {
int a = 1 / 0;
// System.out.println(Global.componentsServer.credentials_db.userAccounts.getPackedActiveRecipients());
// String cpuId = getMotherboardSN();
// UI.Info(cpuId);
/*
SystemInfo systemInfo = new SystemInfo();
HardwareAbstractionLayer hardware = systemInfo.getHardware();
CentralProcessor processor = hardware.getProcessor();
CentralProcessor.ProcessorIdentifier processorIdentifier = processor.getProcessorIdentifier();
System.out.println("Processor Vendor: " + processorIdentifier.getVendor());
System.out.println("Processor Name: " + processorIdentifier.getName());
System.out.println("Processor ID: " + processorIdentifier.getProcessorID());
System.out.println("Identifier: " + processorIdentifier.getIdentifier());
System.out.println("Microarchitecture: " + processorIdentifier.getMicroarchitecture());
System.out.println("Frequency (Hz): " + processorIdentifier.getVendorFreq());
System.out.println("Frequency (GHz): " + processorIdentifier.getVendorFreq() / 1000000000.0);
*/
/*
String serial = "";
Scanner sc = null;
Process process = null;
try {
process = Runtime.getRuntime().exec(new String[] { "wmic", "cpu", "get", "ProcessorId" });
process.getOutputStream().close();
sc = new Scanner(process.getInputStream());
sc.next();
serial = sc.next();
} catch (IOException e) {
} dummy
UI.Info(Utils_.Brackets(serial));
*/
/*
KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = new SecureRandom();
int keyBitSize = 256;
keyGenerator.init(keyBitSize, secureRandom);
SecretKey secretKey = keyGenerator.generateKey();
System.out.println("====");
System.out.println(secretKey.getEncoded());
System.out.println("====");
*/
}
}

View File

@@ -249,6 +249,7 @@ public enum PassCode implements PassCode_ {
//->
CheckRemoteWorkspace,
PublishRemoteWorkspace,
DeleteRemoteWorkspace,
//->
PrepareForModulesAssembly,
//->
@@ -362,6 +363,8 @@ public enum PassCode implements PassCode_ {
@Override
public String getDescription() {
switch (this) {
case DeleteRemoteWorkspace:
return "Удалить рабочее пространство пользователя";
case CompareDVMRunTaskToEthalon:
return "Сравнить с эталоном";
case ComponentsServerBackUp:

View File

@@ -227,6 +227,9 @@ public abstract class RepositoryServer<D extends Database> {
case ReceiveFile:
ReceiveFile();
break;
case Email:
Email();
break;
default:
UnsafeSession();
break;

View File

@@ -150,12 +150,10 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
if (ethalon == null) {
String options_ = "-s";
String environments_ = "";
if (Global.normalProperties.CompleteCompilationOptions)
options_ = completeOptions(options_);
if (Global.normalProperties.CompleteRunEnvironments)
environments_ = completeEnvironments(environments_);
compilationTasks.add(compilationTask = new DVMCompilationTask(
index, configuration,
options_,
@@ -305,23 +303,21 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
List<String> output_lines = Arrays.asList(output.split("\n"));
List<String> errors_lines = Arrays.asList(errors.split("\n"));
//---
if (output.trim().isEmpty()) {
if (output.trim().isEmpty() || Utils.isCrushed(output_lines, errors_lines)) {
runTask.state = TaskState.Crushed;
} else {
if (Utils.isCrushed(output_lines, errors_lines)) {
runTask.state = TaskState.Crushed;
} else {
if (Utils.hasNan(output_lines))
runTask.state = TaskState.NaN;
else {
//--
Pair<TaskState, Integer> results = new Pair<>(TaskState.Done, 100);
switch (runTask.test_type) {
case Correctness:
results = Utils.analyzeCorrectness(output_lines);
break;
case Performance:
results = Utils.analyzePerformance(output_lines);
runTask.CleanTime = Utils.parseCleanTime(output);
break;
default:
results = Utils.analyzeCorrectness(output_lines);
break;
}
//---
@@ -363,7 +359,7 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
);
String taskOut = FileUtils.readFileToString(taskOutFile);
String ethalonOut = FileUtils.readFileToString(ethalonOutFile);
if (!taskOut.equals(ethalonOut)){
if (!taskOut.equals(ethalonOut)) {
runTask.state = TaskState.DoneWithDiffs;
hasErrors = true;
good--;

View File

@@ -490,6 +490,16 @@ public class Utils {
public static boolean isCrushed(List<String> output_lines, List<String> errors_lines) {
return output_lines.stream().anyMatch(Utils::isCrushedLine) || errors_lines.stream().anyMatch(Utils::isCrushedLine);
}
public static boolean hasNan(List<String> output_lines){
for (String line: output_lines)
if (hasNan(line)) return true;
return false;
}
public static boolean hasNan(String line){
Pattern pattern = Pattern.compile("\\bnan\\b");
Matcher matcher = pattern.matcher(line.toLowerCase());
return matcher.find();
}
public static Pair<TaskState, Integer> analyzeCorrectness(List<String> lines) {
int complete = 0;
int errors = 0;