Оптимизация поиска нового состояния в папке state.
This commit is contained in:
9
.idea/workspace.xml
generated
9
.idea/workspace.xml
generated
@@ -8,16 +8,9 @@
|
|||||||
<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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TasksPackage/TasksPackageState.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TasksPackage/TasksPackageState.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/GlobalData/Tasks/Supervisor/Remote/RemoteTaskSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Tasks/Supervisor/Remote/RemoteTaskSupervisor.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/GlobalData/Tasks/Supervisor/Remote/ServerRunSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Tasks/Supervisor/Remote/ServerRunSupervisor.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/TestsSupervisor_2022.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/UserConnection.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/UserConnection.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/RemoteInitialiseUser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/RemoteInitialiseUser.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/RemoteInitialiseUser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/RemoteInitialiseUser.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SSH/ConnectionPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SSH/ConnectionPass.java" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/files/Planner/Supervisor.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/Planner/Supervisor.h" afterDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/files/Planner/Task.h" beforeDir="false" afterPath="$PROJECT_DIR$/src/files/Planner/Task.h" 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" />
|
||||||
|
|||||||
@@ -4,8 +4,12 @@ import Common.UI.StatusEnum;
|
|||||||
import Common.UI.Themes.VisualiserFonts;
|
import Common.UI.Themes.VisualiserFonts;
|
||||||
|
|
||||||
import java.awt.*;
|
import java.awt.*;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Vector;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
public enum TasksPackageState implements StatusEnum {
|
public enum TasksPackageState implements StatusEnum {
|
||||||
Queued,
|
Queued,
|
||||||
|
//--
|
||||||
TestsSynchronize, //оставить.
|
TestsSynchronize, //оставить.
|
||||||
PackageWorkspaceCreation,
|
PackageWorkspaceCreation,
|
||||||
PackageStart,
|
PackageStart,
|
||||||
@@ -19,7 +23,6 @@ public enum TasksPackageState implements StatusEnum {
|
|||||||
RunningExecution,
|
RunningExecution,
|
||||||
//--
|
//--
|
||||||
RunningEnd, //скачка архива
|
RunningEnd, //скачка архива
|
||||||
Cleaning, //todo удаление папки пакета на удаленной машине. пока отладки ради не делать.
|
|
||||||
//---------------------------------------
|
//---------------------------------------
|
||||||
Analysis,
|
Analysis,
|
||||||
Done,
|
Done,
|
||||||
@@ -77,12 +80,15 @@ public enum TasksPackageState implements StatusEnum {
|
|||||||
return "загрузка результатов";
|
return "загрузка результатов";
|
||||||
case Analysis:
|
case Analysis:
|
||||||
return "анализ результатов";
|
return "анализ результатов";
|
||||||
case Cleaning:
|
|
||||||
return "очистка";
|
|
||||||
case Done:
|
case Done:
|
||||||
return "завершен";
|
return "завершен";
|
||||||
default:
|
default:
|
||||||
return StatusEnum.super.getDescription();
|
return StatusEnum.super.getDescription();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Vector<TasksPackageState> getHigherStates(){
|
||||||
|
return Arrays.stream(values()).filter(state -> state.ordinal() > this.ordinal()).collect(Collectors.toCollection(Vector::new));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,7 +12,6 @@ import TestingSystem.DVM.Tasks.TestRunTask;
|
|||||||
import TestingSystem.DVM.Tasks.TestTask;
|
import TestingSystem.DVM.Tasks.TestTask;
|
||||||
import TestingSystem.DVM.TasksPackage.TasksPackage;
|
import TestingSystem.DVM.TasksPackage.TasksPackage;
|
||||||
import TestingSystem.DVM.TasksPackage.TasksPackageState;
|
import TestingSystem.DVM.TasksPackage.TasksPackageState;
|
||||||
import com.jcraft.jsch.ChannelSftp;
|
|
||||||
import javafx.util.Pair;
|
import javafx.util.Pair;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
@@ -20,7 +19,7 @@ import java.io.File;
|
|||||||
import java.nio.charset.Charset;
|
import java.nio.charset.Charset;
|
||||||
import java.nio.file.Paths;
|
import java.nio.file.Paths;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Comparator;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
public class TestsSupervisor_2022 {
|
public class TestsSupervisor_2022 {
|
||||||
@@ -149,23 +148,18 @@ public class TestsSupervisor_2022 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void checkNextState() throws Exception {
|
public void checkNextState() throws Exception {
|
||||||
TasksPackageState oldState = tasksPackage.state;
|
RemoteFile stateDir = new RemoteFile(packageRemoteWorkspace, "state");
|
||||||
Vector<ChannelSftp.LsEntry> files_ = connection.sftpChannel.ls(packageRemoteWorkspace.full_name + "/state");
|
//состояния пакета могут меняться только по возрастанию. ищем, появилось ли такое.
|
||||||
Vector<ChannelSftp.LsEntry> files = new Vector<>();
|
Vector<TasksPackageState> higherStates = tasksPackage.state.getHigherStates();
|
||||||
for (ChannelSftp.LsEntry file : files_) {
|
Collections.reverse(higherStates); //берем в обратном порядке, чтобы быстрее найти высшее.
|
||||||
try {
|
for (TasksPackageState state: higherStates){
|
||||||
TasksPackageState.valueOf(file.getFilename());
|
RemoteFile file = new RemoteFile(stateDir, state.toString());
|
||||||
files.add(file);
|
if (connection.Exists(file)){
|
||||||
} catch (Exception ignore) {
|
System.out.println("found new state: "+file.name);
|
||||||
}
|
tasksPackage.state = state;
|
||||||
}
|
|
||||||
files.sort(Comparator.comparingInt(o -> o.getAttrs().getMTime()));
|
|
||||||
if (!files.isEmpty()) {
|
|
||||||
String fileName = files.get(files.size() - 1).getFilename();
|
|
||||||
System.out.println(fileName + " last file");
|
|
||||||
tasksPackage.state = TasksPackageState.valueOf(files.get(files.size() - 1).getFilename());
|
|
||||||
if (tasksPackage.state != oldState)
|
|
||||||
planner.UpdatePackage();
|
planner.UpdatePackage();
|
||||||
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public void DownloadResults() throws Exception {
|
public void DownloadResults() throws Exception {
|
||||||
@@ -182,6 +176,7 @@ public class TestsSupervisor_2022 {
|
|||||||
}
|
}
|
||||||
public void AnalyseResults() throws Exception {
|
public void AnalyseResults() throws Exception {
|
||||||
System.out.println("analysing results");
|
System.out.println("analysing results");
|
||||||
|
if (false) {
|
||||||
int ct_count = 0;
|
int ct_count = 0;
|
||||||
int rt_count = 0;
|
int rt_count = 0;
|
||||||
for (TestCompilationTask testCompilationTask : compilationTasks) {
|
for (TestCompilationTask testCompilationTask : compilationTasks) {
|
||||||
@@ -228,6 +223,7 @@ public class TestsSupervisor_2022 {
|
|||||||
//теперь обновить их единым списком, и удалить задачи на компиляцию.
|
//теперь обновить их единым списком, и удалить задачи на компиляцию.
|
||||||
planner.ServerCommand(ServerCode.UpdateTestTasks, compilationTasks);
|
planner.ServerCommand(ServerCode.UpdateTestTasks, compilationTasks);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
public boolean CheckTask(TestTask testTask) throws Exception {
|
public boolean CheckTask(TestTask testTask) throws Exception {
|
||||||
File taskWorkspace = Paths.get(packageLocalWorkspace.getAbsolutePath(), "results", String.valueOf(testTask.id)).toFile();
|
File taskWorkspace = Paths.get(packageLocalWorkspace.getAbsolutePath(), "results", String.valueOf(testTask.id)).toFile();
|
||||||
if (taskWorkspace.exists()) {
|
if (taskWorkspace.exists()) {
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class RemoteInitialiseUser extends CurrentConnectionPass<String> {
|
|||||||
"cd " + Utils.DQuotes(sftpChannel.pwd()), //нужны ли тут кавычки?
|
"cd " + Utils.DQuotes(sftpChannel.pwd()), //нужны ли тут кавычки?
|
||||||
"g++ " + starter_code + " -o " + starter,
|
"g++ " + starter_code + " -o " + starter,
|
||||||
"g++ " + launcher_code + " -o " + launcher,
|
"g++ " + launcher_code + " -o " + launcher,
|
||||||
"g++ -O3 -std=C++17 Planner.cpp -o " + planner,
|
"g++ -O3 -std=c++17 Planner.cpp -o " + planner,
|
||||||
"chmod 0777 " + starter,
|
"chmod 0777 " + starter,
|
||||||
"chmod 0777 " + launcher,
|
"chmod 0777 " + launcher,
|
||||||
"chmod 0777 " + planner
|
"chmod 0777 " + planner
|
||||||
|
|||||||
Reference in New Issue
Block a user