промежуточный. встраиваю тестирование сапфор в существующий планировщик. пока есть баги.
This commit is contained in:
3
.idea/workspace.xml
generated
3
.idea/workspace.xml
generated
@@ -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" />
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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) {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user