прерывание пакета. первый вариант.

This commit is contained in:
2023-10-17 00:22:06 +03:00
parent c822cc452b
commit 19f7230eb5
10 changed files with 90 additions and 9 deletions

View File

@@ -1,4 +1,5 @@
package TestingSystem;
import Common.Constants;
import Common.Database.DBObject;
import Common.Database.rDBObject;
import Common.Global;
@@ -21,6 +22,7 @@ import TestingSystem.Tasks.TestCompilationTask;
import TestingSystem.Tasks.TestRunTask;
import TestingSystem.Tasks.TestTask;
import TestingSystem.TasksPackage.TasksPackage;
import TestingSystem.TasksPackage.TasksPackageState;
import TestingSystem.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.Test.Test;
import TestingSystem.Test.TestInterface;
@@ -37,6 +39,7 @@ import javax.swing.*;
import java.io.File;
import java.nio.file.Paths;
import java.util.Comparator;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Vector;
import java.util.stream.Collectors;
@@ -311,6 +314,31 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
groups.sort(Comparator.comparing(o -> o.description));
return groups;
}
private void AbortSapforTasksPackage(SapforTasksPackage object) throws Exception {
if (object.state.equals(TasksPackageState.RunningExecution)) {
File workspace = new File(object.workspace);
//----
File interrupt_file = new File(object.workspace, Constants.INTERRUPT);
//----
FileUtils.writeStringToFile(interrupt_file, new Date().toString());
File aborted_file = new File(object.workspace, Constants.ABORTED);
do {
System.out.println("waiting for interrupt...");
Thread.sleep(1000);
} while (!aborted_file.exists());
System.out.println("coup de grace..");
File[] files = workspace.listFiles((dir, name) -> name.startsWith("SAPFOR_F_"));
if ((files != null) && (files.length > 0)) {
File sapfor = files[0];
String kill_command = "killall -SIGKILL " + sapfor.getName();
System.out.println(kill_command);
Process killer = Runtime.getRuntime().exec(kill_command);
killer.waitFor();
System.out.println("done!");
} else throw new Exception("Не найдена копия SAPFOR");
}else throw new RepositoryRefuseException()
}
@Override
protected void Session() throws Exception {
DBObject dbObject = null;
@@ -323,6 +351,15 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
//------------->>
response = new ServerExchangeUnit_2021(ServerCode.OK);
break;
case AbortSapforTasksPackage:
Print("Прервать пакет тестов SAPFOR");
SetCurrentAccountDB(request.arg);
if (account_db.sapforTasksPackages.containsKey(request.object)) {
SapforTasksPackage sapforTasksPackage = account_db.sapforTasksPackages.get(request.object);
AbortSapforTasksPackage(sapforTasksPackage);
response = new ServerExchangeUnit_2021(ServerCode.OK);
} else throw new RepositoryRefuseException("Не существует пакета " + Utils.Brackets(request.object));
break;
//--
case CheckPackageToKill:
SetCurrentAccountDB(request.arg);