промежуточный. встраиваю тестирование сапфор в существующий планировщик. пока есть баги.

This commit is contained in:
2023-10-13 02:06:46 +03:00
parent c69202d72c
commit 81d6330660
6 changed files with 74 additions and 91 deletions

3
.idea/workspace.xml generated
View File

@@ -8,10 +8,11 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/SapforTestingSystem/SapforTasksPackage/SapforTasksPackage.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/SapforTestingSystem/ServerSapforTestingPlanner/ServerSapforTestingPlanner.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TasksDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TasksDatabase.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/TasksDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TasksDatabase.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingPlanner.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/TestsDatabase.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/TestsDatabase.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -17,6 +17,7 @@ public class SapforTasksPackage extends nDBObject {
public long StartDate = 0; //дата начала выполнения public long StartDate = 0; //дата начала выполнения
public long ChangeDate = 0;//дата окончания выполнения public long ChangeDate = 0;//дата окончания выполнения
//- //-
@Description("DEFAULT 'Queued'")
public TasksPackageState state = TasksPackageState.Queued; public TasksPackageState state = TasksPackageState.Queued;
// допустимые состояния // допустимые состояния
//Queued //Queued

View File

@@ -1,86 +0,0 @@
package SapforTestingSystem.ServerSapforTestingPlanner;
import Common.Constants;
import Common.Utils.Utils;
import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021;
import SapforTestingSystem.SapforTasksPackage.SapforTasksPackage;
import TestingSystem.TasksPackage.TasksPackageState;
import Visual_DVM_2021.Passes.PassException;
import Visual_DVM_2021.Passes.TestingSystemPass;
import java.io.File;
import java.io.Serializable;
import java.util.Date;
public class ServerSapforTestingPlanner {
SapforTasksPackage sapforTasksPackage = null;
//---
int getSleepMillis() {
return 2000;
}
Object ServerCommand(ServerCode code_in, String arg, Serializable object_in) throws Exception {
TestingSystemPass<Object> pass = new TestingSystemPass<Object>() {
@Override
public String getDescription() {
return "";
}
@Override
protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(code_in, arg, object_in));
target = response.object;
}
};
if (!pass.Do()) throw new PassException("Ошибка взаимодействия с сервером " + code_in);
return pass.target;
}
//---
void UpdatePackage(SapforTasksPackage package_in) throws Exception {
package_in.ChangeDate = new Date().getTime();
ServerCommand(ServerCode.EditObject, "", package_in);
}
void PackageStart() throws Exception {
File workspace = new File(sapforTasksPackage.workspace);
File script = new File(sapforTasksPackage.workspace, "start");
ProcessBuilder procBuilder = new ProcessBuilder(script.getAbsolutePath());
procBuilder.directory(workspace);
procBuilder.start();
sapforTasksPackage.state = TasksPackageState.RunningExecution;
UpdatePackage(sapforTasksPackage);
}
void CheckPackageState() throws Exception {
File done = new File(sapforTasksPackage.workspace, Constants.DONE);
File aborted = new File(sapforTasksPackage.workspace, Constants.ABORTED);
if (done.exists()) {
sapforTasksPackage.state = TasksPackageState.Done;
UpdatePackage(sapforTasksPackage);
} else if (aborted.exists()) {
sapforTasksPackage.state = TasksPackageState.Aborted;
UpdatePackage(sapforTasksPackage);
}
}
public void Perform() {
while (true) {
try {
//-
sapforTasksPackage = (SapforTasksPackage) ServerCommand(ServerCode.GetFirstActiveSapforTasksPackage, "", null);
switch (sapforTasksPackage.state) {
case PackageStart:
PackageStart();
break;
case RunningExecution:
CheckPackageState();
break;
default:
break;
}
//-
} catch (Exception ex) {
ex.printStackTrace();
} finally {
try {
Utils.sleep(getSleepMillis());
} catch (Exception ignored) {
}
}
}
}
}

View File

@@ -175,7 +175,8 @@ public class TasksDatabase extends SQLiteDatabase {
} }
if (first_active != null) return first_active; if (first_active != null) return first_active;
if (first_queued != null) { if (first_queued != null) {
first_queued.state = TasksPackageState.TestsSynchronize; // first_queued.state = TasksPackageState.TestsSynchronize; // ? vj
first_queued.state = TasksPackageState.RunningPreparation;
try { try {
Update(first_queued); Update(first_queued);
} catch (Exception ex) { } catch (Exception ex) {

View File

@@ -1,4 +1,5 @@
package TestingSystem; package TestingSystem;
import Common.Constants;
import Common.Global; import Common.Global;
import Common.Utils.Utils; import Common.Utils.Utils;
import GlobalData.Machine.Machine; import GlobalData.Machine.Machine;
@@ -148,7 +149,7 @@ public class TestingPlanner {
void emailPass(String email_in) { void emailPass(String email_in) {
email = email_in; email = email_in;
try { try {
System.out.println(email+" testing planner starts..."); // System.out.println(email+" testing planner starts...");
Pair<TasksPackage, LinkedHashMap<Long, TestCompilationTask>> p = (Pair<TasksPackage, LinkedHashMap<Long, TestCompilationTask>>) ServerCommand(ServerCode.GetFirstActiveAccountPackage); Pair<TasksPackage, LinkedHashMap<Long, TestCompilationTask>> p = (Pair<TasksPackage, LinkedHashMap<Long, TestCompilationTask>>) ServerCommand(ServerCode.GetFirstActiveAccountPackage);
sapforTasksPackage = (SapforTasksPackage) ServerCommand(ServerCode.GetFirstActiveSapforTasksPackage); sapforTasksPackage = (SapforTasksPackage) ServerCommand(ServerCode.GetFirstActiveSapforTasksPackage);
tasksPackage = null; tasksPackage = null;
@@ -156,7 +157,7 @@ public class TestingPlanner {
tasksPackage = p.getKey(); tasksPackage = p.getKey();
packageTasks = p.getValue(); packageTasks = p.getValue();
if (tasksPackage != null) { if (tasksPackage != null) {
System.out.println("found dvm package: "+sapforTasksPackage.id); // System.out.println("found dvm package: "+sapforTasksPackage.id);
String machine_url = tasksPackage.machine_address + ":" + tasksPackage.machine_port; String machine_url = tasksPackage.machine_address + ":" + tasksPackage.machine_port;
if (!machines.containsKey(machine_url)) if (!machines.containsKey(machine_url))
machines.put(machine_url, new Machine( machines.put(machine_url, new Machine(
@@ -187,7 +188,13 @@ public class TestingPlanner {
} }
}else }else
if (sapforTasksPackage!=null){ if (sapforTasksPackage!=null){
System.out.println("found sapfor package: "+sapforTasksPackage.id); System.out.println("found sapfor package: "+sapforTasksPackage.id+" state = "+sapforTasksPackage.state);
try {
PerformSapforPackage();
} catch (Exception ex) {
Print("Исключение при тестировании SAPROR");
Print(ex.getMessage());
}
} }
} catch (Exception ex) { } catch (Exception ex) {
Global.Log.PrintException(ex); Global.Log.PrintException(ex);
@@ -202,4 +209,61 @@ public class TestingPlanner {
public String getPlanner() { public String getPlanner() {
return String.join("/", user.workspace, ConnectionPass.modules, ConnectionPass.planner); return String.join("/", user.workspace, ConnectionPass.modules, ConnectionPass.planner);
} }
//--
void UpdateSapforPackage(SapforTasksPackage package_in) throws Exception {
package_in.ChangeDate = new Date().getTime();
ServerCommand(ServerCode.EditAccountObject, package_in);
//---------------
/*
if ((package_in.needsEmail == 1) &&
(package_in.state.equals(TasksPackageState.PackageStart) ||
(package_in.state.equals(TasksPackageState.Done)))) {
EmailMessage message = new EmailMessage();
message.subject = "Состояние пакета задач " + Utils.Brackets(package_in.id) + " изменилось на " + Utils.Brackets(package_in.state.getDescription());
message.text = package_in.summary;
message.targets.add(email);
ServerCommand(ServerCode.Email, message);
}
*/
}
void SapforPackageStart() throws Exception {
System.out.println("start sapfor package "+sapforTasksPackage.id);
File workspace = new File(sapforTasksPackage.workspace);
File script = new File(sapforTasksPackage.workspace, "start");
ProcessBuilder procBuilder = new ProcessBuilder(script.getAbsolutePath());
procBuilder.directory(workspace);
procBuilder.start();
sapforTasksPackage.state = TasksPackageState.RunningExecution;
UpdateSapforPackage(sapforTasksPackage);
System.out.println("done");
}
void CheckSapforPackageState() throws Exception {
System.out.println("check sapfor package "+sapforTasksPackage.id);
File done = new File(sapforTasksPackage.workspace, Constants.DONE);
File aborted = new File(sapforTasksPackage.workspace, Constants.ABORTED);
if (done.exists()) {
sapforTasksPackage.state = TasksPackageState.Done;
UpdateSapforPackage(sapforTasksPackage);
System.out.println("package done");
} else if (aborted.exists()) {
sapforTasksPackage.state = TasksPackageState.Aborted;
UpdateSapforPackage(sapforTasksPackage);
System.out.println("package aborted");
}else {
System.out.println("package running");
}
}
//--
public void PerformSapforPackage() throws Exception {
switch (sapforTasksPackage.state) {
case RunningPreparation:
SapforPackageStart();
break;
case RunningExecution:
CheckSapforPackageState();
break;
default:
break;
}
}
} }

View File

@@ -28,6 +28,7 @@ import TestingSystem.Tasks.TestCompilationTask;
import TestingSystem.Tasks.TestRunTask; import TestingSystem.Tasks.TestRunTask;
import TestingSystem.Tasks.TestTask; import TestingSystem.Tasks.TestTask;
import TestingSystem.TasksPackage.TasksPackage; import TestingSystem.TasksPackage.TasksPackage;
import TestingSystem.TasksPackage.TasksPackageState;
import TestingSystem.TasksPackageToKill.TasksPackageToKill; import TestingSystem.TasksPackageToKill.TasksPackageToKill;
import TestingSystem.Test.Test; import TestingSystem.Test.Test;
import TestingSystem.Test.TestInterface; import TestingSystem.Test.TestInterface;
@@ -378,6 +379,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
sapforTasksPackage.sapfor_build_date = sapfor.buildDate; sapforTasksPackage.sapfor_build_date = sapfor.buildDate;
sapforTasksPackage.testsNames = String.join(";", package_json.tests); sapforTasksPackage.testsNames = String.join(";", package_json.tests);
sapforTasksPackage.StartDate = new Date().getTime(); sapforTasksPackage.StartDate = new Date().getTime();
sapforTasksPackage.state = TasksPackageState.Queued;
account_db.Update(sapforTasksPackage); account_db.Update(sapforTasksPackage);
} }
@Override @Override