внутренний проход на обновление результатов анализа пакетов двм системы. пока только по заявкам, в обычной версии никому его не видно. Возможно и не понадобится больше.
This commit is contained in:
7
.idea/workspace.xml
generated
7
.idea/workspace.xml
generated
@@ -7,13 +7,14 @@
|
|||||||
</component>
|
</component>
|
||||||
<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 afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/RefreshDVMPackageResults.java" afterDir="false" />
|
|
||||||
<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/_VisualDVM/Passes/PassCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/PassCode.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/DownloadTaskTest.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/DownloadTaskTest.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/RefreshDVMPackageResults.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Passes/All/RefreshDVMPackageResults.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Component/Visualiser.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Repository/Server/ServerCode.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/Common/TestingServer.java" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMPackage/UI/DVMPackagesForm.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Utils.java" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/TestingForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/Visual/Windows/TestingForm.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" />
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package _VisualDVM.Passes.All;
|
package _VisualDVM.Passes.All;
|
||||||
import _VisualDVM.Global;
|
import _VisualDVM.Global;
|
||||||
|
import _VisualDVM.Repository.Server.ServerCode;
|
||||||
import _VisualDVM.TestingSystem.Common.Test.Test;
|
import _VisualDVM.TestingSystem.Common.Test.Test;
|
||||||
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
|
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
|
||||||
public class DownloadTaskTest extends DownloadTest {
|
public class DownloadTaskTest extends DownloadTest {
|
||||||
@@ -10,13 +11,14 @@ public class DownloadTaskTest extends DownloadTest {
|
|||||||
@Override
|
@Override
|
||||||
protected boolean canStart(Object... args) throws Exception {
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
target = null;
|
target = null;
|
||||||
if (Global.mainModule.getAccount().CheckRegistered(Log) &&
|
if (Global.testingServer.db.dvmRunTasks.getUI().CheckCurrent(Log)) {
|
||||||
Global.testingServer.db.dvmRunTasks.getUI().CheckCurrent(Log)) {
|
|
||||||
DVMRunTask task = Global.testingServer.db.dvmRunTasks.getUI().getCurrent();
|
DVMRunTask task = Global.testingServer.db.dvmRunTasks.getUI().getCurrent();
|
||||||
//-- квазиобъект, нам от него нужно только имя.
|
if (!Global.testingServer.db.tests.containsKey(task.test_id)){
|
||||||
target = new Test();
|
Log.Writeln_("Теста с ключом "+task.test_id+" не существует!");
|
||||||
target.id = task.test_id;
|
return false;
|
||||||
return true;
|
}
|
||||||
|
target = Global.testingServer.db.tests.get(task.test_id);
|
||||||
|
return SendRequest(ServerCode.DownloadTest, String.valueOf(target.id));
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,116 @@
|
|||||||
package _VisualDVM.Passes.All;
|
package _VisualDVM.Passes.All;
|
||||||
|
import Common.CommonConstants;
|
||||||
|
import Common.Utils.Utils_;
|
||||||
|
import _VisualDVM.Constants;
|
||||||
|
import _VisualDVM.Global;
|
||||||
|
import _VisualDVM.GlobalData.Tasks.TaskState;
|
||||||
import _VisualDVM.Passes.Server.TestingServerPass;
|
import _VisualDVM.Passes.Server.TestingServerPass;
|
||||||
|
import _VisualDVM.Repository.Server.ServerCode;
|
||||||
|
import _VisualDVM.TestingSystem.Common.TasksPackageState;
|
||||||
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
|
import _VisualDVM.TestingSystem.DVM.DVMPackage.DVMPackage;
|
||||||
public class RefreshDVMPackageResults extends TestingServerPass<DVMPackage> {
|
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask;
|
||||||
|
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
|
||||||
|
import _VisualDVM.Utils;
|
||||||
|
import javafx.util.Pair;
|
||||||
|
import org.apache.commons.io.FileUtils;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.nio.file.Paths;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Vector;
|
||||||
|
public class RefreshDVMPackageResults extends TestingServerPass<DVMPackage> {
|
||||||
|
@Override
|
||||||
|
public String getIconPath() {
|
||||||
|
return "/icons/Menu/Undo.png";
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected boolean canStart(Object... args) throws Exception {
|
||||||
|
if (!Global.testingServer.db.dvmPackages.getUI().CheckCurrent(Log))
|
||||||
|
return false;
|
||||||
|
target = Global.testingServer.db.dvmPackages.getUI().getCurrent();
|
||||||
|
if (!new File(target.getLocalWorkspace(), CommonConstants.LOADED).exists()) {
|
||||||
|
Log.Writeln_("Пакет не загружен!");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected void body() throws Exception {
|
||||||
|
boolean hasErrors = false;
|
||||||
|
target.readJson();
|
||||||
|
Vector<DVMRunTask> runTasks = new Vector<>();
|
||||||
|
for (DVMCompilationTask compilationTask : target.package_json.compilationTasks)
|
||||||
|
runTasks.addAll(compilationTask.runTasks);
|
||||||
|
//----
|
||||||
|
int ct_count = 0;
|
||||||
|
int rt_count = 0;
|
||||||
|
int good = 0;
|
||||||
|
//--
|
||||||
|
for (DVMCompilationTask compilationTask : target.package_json.compilationTasks)
|
||||||
|
for (DVMRunTask runTask : compilationTask.runTasks) {
|
||||||
|
rt_count++;
|
||||||
|
if (compilationTask.state != TaskState.Done) {
|
||||||
|
runTask.state = TaskState.Canceled;
|
||||||
|
} else {
|
||||||
|
File rt_workspace = Paths.get(target.getLocalWorkspace().getAbsolutePath(), "results", String.valueOf(runTask.id)).toFile();
|
||||||
|
if (rt_workspace.exists()) {
|
||||||
|
//анализ задачи на запуск.
|
||||||
|
File outFile = new File(rt_workspace, Constants.out_file);
|
||||||
|
File errFile = new File(rt_workspace.getAbsolutePath(), Constants.err_file);
|
||||||
|
//--
|
||||||
|
String output = FileUtils.readFileToString(outFile);
|
||||||
|
String errors = FileUtils.readFileToString(errFile);
|
||||||
|
//--
|
||||||
|
List<String> output_lines = Arrays.asList(output.split("\n"));
|
||||||
|
List<String> errors_lines = Arrays.asList(errors.split("\n"));
|
||||||
|
//---
|
||||||
|
if (output.trim().isEmpty()) {
|
||||||
|
runTask.state = TaskState.Crushed;
|
||||||
|
} else {
|
||||||
|
if (Utils.isCrushed(output_lines, errors_lines)) {
|
||||||
|
runTask.state = TaskState.Crushed;
|
||||||
|
} 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);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
runTask.state = results.getKey();
|
||||||
|
runTask.progress = results.getValue();
|
||||||
|
runTask.CleanTime = Utils.parseCleanTime(output);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!runTask.state.equals(TaskState.Done))
|
||||||
|
hasErrors = true;
|
||||||
|
else good++;
|
||||||
|
}
|
||||||
|
//--
|
||||||
|
target.saveJson(); //запись обновленных результатов пакета в json!
|
||||||
|
target.state = hasErrors ? TasksPackageState.DoneWithErrors : TasksPackageState.Done;
|
||||||
|
double percent = (((double) (good)) / target.tasksCount) * 100.0;
|
||||||
|
target.description = "Выполнено на " + ((int) percent) + "%\n" +
|
||||||
|
"Всего задач: " + target.tasksCount + ", из них с ошибками " + (target.tasksCount - good);
|
||||||
|
//--
|
||||||
|
//Global.testingServer.db.Update(target);
|
||||||
|
// RemoteFile remoteJson = new RemoteFile(target.get)
|
||||||
|
/*
|
||||||
|
SendRequest(ServerCode.EditObject, "", target);
|
||||||
|
SendRequest(ServerCode.SendFile)
|
||||||
|
*/
|
||||||
|
SendRequest(ServerCode.ReplaceDVMPackageResults,"",
|
||||||
|
new Pair<>(
|
||||||
|
target,
|
||||||
|
Utils_.fileToBytes(target.getJsonFile())
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ public class Visualiser extends Component {
|
|||||||
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
|
//http://www.seostella.com/ru/article/2012/02/05/formatirovanie-daty-v-java.html
|
||||||
@Override
|
@Override
|
||||||
public void GetVersionInfo() {
|
public void GetVersionInfo() {
|
||||||
version = 1158;
|
version = 1159;
|
||||||
String pattern = "MMM dd yyyy HH:mm:ss";
|
String pattern = "MMM dd yyyy HH:mm:ss";
|
||||||
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
|
DateFormat df = new SimpleDateFormat(pattern, Locale.ENGLISH);
|
||||||
date_text = df.format(getClassBuildTime());
|
date_text = df.format(getClassBuildTime());
|
||||||
|
|||||||
@@ -92,9 +92,11 @@ public enum ServerCode {
|
|||||||
GetMaxSapforVersion,
|
GetMaxSapforVersion,
|
||||||
PerformAutoSapforTesting,
|
PerformAutoSapforTesting,
|
||||||
JoinSapforVersionsToGroup,
|
JoinSapforVersionsToGroup,
|
||||||
TestCode;
|
TestCode, ReplaceDVMPackageResults;
|
||||||
public String getDescription(){
|
public String getDescription(){
|
||||||
switch (this){
|
switch (this){
|
||||||
|
case ReplaceDVMPackageResults:
|
||||||
|
return "Заменить json DVM пакета";
|
||||||
case JoinSapforVersionsToGroup:
|
case JoinSapforVersionsToGroup:
|
||||||
return "Присоединение версий к группе на сервере";
|
return "Присоединение версий к группе на сервере";
|
||||||
case GetComponentsVersionsInfo:
|
case GetComponentsVersionsInfo:
|
||||||
|
|||||||
@@ -377,6 +377,10 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
Print("Получить финальные версии пакета тестирования SAPFOR");
|
Print("Получить финальные версии пакета тестирования SAPFOR");
|
||||||
JoinSapforPackageToGroup();
|
JoinSapforPackageToGroup();
|
||||||
break;
|
break;
|
||||||
|
case ReplaceDVMPackageResults:
|
||||||
|
Print("Заменить json DVM пакета");
|
||||||
|
ReplaceDVMPackageJson();
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
|
throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
|
||||||
}
|
}
|
||||||
@@ -863,22 +867,18 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
|||||||
}
|
}
|
||||||
//-"sh"
|
//-"sh"
|
||||||
}
|
}
|
||||||
public void Patch(){
|
private void ReplaceDVMPackageJson() throws Exception{
|
||||||
try {
|
response= new ServerExchangeUnit_2021(ServerCode.OK);
|
||||||
db.BeginTransaction();
|
Pair<DVMPackage, byte[]> p = (Pair<DVMPackage, byte[]>) request.object;
|
||||||
for (Test test : db.tests.Data.values()) {
|
DVMPackage src = p.getKey();
|
||||||
if (test.sender_address.isEmpty()) {
|
byte[] packed_file = p.getValue();
|
||||||
Group group = db.groups.get(test.group_id);
|
//todo написать стандартное исключение на несуществование объекта с ключом
|
||||||
test.sender_address = group.sender_address;
|
if (!db.dvmPackages.containsKey(src.id))
|
||||||
test.sender_name = group.sender_name;
|
throw new RepositoryRefuseException("не существует пакета с ключом "+src.id);
|
||||||
db.Update(test);
|
DVMPackage dst = db.dvmPackages.get(src.id);
|
||||||
}
|
dst.SynchronizeFields(src);
|
||||||
}
|
db.Update(dst);
|
||||||
db.Commit();
|
Utils_.bytesToFile(packed_file, dst.getJsonFile());
|
||||||
}
|
|
||||||
catch (Exception ex){
|
|
||||||
ex.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -141,6 +141,7 @@ public class DVMPackagesForm extends DataSetControlForm<DVMPackage> {
|
|||||||
addPasses(PassCode.PauseDVMPackage,PassCode.ResumeDVMPackage,PassCode.AbortDVMPackage);
|
addPasses(PassCode.PauseDVMPackage,PassCode.ResumeDVMPackage,PassCode.AbortDVMPackage);
|
||||||
addSeparator();
|
addSeparator();
|
||||||
addPasses(PassCode.DownloadDVMPackage,
|
addPasses(PassCode.DownloadDVMPackage,
|
||||||
|
// PassCode.RefreshDVMPackageResults,
|
||||||
PassCode.ExportDVMPackageToExcel,
|
PassCode.ExportDVMPackageToExcel,
|
||||||
PassCode.DeleteDVMPackage);
|
PassCode.DeleteDVMPackage);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -565,6 +565,7 @@ public class Utils {
|
|||||||
if (errors > 0) {
|
if (errors > 0) {
|
||||||
state = TaskState.DoneWithErrors;
|
state = TaskState.DoneWithErrors;
|
||||||
} else {
|
} else {
|
||||||
|
complete = total;
|
||||||
state = TaskState.Done;
|
state = TaskState.Done;
|
||||||
}
|
}
|
||||||
return new Pair<>(state, (int) ((((double) complete) / total) * 100));
|
return new Pair<>(state, (int) ((((double) complete) / total) * 100));
|
||||||
|
|||||||
Reference in New Issue
Block a user