Compare commits
1 Commits
planner
...
bug_report
| Author | SHA1 | Date | |
|---|---|---|---|
| 3287410940 |
6
.idea/workspace.xml
generated
6
.idea/workspace.xml
generated
@@ -8,12 +8,6 @@
|
||||
<component name="ChangeListManager">
|
||||
<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$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/DVMCompilationTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/DVMCompilationTask.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/DVMRunTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/DVMRunTask.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/DVMTask.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/DVMTasks/DVMTask.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/RemoteDVMTestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/RemoteDVMTestingPlanner.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/json/RunTask_json.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/_VisualDVM/TestingSystem/DVM/json/RunTask_json.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
||||
12
properties
12
properties
@@ -4,7 +4,7 @@
|
||||
"ServerUserPassword": "mprit_2011",
|
||||
"OfferRegistrationOnStart": true,
|
||||
"Workspace": "E:\\Tests",
|
||||
"ProjectsSearchDirectory": "E:\\Tests\\Downloads\\1331\\EP\\v1\\v1\\v4",
|
||||
"ProjectsSearchDirectory": "E:\\Tests\\Downloads\\bugreport_1765484296",
|
||||
"DocumentsDirectory": "C:\\Users\\misha\\Documents\\_testing_system",
|
||||
"VisualiserPath": "C:\\Users\\misha\\Downloads",
|
||||
"Sapfor_FPath": "E:\\_sapfor_x64\\Components\\Sapfor_F",
|
||||
@@ -27,15 +27,15 @@
|
||||
"LocalMakePathWindows": "C:\\MinGW\\msys\\1.0\\bin\\make.exe",
|
||||
"PrecompilationFlags": " ",
|
||||
"CheckTestingIntervalSeconds": 10,
|
||||
"AutoCheckTesting": true,
|
||||
"AutoCheckTesting": false,
|
||||
"EmailOnTestingProgress": true,
|
||||
"CompleteCompilationOptions": true,
|
||||
"CompleteRunEnvironments": true,
|
||||
"CreateEthalonTasks": true,
|
||||
"ErasePackageWorkspace": false,
|
||||
"lastMachineId": 1,
|
||||
"lastUserId": 17,
|
||||
"lastCompilerId": 15,
|
||||
"ErasePackageWorkspace": true,
|
||||
"lastMachineId": 13,
|
||||
"lastUserId": 34,
|
||||
"lastCompilerId": 52,
|
||||
"RegisterOn": false,
|
||||
"SpacesOn": false,
|
||||
"EmptyLinesOn": false,
|
||||
|
||||
32
src/Common/Database/Objects/rDBObject.java
Normal file
32
src/Common/Database/Objects/rDBObject.java
Normal file
@@ -0,0 +1,32 @@
|
||||
package Common.Database.Objects;
|
||||
import java.util.Date;
|
||||
//объект репозитория. ключ имя, и есть данные отправителя.
|
||||
public class rDBObject extends nDBObject {
|
||||
public String sender_name = "";
|
||||
public String sender_address = "";
|
||||
public String description = "";
|
||||
//-
|
||||
public long date = 0;
|
||||
public long change_date;
|
||||
public rDBObject(rDBObject src) {
|
||||
this.SynchronizeFields(src);
|
||||
}
|
||||
public rDBObject() {
|
||||
}
|
||||
public Date getDate() {
|
||||
return new Date(date);
|
||||
}
|
||||
public Date getChangeDate() {
|
||||
return new Date(change_date);
|
||||
}
|
||||
@Override
|
||||
public void SynchronizeFields(DBObject src) {
|
||||
super.SynchronizeFields(src);
|
||||
rDBObject r = (rDBObject) src;
|
||||
sender_name = r.sender_name;
|
||||
sender_address = r.sender_address;
|
||||
description = r.description;
|
||||
date = r.date;
|
||||
change_date = r.change_date;
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package _VisualDVM.ComponentsServer.BugReport;
|
||||
import Common.CommonConstants;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Objects.riDBObject;
|
||||
import Common.Database.Objects.rDBObject;
|
||||
import Common.Utils.TextLog;
|
||||
import Common.Utils.Utils_;
|
||||
import Common.Utils.Vector_;
|
||||
@@ -18,8 +17,7 @@ import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Date;
|
||||
import java.util.Vector;
|
||||
public class BugReport extends riDBObject {
|
||||
//---
|
||||
public class BugReport extends rDBObject {
|
||||
public String project_version = "";
|
||||
public long visualiser_version = -1;
|
||||
public long sapfor_version = -1;
|
||||
@@ -40,17 +38,13 @@ public class BugReport extends riDBObject {
|
||||
public File owner = null;
|
||||
@Description("IGNORE")
|
||||
public byte[] packed_archive = null;
|
||||
//--
|
||||
public long date = 0;
|
||||
public long change_date;
|
||||
//--
|
||||
public BugReport() {
|
||||
}
|
||||
public BugReport(BugReport src) {
|
||||
this.SynchronizeFields(src);
|
||||
}
|
||||
public BugReport(String sender_name_in, String sender_address_in, String description_in, String version_in) {
|
||||
id = CommonConstants.Nan;
|
||||
genName();
|
||||
sender_name = sender_name_in;
|
||||
sender_address = sender_address_in;
|
||||
project_version = version_in;
|
||||
@@ -82,16 +76,11 @@ public class BugReport extends riDBObject {
|
||||
descriptionAdditionDraft = b.descriptionAdditionDraft;
|
||||
commentAdditionDraft = b.commentAdditionDraft;
|
||||
owner = b.owner;
|
||||
change_date = b.change_date;
|
||||
}
|
||||
//--
|
||||
public File getHome() {
|
||||
return Utils_.getFile(System.getProperty("user.dir"), "BugReports", String.valueOf(id));
|
||||
}
|
||||
public File getArchiveFile() {
|
||||
return new File(getHome(),id + ".zip");
|
||||
return Paths.get(System.getProperty("user.dir"), "Bugs", id + ".zip").toFile();
|
||||
}
|
||||
//--
|
||||
public String getDescriptionHeader() {
|
||||
if (description != null) {
|
||||
String[] data = description.split("\n");
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package _VisualDVM.ComponentsServer.BugReport;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Tables.DBTable;
|
||||
import Common.Database.Tables.FKBehaviour;
|
||||
import Common.Database.Tables.FKCurrentObjectBehaviuor;
|
||||
import Common.Database.Tables.FKDataBehaviour;
|
||||
import Common.Database.Tables.iDBTable;
|
||||
import Common.Visual.DataSetControlForm;
|
||||
import _VisualDVM.ComponentsServer.BugReport.UI.BugReportsForm;
|
||||
import _VisualDVM.ComponentsServer.BugReportFile.BugReportFile;
|
||||
import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipient;
|
||||
import _VisualDVM.ComponentsServer.BugReportSetting.BugReportSetting;
|
||||
|
||||
@@ -14,9 +13,9 @@ import javax.swing.*;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
import java.util.stream.Collectors;
|
||||
public class BugReportsDBTable extends iDBTable<BugReport> {
|
||||
public class BugReportsDBTable extends DBTable<String, BugReport> {
|
||||
public BugReportsDBTable() {
|
||||
super(BugReport.class);
|
||||
super(String.class, BugReport.class);
|
||||
}
|
||||
@Override
|
||||
public String getSingleDescription() {
|
||||
@@ -38,7 +37,6 @@ public class BugReportsDBTable extends iDBTable<BugReport> {
|
||||
LinkedHashMap<Class<? extends DBObject>, FKBehaviour> res = new LinkedHashMap<>();
|
||||
res.put(BugReportSetting.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.PASSIVE));
|
||||
res.put(BugReportRecipient.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.PASSIVE));
|
||||
res.put(BugReportFile.class, new FKBehaviour(FKDataBehaviour.DELETE, FKCurrentObjectBehaviuor.ACTIVE));
|
||||
return res;
|
||||
}
|
||||
//-
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
package _VisualDVM.ComponentsServer.BugReport.Json;
|
||||
import Common.CommonConstants;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
import java.io.Serializable;
|
||||
public class BugReportAdditionJson implements Serializable {
|
||||
@Expose
|
||||
public int id = CommonConstants.Nan;
|
||||
public String id = "";
|
||||
@Expose
|
||||
public String fieldName = "";
|
||||
@Expose
|
||||
|
||||
@@ -101,14 +101,6 @@ public class BugReportsForm extends DataSetControlForm<BugReport> {
|
||||
return RendererStatusEnum.class;
|
||||
}
|
||||
}
|
||||
/*,
|
||||
new ColumnInfo<BugReport>("id_") {
|
||||
@Override
|
||||
public Object getFieldAt(BugReport object) {
|
||||
return object.id_;
|
||||
}
|
||||
}
|
||||
*/
|
||||
);
|
||||
}
|
||||
@Override
|
||||
@@ -151,7 +143,7 @@ public class BugReportsForm extends DataSetControlForm<BugReport> {
|
||||
public DataMenuBar createMenuBar() {
|
||||
return new DataMenuBar(dataSource.getPluralDescription(),
|
||||
PassCode.SynchronizeBugReports,
|
||||
// PassCode.DownloadAllBugReportsArchives,
|
||||
PassCode.DownloadAllBugReportsArchives,
|
||||
PassCode.AddBugReport,
|
||||
PassCode.PublishBugReport,
|
||||
PassCode.OpenBugReportTestProject,
|
||||
@@ -162,14 +154,13 @@ public class BugReportsForm extends DataSetControlForm<BugReport> {
|
||||
}
|
||||
@Override
|
||||
protected Comparator<BugReport> getDefaultComparator() {
|
||||
|
||||
return (o1, o2) -> -Long.compare(o1.date, o2.date);
|
||||
return (o1, o2) -> -(o1.getDate().compareTo(o2.getDate()));
|
||||
}
|
||||
@Override
|
||||
public boolean isObjectVisible(BugReport object) {
|
||||
return super.isObjectVisible(object) && (
|
||||
object.state.equals(BugReportState.draft) ||
|
||||
(String.valueOf(object.id)).toUpperCase().contains(filterKey.toUpperCase())
|
||||
object.id.toUpperCase().contains(filterKey.toUpperCase())
|
||||
&& object.sender_name.toUpperCase().contains(filterSenderName.toUpperCase())
|
||||
&& object.description.toUpperCase().contains(filterDescription.toUpperCase())
|
||||
&& object.comment.toUpperCase().contains(filterComment.toUpperCase())
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
package _VisualDVM.ComponentsServer.BugReportFile;
|
||||
import Common.CommonConstants;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Objects.riDBObject;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
public class BugReportFile extends riDBObject {
|
||||
@Description("DEFAULT -1")
|
||||
public int bugreport_id = CommonConstants.Nan;
|
||||
@Description("DEFAULT ''")
|
||||
public String name = "";
|
||||
@Override
|
||||
public void SynchronizeFields(DBObject src) {
|
||||
super.SynchronizeFields(src);
|
||||
BugReportFile f = (BugReportFile) src;
|
||||
bugreport_id = f.bugreport_id;
|
||||
name = f.name;
|
||||
}
|
||||
//-
|
||||
public BugReportFile(BugReportFile src) {
|
||||
SynchronizeFields(src);
|
||||
}
|
||||
public BugReportFile() {
|
||||
}
|
||||
//-
|
||||
}
|
||||
@@ -1,23 +0,0 @@
|
||||
package _VisualDVM.ComponentsServer.BugReportFile;
|
||||
import Common.Database.Tables.iDBTable;
|
||||
import Common.Visual.DataSetControlForm;
|
||||
import _VisualDVM.ComponentsServer.BugReportFile.UI.BugReportFilesForm;
|
||||
|
||||
import javax.swing.*;
|
||||
public class BugReportFilesDBTable extends iDBTable<BugReportFile> {
|
||||
public BugReportFilesDBTable() {
|
||||
super(BugReportFile.class);
|
||||
}
|
||||
@Override
|
||||
public String getSingleDescription() {
|
||||
return "файл";
|
||||
}
|
||||
@Override
|
||||
public String getPluralDescription() {
|
||||
return "файлы";
|
||||
}
|
||||
@Override
|
||||
protected DataSetControlForm createUI(JPanel mountPanel) {
|
||||
return new BugReportFilesForm(this, mountPanel);
|
||||
}
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
package _VisualDVM.ComponentsServer.BugReportFile.UI;
|
||||
import Common.Database.Tables.DataSet;
|
||||
import Common.Visual.DataSetControlForm;
|
||||
import Common.Visual.Tables.ColumnInfo;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import _VisualDVM.ComponentsServer.BugReportFile.BugReportFile;
|
||||
import _VisualDVM.Global;
|
||||
|
||||
import javax.swing.*;
|
||||
public class BugReportFilesForm extends DataSetControlForm<BugReportFile> {
|
||||
public BugReportFilesForm(DataSet<?, BugReportFile> dataSource_in, JPanel mountPanel_in) {
|
||||
super(dataSource_in, mountPanel_in);
|
||||
}
|
||||
@Override
|
||||
protected void createColumns() {
|
||||
AddColumns(
|
||||
new ColumnInfo<BugReportFile>("имя") {
|
||||
@Override
|
||||
public Object getFieldAt(BugReportFile object) {
|
||||
return object.name;
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
@Override
|
||||
public boolean isObjectVisible(BugReportFile object) {
|
||||
return super.isObjectVisible(object)&&Global.componentsServer.db.getTable(BugReport.class).getUI().matchCurrentID(object.bugreport_id);
|
||||
}
|
||||
}
|
||||
@@ -1,13 +1,10 @@
|
||||
package _VisualDVM.ComponentsServer.BugReportRecipient;
|
||||
import Common.CommonConstants;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Objects.iDBObject;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
public class BugReportRecipient extends iDBObject {
|
||||
public String bugreport_id = "";
|
||||
public String email = "";
|
||||
@Description("DEFAULT '-1'")
|
||||
public int bugreport_id = CommonConstants.Nan;
|
||||
public BugReportRecipient() {
|
||||
}
|
||||
public BugReportRecipient(BugReport bugReport, String email_in) {
|
||||
|
||||
@@ -6,6 +6,6 @@ public class BugReportRecipientsDBTable extends iDBTable<BugReportRecipient> {
|
||||
}
|
||||
@Override
|
||||
public boolean isEqual(BugReportRecipient o1, BugReportRecipient o2) {
|
||||
return o1.bugreport_id==o2.bugreport_id && o1.email.equals(o2.email);
|
||||
return o1.bugreport_id.equals(o2.bugreport_id) && o1.email.equals(o2.email);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,11 @@
|
||||
package _VisualDVM.ComponentsServer.BugReportSetting;
|
||||
import Common.CommonConstants;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Objects.iDBObject;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
public class BugReportSetting extends iDBObject {
|
||||
public String bugreport_id = "";
|
||||
public String name = "";
|
||||
public String value = "";
|
||||
@Description("DEFAULT '-1'")
|
||||
public int bugreport_id = CommonConstants.Nan;
|
||||
public BugReportSetting() {
|
||||
}
|
||||
public BugReportSetting(BugReport bugReport, String name_in, Object value_in) {
|
||||
|
||||
@@ -2,7 +2,6 @@ package _VisualDVM.ComponentsServer;
|
||||
import Common.Database.SQLITE.SQLiteDatabase;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReportsDBTable;
|
||||
import _VisualDVM.ComponentsServer.BugReportFile.BugReportFilesDBTable;
|
||||
import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipient;
|
||||
import _VisualDVM.ComponentsServer.BugReportRecipient.BugReportRecipientsDBTable;
|
||||
import _VisualDVM.ComponentsServer.BugReportSetting.BugReportSettingsDBTable;
|
||||
@@ -15,7 +14,6 @@ public class BugReportsDatabase extends SQLiteDatabase {
|
||||
public BugReportsDBTable bugReports;
|
||||
public BugReportSettingsDBTable bugReportSettings;
|
||||
public BugReportRecipientsDBTable bugReportRecipients;
|
||||
public BugReportFilesDBTable bugReportsFiles;
|
||||
public RecipientsDataSet recipients = new RecipientsDataSet();
|
||||
public BugReportsDatabase() {
|
||||
super(Paths.get(System.getProperty("user.dir"), "Data", "bug_reports.sqlite").toFile());
|
||||
@@ -25,13 +23,10 @@ public class BugReportsDatabase extends SQLiteDatabase {
|
||||
addTable(bugReports = new BugReportsDBTable());
|
||||
addTable(bugReportSettings = new BugReportSettingsDBTable());
|
||||
addTable(bugReportRecipients = new BugReportRecipientsDBTable());
|
||||
addTable(bugReportsFiles = new BugReportFilesDBTable());
|
||||
}
|
||||
@Override
|
||||
public void Init() throws Exception {
|
||||
DeleteDrafts();
|
||||
//--
|
||||
Patch();
|
||||
}
|
||||
@Override
|
||||
public PassCode getSynchronizePassCode() {
|
||||
@@ -63,72 +58,5 @@ public class BugReportsDatabase extends SQLiteDatabase {
|
||||
}
|
||||
}
|
||||
public void Patch() throws Exception {
|
||||
/*
|
||||
int i = 0;
|
||||
Vector<BugReport> sortedBugs = new Vector<>(bugReports.Data.values());
|
||||
sortedBugs.sort(new Comparator<BugReport>() {
|
||||
@Override
|
||||
public int compare(BugReport o1, BugReport o2) {
|
||||
return Long.compare(o1.date,o2.date);
|
||||
}
|
||||
});
|
||||
//--
|
||||
for (BugReport bugReport: sortedBugs){
|
||||
bugReport.id_ = i;
|
||||
++i;
|
||||
//--
|
||||
Update(bugReport);
|
||||
}
|
||||
//--
|
||||
for (BugReport bugReport: sortedBugs){
|
||||
Vector<BugReportSetting> bugSettings = getVectorByFK(bugReport, BugReportSetting.class);
|
||||
Vector<BugReportRecipient> bugReportRecipients = getVectorByFK(bugReport, BugReportRecipient.class);
|
||||
for (BugReportSetting setting: bugSettings){
|
||||
setting.bugreport_id_ = bugReport.id_;
|
||||
Update(setting);
|
||||
}
|
||||
for (BugReportRecipient recipient: bugReportRecipients){
|
||||
recipient.bugreport_id_ = bugReport.id_;
|
||||
Update(recipient);
|
||||
}
|
||||
}
|
||||
//перенос архивов
|
||||
for (BugReport bugReport: sortedBugs){
|
||||
System.out.println("bugreport_id="+bugReport.id+"/"+bugReport.id_);
|
||||
File new_home = new File(Global.BugReportsDirectory,String.valueOf(bugReport.id_));
|
||||
//--
|
||||
if (!new_home.exists())
|
||||
FileUtils.forceMkdir(new_home);
|
||||
//--
|
||||
Utils.CleanDirectory(new_home);
|
||||
//--
|
||||
File old_archive = new File(Global.BugReportsDirectory_OLD, bugReport.id);
|
||||
File new_archive = new File(new_home,String.valueOf(bugReport.id_)+".zip");
|
||||
if (old_archive.exists()) {
|
||||
FileUtils.copyFile(old_archive, new_archive);
|
||||
}
|
||||
}
|
||||
//--
|
||||
//упоминания других багов.
|
||||
for (BugReport bugReport: sortedBugs){
|
||||
//--
|
||||
Vector<String> mentioned_keys = new Vector<>();
|
||||
for (String id: bugReports.Data.keySet()){
|
||||
if ((bugReport.description.contains(id) || bugReport.comment.contains(id)) && !mentioned_keys.contains(id)){
|
||||
mentioned_keys.add(id);
|
||||
}
|
||||
}
|
||||
//--
|
||||
for (String id: mentioned_keys){
|
||||
BugReport owner = bugReports.get(id);
|
||||
if (owner!=null) {
|
||||
bugReport.comment = bugReport.comment.replace(id, String.valueOf(owner.id_));
|
||||
bugReport.description = bugReport.description.replace(id, String.valueOf(owner.id_));
|
||||
Update(bugReport);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import org.apache.commons.io.FileUtils;
|
||||
import java.io.File;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
public abstract class Sapfor extends OSDComponent {
|
||||
public static final int empty_code = -100;
|
||||
public static final int canceled_code = -99;
|
||||
@@ -107,10 +106,9 @@ public abstract class Sapfor extends OSDComponent {
|
||||
}
|
||||
public static PassCode[] getPreparationTransformationsCodes() {
|
||||
return new PassCode[]{
|
||||
PassCode.SPF_CorrectCodeStylePass,
|
||||
PassCode.SPF_MoveOperators,
|
||||
PassCode.SPF_RenameIncludes,
|
||||
PassCode.SPF_InsertIncludesPass,
|
||||
PassCode.SPF_CorrectCodeStylePass,
|
||||
PassCode.SPF_ConvertStructures,
|
||||
PassCode.SPF_CreateCheckpoints,
|
||||
PassCode.SPF_InitDeclsWithZero,
|
||||
@@ -164,7 +162,6 @@ public abstract class Sapfor extends OSDComponent {
|
||||
res.add(PassCode.SPF_InsertDvmhRegions);//+
|
||||
res.add(PassCode.SPF_SharedMemoryParallelization);//+
|
||||
res.add(PassCode.SPF_InsertImplicitNone);//+
|
||||
res.add(PassCode.SPF_MoveOperators);
|
||||
res.add(PassCode.CreateParallelVariants); //?
|
||||
return res;
|
||||
}
|
||||
@@ -207,10 +204,8 @@ public abstract class Sapfor extends OSDComponent {
|
||||
Utils_.CheckDirectory(data_workspace);
|
||||
File outputFile = new File(data_workspace, outName);
|
||||
File errorsFile = new File(data_workspace, errName);
|
||||
// File logFile = new File(data_workspace, "log.txt");
|
||||
Utils_.forceDeleteWithCheck(outputFile);
|
||||
Utils_.forceDeleteWithCheck(errorsFile);
|
||||
// Utils_.forceDeleteWithCheck(logFile);
|
||||
//---
|
||||
File file = new File(data_workspace, name + (Utils_.isWindows() ? ".bat" : ".sh"));
|
||||
FileUtils.write(file,
|
||||
@@ -226,36 +221,20 @@ public abstract class Sapfor extends OSDComponent {
|
||||
if (!file.setExecutable(true))
|
||||
throw new Exception("Не удалось сделать файл скрипта " + name + " исполняемым!");
|
||||
//-- Windows
|
||||
//запустить процесс
|
||||
boolean process_started = false;
|
||||
boolean flag = false;
|
||||
do {
|
||||
try {
|
||||
ProcessBuilder procBuilder = new ProcessBuilder(file.getAbsolutePath());
|
||||
procBuilder.directory(workspace);
|
||||
process = procBuilder.start();
|
||||
process_started = true;
|
||||
exit_code = process.waitFor();
|
||||
flag = true;
|
||||
} catch (Exception ex) {
|
||||
Utils_.MainLog.PrintException(ex);
|
||||
Utils_.sleep(1000);
|
||||
}
|
||||
}
|
||||
while (!process_started);
|
||||
//--
|
||||
for (int i=0; i<40; ++i){
|
||||
if (process.waitFor(1, TimeUnit.SECONDS)){
|
||||
//дождались. все хорошо.
|
||||
exit_code=0;
|
||||
// FileUtils.writeStringToFile(logFile,sapfor_drv.getName()+" done for "+i+" seconds");
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (exit_code!=0){
|
||||
// FileUtils.writeStringToFile(logFile,sapfor_drv.getName()+" timeout");
|
||||
//-
|
||||
Process killer = Runtime.getRuntime().exec("pkill -SIGKILL -f "+sapfor_drv.getName());
|
||||
killer.waitFor();
|
||||
//-
|
||||
}
|
||||
while (!flag);
|
||||
process = null;
|
||||
//---
|
||||
Vector<String> outputLines = new Vector<>(FileUtils.readLines(outputFile));
|
||||
|
||||
@@ -46,7 +46,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
||||
}
|
||||
@Override
|
||||
protected void extraBackup(File todayBackUp) {
|
||||
zip.Do("BugReports", new File(todayBackUp, "BugReports.zip").getAbsolutePath());
|
||||
zip.Do("Bugs", new File(todayBackUp, "Bugs.zip").getAbsolutePath());
|
||||
}
|
||||
@Override
|
||||
public Database getDb() {
|
||||
@@ -55,9 +55,18 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
||||
return super.getDb();
|
||||
}
|
||||
@Override
|
||||
protected void beforePublishAction(DBObject object) throws Exception {
|
||||
if (object instanceof BugReport) {
|
||||
BugReport bugReport = (BugReport) object;
|
||||
if (bugReport.packed_archive != null) {
|
||||
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", bugReport.id);
|
||||
Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
protected void afterPublishAction(DBObject object) throws Exception {
|
||||
if (object instanceof BugReport) {
|
||||
//---
|
||||
BugReport bugReport = (BugReport) object;
|
||||
if (bugReport.settings != null) {
|
||||
for (BugReportSetting setting : bugReport.settings) {
|
||||
@@ -68,14 +77,6 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
||||
if (bugReport.recipients != null) {
|
||||
db.saveBugreportRecipients(bugReport);
|
||||
}
|
||||
//-->
|
||||
Utils_.CheckAndCleanDirectory(bugReport.getHome());
|
||||
//-->
|
||||
if (bugReport.packed_archive != null) {
|
||||
File bugArchive = bugReport.getArchiveFile();
|
||||
Utils_.bytesToFile(bugReport.packed_archive, bugArchive);
|
||||
bugReport.packed_archive = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@Override
|
||||
@@ -93,7 +94,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
||||
protected void afterDeleteAction(DBObject object) throws Exception {
|
||||
if (object instanceof BugReport) {
|
||||
BugReport bugReport = (BugReport) object;
|
||||
Utils_.forceDeleteWithCheck(bugReport.getHome());
|
||||
if (!bugReport.project_version.isEmpty()) Utils_.forceDeleteWithCheck(bugReport.getArchiveFile());
|
||||
} else if (object instanceof UserAccount) {
|
||||
UserAccount account = (UserAccount) object;
|
||||
Utils_.forceDeleteWithCheck(account.getServerKeyFile());
|
||||
@@ -169,7 +170,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
||||
void ReceiveAllArchives() throws Exception {
|
||||
ZipFolderPass zip = new ZipFolderPass();
|
||||
File archives = new File(Utils_.getDateName("Bugs"));
|
||||
if (zip.Do("BugReports", archives.getAbsolutePath())) {
|
||||
if (zip.Do("Bugs", archives.getAbsolutePath())) {
|
||||
response.object = Utils_.fileToBytes(archives);
|
||||
} else throw new RepositoryRefuseException("Не удалось запаковать архивы");
|
||||
}
|
||||
@@ -178,7 +179,7 @@ public class ComponentsServer extends RepositoryServer<BugReportsDatabase> {
|
||||
response.arg = credentials_db.userAccounts.getPackedActiveRecipients();
|
||||
}
|
||||
void ReceiveBugReport() throws Exception {
|
||||
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "BugReports", request.arg, request.arg + ".zip");
|
||||
File bugArchive = Utils_.getFile(Utils_.getHomePath(), "Bugs", request.arg);
|
||||
response.object = Utils_.fileToBytes(bugArchive);
|
||||
}
|
||||
void UpdateBugReport() throws Exception {
|
||||
|
||||
@@ -2,6 +2,7 @@ package _VisualDVM.ComponentsServer.UserAccount;
|
||||
import Common.Database.Objects.DBObject;
|
||||
import Common.Database.Objects.iDBObject;
|
||||
import Common.Utils.TextLog;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import _VisualDVM.Global;
|
||||
import com.sun.org.glassfish.gmbal.Description;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
@@ -74,6 +75,20 @@ public class UserAccount extends iDBObject {
|
||||
public boolean CheckAccessRights(String address_in, TextLog log) {
|
||||
return (CheckRegistered(log) && CheckAuthorship(address_in, log));
|
||||
}
|
||||
public boolean ExtendedCheckAccessRights(BugReport bugReport, TextLog log) {
|
||||
if (CheckRegistered(log)) {
|
||||
if (email.equals(bugReport.executor_address)) {
|
||||
//метод вывести как нерабочий.когда будет изменена схема админства.
|
||||
return true;
|
||||
} else {
|
||||
if (!isAdmin() && (!email.equals(bugReport.sender_address))) {
|
||||
log.Writeln_("Вы не являетесь автором, исполнителем, или администратором");
|
||||
return false;
|
||||
} else return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
public boolean isAdmin() {
|
||||
return role.equals(AccountRole.Admin);
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ import Common.Utils.Vector_;
|
||||
|
||||
import java.util.Vector;
|
||||
public class Constants {
|
||||
public static final int version = 1266;
|
||||
public static final int planner_version = 26;
|
||||
public static final int version = 1261;
|
||||
public static final int planner_version = 24;
|
||||
public static final int testingMaxKernels = 64;
|
||||
//--
|
||||
public static final String ApplicationFileName = "VisualSapfor.jar";
|
||||
@@ -47,7 +47,7 @@ public class Constants {
|
||||
public static final int MailSocketPort = 465;
|
||||
//
|
||||
//7998 отладочный порт. теперь.
|
||||
public static final int ComponentsServerPort = 7995; //7795
|
||||
public static final int ComponentsServerPort = 7998; //7795
|
||||
public static final int TestingServerPort = 7996; //7996
|
||||
public static final int SocketTimeout = 0;
|
||||
//-
|
||||
@@ -105,7 +105,6 @@ public class Constants {
|
||||
"starter.cpp",
|
||||
"launcher.cpp",
|
||||
//--
|
||||
"json.hpp",
|
||||
"Array.h",
|
||||
"CompilationSupervisor.h",
|
||||
"CompilationTask.h",
|
||||
|
||||
@@ -65,7 +65,7 @@ public class Global {
|
||||
Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName));
|
||||
//-
|
||||
Utils_.CheckDirectory(RepoDirectory = new File(Utils_.getHomeDirectory(), Constants.RepoDirectoryName));
|
||||
Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), "BugReports"));
|
||||
Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), Constants.BugsDirectoryName));
|
||||
Utils_.CheckDirectory(BackUpsDirectory = new File(Utils_.getHomeDirectory(), Constants.BackUpsDirectoryName));
|
||||
Utils_.CheckDirectory(ProjectsDirectory = new File(Utils_.getHomeDirectory(), Constants.ProjectsDirectoryName));
|
||||
Utils_.CheckDirectory(CompilationTasksDirectory = new File(Utils_.getHomeDirectory(), Constants.CompilationTasksDirectoryName));
|
||||
@@ -88,7 +88,7 @@ public class Global {
|
||||
Utils_.CheckDirectory(DataDirectory = new File(Utils_.getHomeDirectory(), Constants.DataDirectoryName));
|
||||
Utils_.CheckDirectory(DataBackUpsDirectory = new File(Utils_.getHomeDirectory(), Constants.DataBackUpsDirectoryName));
|
||||
//--
|
||||
Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), "BugReports"));
|
||||
Utils_.CheckDirectory(BugReportsDirectory = new File(Utils_.getHomeDirectory(), Constants.BugsDirectoryName));
|
||||
Utils_.CheckDirectory(KeysDirectory = new File(Utils_.getHomeDirectory(), Constants.KeyDirectoryName));
|
||||
}
|
||||
public static void CheckTestingSystemDirectories() {
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
package _VisualDVM.Passes.All;
|
||||
import Common.CommonConstants;
|
||||
import Common.Database.Database;
|
||||
import Common.Passes.AddObjectPass;
|
||||
import Common.Utils.Utils_;
|
||||
@@ -31,10 +30,6 @@ public class AddBugReport extends AddObjectPass<BugReport> {
|
||||
Log.Writeln_("Для создания отчёта требуется регистрация");
|
||||
return false;
|
||||
}
|
||||
if (getDb().getTable(BugReport.class).containsKey(CommonConstants.Nan)){
|
||||
Log.Writeln_("Может существовать не более одного черновика одновременно!");
|
||||
return false;
|
||||
}
|
||||
if (Global.mainModule.HasProject()) {
|
||||
String version = Global.mainModule.getProject().Home.getAbsolutePath().substring(Global.mainModule.getRoot().Home.getParent().length());
|
||||
if (version.toCharArray()[0] == '\\') version = version.substring(1);
|
||||
@@ -44,7 +39,7 @@ public class AddBugReport extends AddObjectPass<BugReport> {
|
||||
} else {
|
||||
if (UI.Warning("Создать отчёт об ошибке без прикрепления проекта.")) {
|
||||
target = new BugReport();
|
||||
target.id = CommonConstants.Nan;
|
||||
target.genName();
|
||||
target.sender_name = Global.mainModule.getAccount().name;
|
||||
target.sender_address = Global.mainModule.getAccount().email;
|
||||
target.project_version = "";
|
||||
@@ -67,12 +62,10 @@ public class AddBugReport extends AddObjectPass<BugReport> {
|
||||
}
|
||||
@Override
|
||||
protected void body() throws Exception {
|
||||
//--
|
||||
Utils_.CheckAndCleanDirectory(target.getHome());
|
||||
//--
|
||||
super.body();
|
||||
if (!target.project_version.isEmpty()) {
|
||||
Global.mainModule.getRoot().cleanDepAndGCOVR(); //удаление депов и гкова
|
||||
//логи во вложения. todo переделать в полноценные вложения.
|
||||
//логи во вложения.
|
||||
File attachementsDir = Global.mainModule.getProject().getAttachmentsDirectory();
|
||||
Vector<File> logs = new Vector<>();
|
||||
logs.add(Utils_.MainLog.getLogFile());
|
||||
@@ -87,7 +80,6 @@ public class AddBugReport extends AddObjectPass<BugReport> {
|
||||
Global.mainModule.getPass(PassCode.ZipFolderPass).Do(Global.mainModule.getRoot().Home.getAbsolutePath(),
|
||||
target.getArchiveFile().getAbsolutePath());
|
||||
}
|
||||
getDb().getTable(BugReport.class).put(target.id, target);
|
||||
}
|
||||
@Override
|
||||
protected boolean validate() {
|
||||
|
||||
@@ -76,7 +76,6 @@ public class AppendBugReportField extends ComponentsServerPass<BugReport> {
|
||||
message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name),
|
||||
message_text
|
||||
);
|
||||
|
||||
Global.mainModule.getPass(PassCode.Email).Do(
|
||||
message,
|
||||
Global.componentsServer.db.recipients.getSelectedMails());
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
package _VisualDVM.Passes.All;
|
||||
import Common.Database.Database;
|
||||
import Common.Passes.DeleteObjectPass;
|
||||
import Common.Utils.Utils_;
|
||||
import _VisualDVM.ComponentsServer.BugReport.BugReport;
|
||||
import _VisualDVM.Global;
|
||||
import _VisualDVM.Passes.PassCode;
|
||||
@@ -16,7 +15,6 @@ public class DeleteBugReport extends DeleteObjectPass<BugReport> {
|
||||
@Override
|
||||
protected void performDone() throws Exception {
|
||||
super.performDone();
|
||||
Utils_.forceDeleteWithCheck(target.getHome());
|
||||
Global.mainModule.getPass(PassCode.DeleteBugReportFromServer).Do(target);
|
||||
}
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
package _VisualDVM.Passes.All;
|
||||
import Common.Utils.Utils_;
|
||||
import _VisualDVM.Current;
|
||||
import _VisualDVM.Global;
|
||||
import _VisualDVM.Passes.PassCode;
|
||||
@@ -11,7 +10,6 @@ import org.apache.commons.io.FileUtils;
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
public class DownloadAllBugReportsArchives extends ComponentsServerPass<File> {
|
||||
//упраздненный временно проход.
|
||||
@Override
|
||||
public String getIconPath() {
|
||||
return "/icons/DownloadAll.png";
|
||||
@@ -46,12 +44,10 @@ public class DownloadAllBugReportsArchives extends ComponentsServerPass<File> {
|
||||
//теперь скопировать это в папку Bugs, с нормальными именами через zip
|
||||
File t2 = Paths.get(tempFolder.getAbsolutePath(), "Bugs").toFile();
|
||||
File[] archives = t2.listFiles();
|
||||
/*
|
||||
if (archives != null) {
|
||||
for (File file : archives) {
|
||||
FileUtils.moveFile(file, Paths.get(Global.BugReportsDirectory_OLD.getAbsolutePath(), file.getName() + ".zip").toFile());
|
||||
FileUtils.moveFile(file, Paths.get(Global.BugReportsDirectory.getAbsolutePath(), file.getName() + ".zip").toFile());
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@ public class DownloadBugReport extends ComponentsServerPass<BugReport> {
|
||||
@Override
|
||||
protected boolean canStart(Object... args) {
|
||||
target = (BugReport) args[0];
|
||||
return !target.getArchiveFile().exists() && SendRequest(ServerCode.ReceiveBugReport, String.valueOf(target.id));
|
||||
return !target.getArchiveFile().exists() && SendRequest(ServerCode.ReceiveBugReport, target.id);
|
||||
}
|
||||
@Override
|
||||
protected void performPreparation() throws Exception {
|
||||
@@ -16,7 +16,6 @@ public class DownloadBugReport extends ComponentsServerPass<BugReport> {
|
||||
}
|
||||
@Override
|
||||
protected void body() throws Exception {
|
||||
Utils_.CheckAndCleanDirectory(target.getHome());
|
||||
Utils_.bytesToFile((byte[]) request.server_response.object, target.getArchiveFile());
|
||||
}
|
||||
@Override
|
||||
|
||||
@@ -23,7 +23,7 @@ public class OpenBugReportTestProject extends Pass<BugReport> {
|
||||
if (Global.componentsServer.db.CheckCurrent(Log, BugReport.class) &&
|
||||
(target = Global.componentsServer.db.bugReports.getUI().getCurrent()).CheckNotDraft(Log)) {
|
||||
if (!target.project_version.isEmpty()) {
|
||||
root = new File(Global.visualiser.getDownloadsDirectory(), String.valueOf(target.id));
|
||||
root = new File(Global.visualiser.getDownloadsDirectory(), target.id);
|
||||
project = new File(root,
|
||||
Utils_.isWindows() ? Utils_.toW(target.project_version) : Utils_.toU(target.project_version)
|
||||
);
|
||||
|
||||
@@ -48,7 +48,7 @@ public class PublishBugReport extends PublishServerObject<ComponentsServer, BugR
|
||||
protected void performDone() throws Exception {
|
||||
//3- рассылка
|
||||
EmailMessage message = new EmailMessage(
|
||||
"Обнаружена ошибка " + Utils_.Brackets(pk),
|
||||
"Обнаружена ошибка " + Utils_.Brackets(target.id),
|
||||
target.getNewMailText()
|
||||
);
|
||||
Global.mainModule.getPass(PassCode.Email).Do(
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
package _VisualDVM.Passes.All;
|
||||
import _VisualDVM.Passes.Sapfor.SapforTransformation;
|
||||
public class SPF_MoveOperators extends SapforTransformation {
|
||||
}
|
||||
@@ -124,7 +124,6 @@ public class UpdateBugReportField extends ComponentsServerPass<BugReport> {
|
||||
message_header + " " + Utils_.Brackets(Global.mainModule.getAccount().name),
|
||||
message_text
|
||||
);
|
||||
|
||||
Global.mainModule.getPass(PassCode.Email).Do(
|
||||
message,
|
||||
Global.componentsServer.db.recipients.getSelectedMails());
|
||||
|
||||
@@ -362,15 +362,11 @@ public enum PassCode implements PassCode_ {
|
||||
TestingServerBackUp,
|
||||
CompareDVMRunTaskToEthalon,
|
||||
DropSapforConfigurationEthalon,
|
||||
RefreshSapforPackageResults,
|
||||
SPF_MoveOperators
|
||||
;
|
||||
RefreshSapforPackageResults;
|
||||
//--
|
||||
@Override
|
||||
public String getDescription() {
|
||||
switch (this) {
|
||||
case SPF_MoveOperators:
|
||||
return "Оптимальный порядок операторов";
|
||||
case SPF_InsertPrivateArrayDirectives:
|
||||
return "Анализ и вставка директив приватизации массивов";
|
||||
case CompareSapforPackageToEthalon:
|
||||
@@ -960,9 +956,6 @@ public enum PassCode implements PassCode_ {
|
||||
case SPF_RemoveDistArraysFromIO:
|
||||
name = "REMOVE_DIST_ARRAYS_FROM_IO";
|
||||
break;
|
||||
case SPF_MoveOperators:
|
||||
name = "MOVE_OPERATORS";
|
||||
break;
|
||||
}
|
||||
return p + " " + name;
|
||||
}
|
||||
|
||||
@@ -200,18 +200,13 @@ public class DVMPackage extends TestingPackage<DVMPackage_json> {
|
||||
return flags_in;
|
||||
}
|
||||
public static String completeEnvironments(String environmentsSet_in) {
|
||||
if (environmentsSet_in.isEmpty()){
|
||||
return "DVMH_NO_DIRECT_COPY=" + Utils_.DQuotes("1")+" "+ "DVMH_SET_AFFINITY="+Utils_.DQuotes("0");
|
||||
}
|
||||
//-
|
||||
String res = environmentsSet_in;
|
||||
if (!environmentsSet_in.contains("DVMH_NO_DIRECT_COPY")){
|
||||
res+=" DVMH_NO_DIRECT_COPY=" + Utils_.DQuotes("1");
|
||||
}
|
||||
if (!environmentsSet_in.contains("DVMH_SET_AFFINITY")){
|
||||
res+=" DVMH_SET_AFFINITY=" + Utils_.DQuotes("0");
|
||||
}
|
||||
return res;
|
||||
if (!environmentsSet_in.contains("DVMH_NO_DIRECT_COPY")) {
|
||||
if (environmentsSet_in.isEmpty())
|
||||
return "DVMH_NO_DIRECT_COPY=" + Utils_.DQuotes("1");
|
||||
else
|
||||
return environmentsSet_in + " " + "DVMH_NO_DIRECT_COPY=" + Utils_.DQuotes("1");
|
||||
} else
|
||||
return environmentsSet_in;
|
||||
}
|
||||
@Override
|
||||
public Class getJsonClass() {
|
||||
|
||||
@@ -19,4 +19,13 @@ public class DVMCompilationTask extends DVMTask {
|
||||
maxtime = configuration.c_maxtime;
|
||||
}
|
||||
//--
|
||||
@Override
|
||||
public Vector<String> pack(Object arg) {
|
||||
Vector<String> res = new Vector<>();
|
||||
res.add(String.valueOf(id)); //1
|
||||
res.add(String.valueOf(maxtime)); //2
|
||||
res.add(String.valueOf(test_id)); //3
|
||||
res.add(arg.toString().replace("\n", "|")); //4
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -90,6 +90,19 @@ public class DVMRunTask extends DVMTask {
|
||||
args = rt.args;
|
||||
}
|
||||
//-
|
||||
@Override
|
||||
public Vector<String> pack(Object arg) {
|
||||
Vector<String> res = new Vector<>();
|
||||
res.add(String.valueOf(id)); //1
|
||||
res.add(String.valueOf(maxtime)); //2
|
||||
res.add(String.valueOf(dvmcompilationtask_id)); //3
|
||||
res.add(matrix); //4
|
||||
res.add(environments); //5
|
||||
res.add(usr_par.replace("\n", "|")); //6
|
||||
res.add(args); //7
|
||||
res.add(String.valueOf(kernels)); //8
|
||||
return res;
|
||||
}
|
||||
public String getEnvironments() {
|
||||
return environments.replace("\n", ";");
|
||||
}
|
||||
|
||||
@@ -83,6 +83,9 @@ public class DVMTask extends iDBObject {
|
||||
"results",
|
||||
String.valueOf(id)).toFile();
|
||||
}
|
||||
public Vector<String> pack(Object arg) {
|
||||
return null;
|
||||
}
|
||||
public String getResultFile(File resultFile) {
|
||||
String res = "";
|
||||
if (dvm_package_id == CommonConstants.Nan) res = "задача ещё не выполнялась";
|
||||
|
||||
@@ -7,10 +7,6 @@ import _VisualDVM.Passes.All.UnzipFolderPass;
|
||||
import _VisualDVM.TestingSystem.Common.TasksPackageState;
|
||||
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask;
|
||||
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
|
||||
import _VisualDVM.TestingSystem.DVM.json.DVMCompilationPackage_json;
|
||||
import _VisualDVM.TestingSystem.DVM.json.CompilationTask_json;
|
||||
import _VisualDVM.TestingSystem.DVM.json.DVMRunPackage_json;
|
||||
import _VisualDVM.TestingSystem.DVM.json.RunTask_json;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
@@ -75,26 +71,19 @@ public class RemoteDVMTestingPlanner extends DVMTestingPlanner {
|
||||
//создать папку для пакета.
|
||||
user.connection.RMDIR(packageRemoteWorkspace.full_name);
|
||||
user.connection.sftpChannel.mkdir(packageRemoteWorkspace.full_name);
|
||||
//--
|
||||
DVMCompilationPackage_json compilationPackage_json = new DVMCompilationPackage_json();
|
||||
DVMRunPackage_json runPackage_json = new DVMRunPackage_json();
|
||||
//положить туда запакованные тексты задач.
|
||||
Vector<String> compilationLines = new Vector<>();
|
||||
Vector<String> runLines = new Vector<>();
|
||||
for (DVMCompilationTask compilationTask : testingPackage.package_json.compilationTasks) {
|
||||
String makefileText = generateMakefile(tests.get(compilationTask.test_id), compilationTask.language, testingPackage.drv, compilationTask.flags);
|
||||
//--
|
||||
compilationPackage_json.tasks.add(new CompilationTask_json(compilationTask, makefileText));
|
||||
//--
|
||||
for (DVMRunTask runTask : compilationTask.runTasks) {
|
||||
//--
|
||||
runPackage_json.tasks.add(new RunTask_json(runTask));
|
||||
}
|
||||
compilationLines.addAll(compilationTask.pack(makefileText));
|
||||
for (DVMRunTask runTask : compilationTask.runTasks)
|
||||
runLines.addAll(runTask.pack(null));
|
||||
}
|
||||
//--
|
||||
RemoteFile compilationFile_json = new RemoteFile(packageRemoteWorkspace, "compilationTasks.json");
|
||||
RemoteFile runFile_json = new RemoteFile(packageRemoteWorkspace, "runTasks.json");
|
||||
//--
|
||||
user.connection.writeToFile(Utils_.gson.toJson(compilationPackage_json),compilationFile_json);
|
||||
user.connection.writeToFile(Utils_.gson.toJson(runPackage_json), runFile_json);
|
||||
RemoteFile compilationPackage = new RemoteFile(packageRemoteWorkspace, "compilationTasks");
|
||||
RemoteFile runPackage = new RemoteFile(packageRemoteWorkspace, "runTasks");
|
||||
user.connection.writeToFile(String.join("\n", compilationLines) + "\n", compilationPackage);
|
||||
user.connection.writeToFile(String.join("\n", runLines) + "\n", runPackage);
|
||||
// --
|
||||
user.connection.MKDIR(new RemoteFile(packageRemoteWorkspace, "state"));
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
package _VisualDVM.TestingSystem.DVM.json;
|
||||
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMCompilationTask;
|
||||
import com.google.gson.annotations.Expose;
|
||||
public class CompilationTask_json extends Task_json {
|
||||
@Expose
|
||||
public String test_name; //-
|
||||
@Expose
|
||||
public String makefile_text; //res.add(arg.toString().replace("\n", "|")); //4 todo в планировщике убрать шифровку
|
||||
//--
|
||||
public CompilationTask_json(DVMCompilationTask task, String makefile_text_in){
|
||||
super(task);
|
||||
test_name = String.valueOf(task.test_id);
|
||||
makefile_text = makefile_text_in;
|
||||
}
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
package _VisualDVM.TestingSystem.DVM.json;
|
||||
public class DVMCompilationPackage_json extends DVMPackage_json<CompilationTask_json> {
|
||||
}
|
||||
@@ -1,9 +0,0 @@
|
||||
package _VisualDVM.TestingSystem.DVM.json;
|
||||
import com.google.gson.annotations.Expose;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Vector;
|
||||
public class DVMPackage_json<T extends Task_json> {
|
||||
@Expose
|
||||
public List<T> tasks = new Vector<>();
|
||||
}
|
||||
@@ -1,3 +0,0 @@
|
||||
package _VisualDVM.TestingSystem.DVM.json;
|
||||
public class DVMRunPackage_json extends DVMPackage_json<RunTask_json>{
|
||||
}
|
||||
@@ -1,26 +0,0 @@
|
||||
package _VisualDVM.TestingSystem.DVM.json;
|
||||
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMRunTask;
|
||||
import com.google.gson.annotations.Expose;
|
||||
public class RunTask_json extends Task_json {
|
||||
@Expose
|
||||
public int cores;
|
||||
@Expose
|
||||
public int compilation_task_id;
|
||||
@Expose
|
||||
public String matrix;
|
||||
@Expose
|
||||
public String args;
|
||||
@Expose
|
||||
public String environments;
|
||||
@Expose
|
||||
public String usr_par; //- usr_par.replace("\n", "|") todo в планировщике убрать шифровку.
|
||||
public RunTask_json(DVMRunTask task){
|
||||
super(task);
|
||||
cores = task.kernels;
|
||||
compilation_task_id = task.dvmcompilationtask_id;
|
||||
matrix = task.matrix;
|
||||
args = task.args;
|
||||
environments = task.environments;
|
||||
usr_par = task.usr_par;
|
||||
}
|
||||
}
|
||||
@@ -1,13 +0,0 @@
|
||||
package _VisualDVM.TestingSystem.DVM.json;
|
||||
import _VisualDVM.TestingSystem.DVM.DVMTasks.DVMTask;
|
||||
import com.google.gson.annotations.Expose;
|
||||
public class Task_json {
|
||||
@Expose
|
||||
public int id; //-
|
||||
@Expose
|
||||
public int maxtime;
|
||||
public Task_json(DVMTask task){
|
||||
id = task.id;
|
||||
maxtime = task.maxtime;
|
||||
}
|
||||
}
|
||||
@@ -11,32 +11,29 @@ import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.util.Date;
|
||||
public class PackageModeSupervisor extends ThreadsPlanner {
|
||||
SapforPackage_json package_json = null;
|
||||
// File sapfor_drv = null;
|
||||
File sapfor_drv = null;
|
||||
public PackageModeSupervisor() throws Exception {
|
||||
super(2000);
|
||||
package_json = (SapforPackage_json) Utils_.jsonFromFile(new File(Constants.package_json), SapforPackage_json.class);
|
||||
//--
|
||||
File sapfor_src = new File(package_json.sapfor_drv);
|
||||
//--
|
||||
String pid_prefix = Utils_.getDateName("SAPFOR_F");
|
||||
//--
|
||||
sapfor_drv = new File(Utils_.getHomeDirectory(), Utils_.getDateName("SAPFOR_F"));
|
||||
FileUtils.copyFile(sapfor_src, sapfor_drv);
|
||||
if (!sapfor_drv.setExecutable(true))
|
||||
throw new Exception("Не удалось сделать файл " + sapfor_drv.getName() + " исполняемым!");
|
||||
File PID = new File("PID");
|
||||
FileUtils.writeStringToFile(PID, pid_prefix, Charset.defaultCharset());
|
||||
FileUtils.writeStringToFile(PID, sapfor_drv.getName(), Charset.defaultCharset());
|
||||
//---
|
||||
Date startDate = new Date();
|
||||
File started = new File(CommonConstants.STARTED);
|
||||
FileUtils.writeStringToFile(started, String.valueOf(startDate));
|
||||
//формирование списка задач.
|
||||
setMaxKernels(package_json.kernels);
|
||||
for (SapforTask task : package_json.tasks) {
|
||||
File task_drv = new File(Utils_.getHomeDirectory(),pid_prefix+"_"+task.id);
|
||||
Files.createSymbolicLink(task_drv.toPath(), sapfor_src.toPath());
|
||||
addThread(new TaskThread(task, task_drv));
|
||||
}
|
||||
for (SapforTask task : package_json.tasks)
|
||||
addThread(new TaskThread(task, sapfor_drv));
|
||||
interruptThread.start();
|
||||
}
|
||||
@Override
|
||||
@@ -58,8 +55,8 @@ public class PackageModeSupervisor extends ThreadsPlanner {
|
||||
// ,"sh", "exe", "bat"
|
||||
);
|
||||
//удаление сапфора exception
|
||||
// if (sapfor_drv.exists())
|
||||
// FileUtils.forceDelete(sapfor_drv);
|
||||
if (sapfor_drv.exists())
|
||||
FileUtils.forceDelete(sapfor_drv);
|
||||
} catch (Exception e) {
|
||||
Utils_.MainLog.PrintException(e);
|
||||
}
|
||||
|
||||
@@ -22,7 +22,6 @@ import _VisualDVM.TestingSystem.SAPFOR.ServerSapfor.ServerSapforState;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileFilter;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
@@ -149,7 +148,6 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
|
||||
}
|
||||
@Override
|
||||
protected void DownloadResults() throws Exception {
|
||||
//-
|
||||
UpdatePackageState(TasksPackageState.Analysis);
|
||||
}
|
||||
@Override
|
||||
@@ -157,16 +155,6 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
|
||||
//не требуется.
|
||||
testingPackage.progress = 100;
|
||||
testingPackage.checkFinishState();
|
||||
//--
|
||||
File workspace = testingPackage.getLocalWorkspace();
|
||||
File[] links = workspace.listFiles();
|
||||
if (links!=null){
|
||||
Print("files found: "+links.length);
|
||||
for (File file: links) {
|
||||
if (file.isFile() && file.getName().startsWith("SAPFOR"))
|
||||
FileUtils.forceDelete(file);
|
||||
}
|
||||
}
|
||||
//--для эталона
|
||||
if (testingPackage.ethalon_id != CommonConstants.Nan) {
|
||||
TextLog log = new TextLog();
|
||||
@@ -230,8 +218,7 @@ public class SapforTestingPlanner extends TestingPlanner<SapforPackage> {
|
||||
Thread.sleep(1000);
|
||||
} while (!aborted_file.exists());
|
||||
Print("coup de grace..");
|
||||
// String kill_command = "killall -SIGKILL " + testingPackage.PID;
|
||||
String kill_command = "pkill -SIGKILL -f " + testingPackage.PID;
|
||||
String kill_command = "killall -SIGKILL " + testingPackage.PID;
|
||||
Print(kill_command);
|
||||
Process killer = Runtime.getRuntime().exec(kill_command);
|
||||
killer.waitFor();
|
||||
|
||||
@@ -14,7 +14,6 @@ import java.net.InetSocketAddress;
|
||||
import java.net.Socket;
|
||||
import java.net.URL;
|
||||
import java.nio.file.*;
|
||||
import java.nio.file.attribute.PosixFilePermission;
|
||||
import java.security.MessageDigest;
|
||||
import java.util.*;
|
||||
import java.util.regex.Matcher;
|
||||
@@ -736,15 +735,5 @@ public class Utils {
|
||||
}
|
||||
return dates.firstElement();
|
||||
}
|
||||
public static void chmod777(File file) throws Exception{
|
||||
if (!Utils_.isWindows()) {
|
||||
//не в правах дело..
|
||||
Set<PosixFilePermission> newPermissions = new HashSet<>();
|
||||
for (PosixFilePermission permission: PosixFilePermission.values()){
|
||||
newPermissions.add(permission);
|
||||
}
|
||||
Files.setPosixFilePermissions(file.toPath(), newPermissions);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,10 +3,10 @@ import _VisualDVM.Global;
|
||||
import _VisualDVM.Visual.Menus.PropertiesSubmenu;
|
||||
public class VersionsComparisonMenu extends PropertiesSubmenu {
|
||||
public VersionsComparisonMenu() {
|
||||
super("Сравнение текстов", null,
|
||||
super("Сравнение версий", null,
|
||||
Global.normalProperties,
|
||||
// "RegisterOn",
|
||||
"SpacesOn",
|
||||
// "SpacesOn",
|
||||
// "EmptyLinesOn",
|
||||
// "FortranWrapsOn",
|
||||
"ExtensionsOn",
|
||||
|
||||
@@ -192,7 +192,7 @@
|
||||
<properties>
|
||||
<font name="Times New Roman" size="14" style="2"/>
|
||||
<foreground color="-16777216"/>
|
||||
<text value="id"/>
|
||||
<text value="bug_"/>
|
||||
</properties>
|
||||
</component>
|
||||
<component id="a9e5" class="javax.swing.JTextField" binding="BugReportsKeyFilter" custom-create="true">
|
||||
@@ -426,41 +426,6 @@
|
||||
</grid>
|
||||
</children>
|
||||
</grid>
|
||||
<grid id="58b74" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||
<constraints>
|
||||
<tabbedpane title="Вложения"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<splitpane id="4276b" binding="SC91">
|
||||
<constraints border-constraint="Center"/>
|
||||
<properties>
|
||||
<dividerLocation value="300"/>
|
||||
<dividerSize value="3"/>
|
||||
</properties>
|
||||
<border type="none"/>
|
||||
<children>
|
||||
<grid id="a0a40" binding="bugRepotsFilesPanel" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||
<constraints>
|
||||
<splitpane position="left"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children/>
|
||||
</grid>
|
||||
<grid id="13d" layout-manager="BorderLayout" hgap="0" vgap="0">
|
||||
<constraints>
|
||||
<splitpane position="right"/>
|
||||
</constraints>
|
||||
<properties/>
|
||||
<border type="none"/>
|
||||
<children/>
|
||||
</grid>
|
||||
</children>
|
||||
</splitpane>
|
||||
</children>
|
||||
</grid>
|
||||
</children>
|
||||
</tabbedpane>
|
||||
</children>
|
||||
|
||||
@@ -32,7 +32,6 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
|
||||
public DescriptionInterface descriptionInterface;
|
||||
public CommentInterface commentInterface;
|
||||
public JSplitPane SC6;
|
||||
public JSplitPane SC91;
|
||||
DocumentListener descriptionAdditionListener = new DocumentListener() {
|
||||
@Override
|
||||
public void removeUpdate(DocumentEvent e) {
|
||||
@@ -124,7 +123,6 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
|
||||
private JTextField BugReportsCommentFilter;
|
||||
private JPanel workspacesPanel;
|
||||
private JLabel adminLabel;
|
||||
private JPanel bugRepotsFilesPanel;
|
||||
private Viewer BugReportSettings;
|
||||
public CallbackForm() {
|
||||
LoadSplitters();
|
||||
@@ -155,7 +153,6 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
|
||||
SwitchScreen(Global.normalProperties.SmallScreen);
|
||||
//-
|
||||
Global.componentsServer.db.bugReports.mountUI(bugReportsPanel);
|
||||
Global.componentsServer.db.bugReportsFiles.mountUI(bugRepotsFilesPanel);
|
||||
Global.componentsServer.db.recipients.mountUI(recipientsPanel);
|
||||
//-
|
||||
if (!Global.mainModule.getPass(PassCode.CheckAccount).isDone()) {
|
||||
|
||||
@@ -8,7 +8,6 @@ import Common.Visual.Controls.ShortLabel;
|
||||
import Common.Visual.Editor.BaseEditor;
|
||||
import Common.Visual.Menus.VisualiserMenuBar;
|
||||
import Common.Visual.UI;
|
||||
import _VisualDVM.Global;
|
||||
import _VisualDVM.ProjectData.Files.UI.Editor.SPFEditor;
|
||||
import _VisualDVM.Utils;
|
||||
import com.github.difflib.text.DiffRow;
|
||||
@@ -186,7 +185,7 @@ public abstract class ComparisonForm<T> {
|
||||
DiffRowGenerator generator = DiffRowGenerator.create()
|
||||
.showInlineDiffs(true)
|
||||
.inlineDiffByWord(true)
|
||||
.ignoreWhiteSpaces(!Global.normalProperties.SpacesOn)
|
||||
// .ignoreWhiteSpaces(false)
|
||||
.oldTag(f -> separator)
|
||||
.newTag(f -> separator)
|
||||
.build();
|
||||
|
||||
@@ -23,11 +23,11 @@ public:
|
||||
elements.push_back(new_line);
|
||||
}
|
||||
|
||||
int getLength() const {
|
||||
return (int)elements.size();
|
||||
long getLength() const {
|
||||
return (long)elements.size();
|
||||
}
|
||||
|
||||
T* get(int i) {
|
||||
T* get(long i) {
|
||||
return elements[i];
|
||||
}
|
||||
|
||||
|
||||
@@ -6,11 +6,11 @@
|
||||
class CompilationSupervisor : public Supervisor<CompilationTask> {
|
||||
public:
|
||||
CompilationSupervisor() {
|
||||
this->init("compilationTasks.json");
|
||||
this->init("compilationTasks", 4);
|
||||
}
|
||||
|
||||
CompilationTask* getTaskById(int task_id) {
|
||||
for (int i = 0; i < getLength(); ++i) {
|
||||
CompilationTask* getTaskById(long task_id) {
|
||||
for (long i = 0; i < getLength(); ++i) {
|
||||
CompilationTask* task = get(i);
|
||||
if (task->getId() == task_id)
|
||||
return task;
|
||||
|
||||
@@ -2,14 +2,13 @@
|
||||
|
||||
#include "Task.h"
|
||||
#include "Text.h"
|
||||
#include "json.hpp"
|
||||
|
||||
class CompilationTask : public Task {
|
||||
String test_name;
|
||||
String test_id;
|
||||
String makefile_text;
|
||||
public:
|
||||
void setTestName(String* test_name_in) {
|
||||
test_name = String(test_name_in->getCharArray());
|
||||
void setTestId(String* test_id_in) {
|
||||
test_id = String(test_id_in->getCharArray());
|
||||
}
|
||||
|
||||
void setMakefileText(String* makefile_text_in) {
|
||||
@@ -17,30 +16,22 @@ public:
|
||||
}
|
||||
|
||||
virtual void print() const {
|
||||
printf("id=%ld; maxtime=%d; test_name=%s\n", id, maxtime, test_name.getCharArray());
|
||||
printf("id=%ld; maxtime=%d; test_id=%s\n", id, maxtime, test_id.getCharArray());
|
||||
printf("makefile_text=%s\n", makefile_text.getCharArray());
|
||||
}
|
||||
|
||||
CompilationTask(Text* lines, int offset) : Task(lines, offset) {
|
||||
setTestName(lines->get(offset + 2));
|
||||
CompilationTask(Text* lines, int offset) :Task(lines, offset) {
|
||||
setTestId(lines->get(offset + 2));
|
||||
setMakefileText(lines->get(offset + 3));
|
||||
setState(Waiting);
|
||||
kernels = 1;
|
||||
}
|
||||
|
||||
CompilationTask(const nlohmann::json& data) : Task(data) {
|
||||
test_name = Utils::getValue<string>(data, "test_name");
|
||||
makefile_text = Utils::getValue<string>(data, "makefile_text");
|
||||
|
||||
setState(Waiting);
|
||||
kernels = 1;
|
||||
}
|
||||
|
||||
virtual void prepareWorkspace() {
|
||||
String makeFilePath = String(id) + "/Makefile";
|
||||
File makeFileFile = File(makeFilePath, this->makefile_text);
|
||||
String tests = userWorkspace + "/projects";
|
||||
String testPath = tests + "/" + test_name;
|
||||
String testPath = tests + "/" + test_id;
|
||||
Utils::CopyDirectory_L(testPath, workspace);
|
||||
}
|
||||
virtual String getLaunchScriptText() {
|
||||
|
||||
@@ -6,10 +6,9 @@
|
||||
class RunSupervisor : public Supervisor<RunTask> {
|
||||
public:
|
||||
RunSupervisor(CompilationSupervisor* compilationSupervisor) {
|
||||
this->init("runTasks.json");
|
||||
|
||||
this->init("runTasks", 8);
|
||||
//проверить отмененные задачи.
|
||||
for (int i = 0; i < getLength(); ++i) {
|
||||
for (long i = 0; i < getLength(); ++i) {
|
||||
RunTask* task = this->get(i);
|
||||
CompilationTask* parent = compilationSupervisor->getTaskById(task->getTestCompilationTaskId());
|
||||
task->setState((parent->getState() == Done) ? Waiting : Canceled);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include "CompilationTask.h"
|
||||
|
||||
class RunTask : public Task {
|
||||
int testcompilationtask_id;
|
||||
long testcompilationtask_id;
|
||||
String binary_name;
|
||||
String matrix;
|
||||
String environments;
|
||||
@@ -23,23 +23,34 @@ public:
|
||||
kernels
|
||||
);
|
||||
}
|
||||
|
||||
void setKernels(String* kernels_s) { kernels = atoi(kernels_s->getCharArray()); }
|
||||
void setTestCompilationTaskId(String* id_s) { testcompilationtask_id = strtol(id_s->getCharArray(), NULL, 10); }
|
||||
|
||||
int getTestCompilationTaskId() { return testcompilationtask_id; }
|
||||
|
||||
void setMatrix(String* matrix_in) { matrix = String(matrix_in->getCharArray()); }
|
||||
void setEnvironments(String* environments_in) { environments = String(environments_in->getCharArray()); }
|
||||
void setUsrPar(String* usr_par_in) { usr_par = String(usr_par_in->getCharArray(), '|'); }
|
||||
void setArgs(String* args_in) { args = String(args_in->getCharArray()); }
|
||||
void setParent(CompilationTask* parent_in) {
|
||||
int setKernels(String* kernels_s) {
|
||||
return kernels = atoi(kernels_s->getCharArray());
|
||||
}
|
||||
long setTestCompilationTaskId(String* id_s) {
|
||||
return testcompilationtask_id = strtol(id_s->getCharArray(), NULL, 10);
|
||||
}
|
||||
long getTestCompilationTaskId() {
|
||||
return testcompilationtask_id;
|
||||
}
|
||||
void setMatrix(String* matrix_in) {
|
||||
matrix = String(matrix_in->getCharArray());
|
||||
}
|
||||
void setEnvironments(String* environments_in) {
|
||||
environments = String(environments_in->getCharArray());
|
||||
}
|
||||
void setUsrPar(String* usr_par_in) {
|
||||
usr_par = String(usr_par_in->getCharArray(), '|');
|
||||
}
|
||||
void setArgs(String* args_in) {
|
||||
args = String(args_in->getCharArray());
|
||||
}
|
||||
void setParent(CompilationTask* parent_in) {
|
||||
parent = parent_in;
|
||||
binary_name = "spf_" + packageId+"_"+String(id) + "_" + matrix.Replace(' ', '_');
|
||||
}
|
||||
|
||||
CompilationTask* getParent() { return parent; }
|
||||
|
||||
CompilationTask* getParent() {
|
||||
return parent;
|
||||
}
|
||||
RunTask(Text* lines, int offset) :Task(lines, offset) {
|
||||
setTestCompilationTaskId(lines->get(offset + 2));
|
||||
setMatrix(lines->get(offset + 3));
|
||||
@@ -50,16 +61,6 @@ public:
|
||||
//todo setStartCommand
|
||||
}
|
||||
|
||||
RunTask(const nlohmann::json& data) : Task(data) {
|
||||
testcompilationtask_id = Utils::getValue<int>(data, "compilation_task_id");
|
||||
matrix = Utils::getValue<string>(data, "matrix");
|
||||
environments = Utils::getValue<string>(data, "environments");
|
||||
usr_par = Utils::getValue<string>(data, "usr_par");
|
||||
args = Utils::getValue<string>(data, "args");
|
||||
kernels = Utils::getValue<int>(data, "cores");
|
||||
//todo setStartCommand
|
||||
}
|
||||
|
||||
String getLaunchScriptText() override {
|
||||
String modules = userWorkspace + "/modules";
|
||||
String starterCall = modules + "/starter";
|
||||
|
||||
@@ -16,11 +16,13 @@ public:
|
||||
|
||||
String(const char* s, char ps) {
|
||||
body = s;
|
||||
for (int i = 0; i < getLength(); ++i)
|
||||
for (long i = 0; i < getLength(); ++i)
|
||||
body[i] = (s[i] == ps) ? '\n' : s[i];
|
||||
}
|
||||
|
||||
String(int s) { body = to_string(s); }
|
||||
String(long s) { body = to_string(s); }
|
||||
String(long long s) { body = to_string(s); }
|
||||
String (string s){ body = s;}
|
||||
|
||||
void println() const { printf("[%s]\n", body.c_str()); }
|
||||
|
||||
@@ -4,22 +4,18 @@
|
||||
#include <set>
|
||||
#include <vector>
|
||||
#include <queue>
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <math.h>
|
||||
#include <thread>
|
||||
#include <time.h>
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
|
||||
#include "File.h"
|
||||
#include "Task.h"
|
||||
#include "Array.h"
|
||||
#include "Utils.h"
|
||||
#include "json.hpp"
|
||||
|
||||
#ifndef _WIN32
|
||||
#include <sys/time.h>
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
#include <time.h>
|
||||
|
||||
enum SupervisorState {
|
||||
WorkspacesCreation, //0
|
||||
@@ -62,13 +58,12 @@ public:
|
||||
for (auto& elem : this->getElements())
|
||||
elem->print();
|
||||
}
|
||||
|
||||
void init(const char* fileName, int recordSize) {
|
||||
state = WorkspacesCreation;
|
||||
File* packedTasks = new File(fileName);
|
||||
Text* lines = packedTasks->readLines();
|
||||
|
||||
const int length = lines->getLength() / recordSize;
|
||||
const long length = lines->getLength() / recordSize;
|
||||
int offset = 0;
|
||||
for (int i = 0; i < length; ++i) {
|
||||
this->add(new T(lines, offset));
|
||||
@@ -77,31 +72,6 @@ public:
|
||||
delete packedTasks;
|
||||
delete lines;
|
||||
}
|
||||
|
||||
void init(const char* fileName) {
|
||||
state = WorkspacesCreation;
|
||||
|
||||
std::ifstream file(fileName);
|
||||
if (!file.is_open()) {
|
||||
printf("can not open file %s\n", fileName);
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
nlohmann::json data = nlohmann::json::parse(file);
|
||||
file.close();
|
||||
|
||||
if (data.contains("tasks")) {
|
||||
auto tasks = data["tasks"];
|
||||
int length = tasks.size();
|
||||
for (size_t i = 0; i < tasks.size(); ++i)
|
||||
this->add(new T(tasks[i]));
|
||||
}
|
||||
else {
|
||||
printf("can not fine object 'tasks'\n");
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
|
||||
void changeState() {
|
||||
switch (this->state) {
|
||||
case WorkspacesCreation:
|
||||
@@ -200,7 +170,7 @@ public:
|
||||
killed = false;
|
||||
|
||||
while (activeTasks) {
|
||||
int oldActiveTasks = activeTasks;
|
||||
long oldActiveTasks = activeTasks;
|
||||
emptyKeys.clear();
|
||||
toDel.clear();
|
||||
|
||||
@@ -309,7 +279,7 @@ public:
|
||||
void saveState() {
|
||||
saveState(getStatePrefix() + printState());
|
||||
}
|
||||
void saveProgress(size_t persentDone) {
|
||||
void saveProgress(long long persentDone) {
|
||||
FILE* f = fopen("progress", "w");
|
||||
if (f) {
|
||||
fprintf(f, "%lld", persentDone);
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <chrono>
|
||||
#include <map>
|
||||
#include <string>
|
||||
|
||||
#include "File.h"
|
||||
#include "Utils.h"
|
||||
@@ -40,7 +38,7 @@ enum TestType {
|
||||
|
||||
class Task {
|
||||
protected:
|
||||
int id;
|
||||
long id;
|
||||
|
||||
int maxtime;
|
||||
int kernels; //получение зависит от типа задачи.
|
||||
@@ -103,32 +101,22 @@ public:
|
||||
void setStart() { start_time = std::chrono::system_clock::now(); }
|
||||
double getTotalTime() const { return total_time; }
|
||||
|
||||
int getId() { return id; }
|
||||
int setId(String* id_s) {
|
||||
long getId() { return id; }
|
||||
long setId(String* id_s) {
|
||||
return id = strtol(id_s->getCharArray(), NULL, 10);
|
||||
}
|
||||
|
||||
int getMaxtime() { return maxtime; }
|
||||
int setMaxtime(String* maxtime_s) { return maxtime = atoi(maxtime_s->getCharArray()); }
|
||||
|
||||
int setMaxtime(String* maxtime_s) {
|
||||
return maxtime = atoi(maxtime_s->getCharArray());
|
||||
}
|
||||
const String& getWorkspace() { return workspace; }
|
||||
|
||||
TaskState getState() { return state; }
|
||||
TaskState setState(TaskState state_in) { return state = state_in; }
|
||||
|
||||
Task(Text* lines, int offset) {
|
||||
setId(lines->get(offset));
|
||||
setMaxtime(lines->get(offset + 1));
|
||||
workspace = packageWorkspace + "/" + String(id);
|
||||
}
|
||||
|
||||
Task(const nlohmann::json& data) {
|
||||
this->id = Utils::getValue<int>(data, "id");
|
||||
this->maxtime = Utils::getValue<int>(data, "maxtime");
|
||||
|
||||
workspace = packageWorkspace + "/" + String(id);
|
||||
}
|
||||
|
||||
virtual void print() const = 0;
|
||||
//-
|
||||
virtual void prepareWorkspace() {}
|
||||
@@ -228,5 +216,5 @@ public:
|
||||
}
|
||||
}
|
||||
//--
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
@@ -9,7 +9,7 @@ public:
|
||||
printf("text length=%ld\n", this->getLength());
|
||||
|
||||
auto elems = this->getElements();
|
||||
for (int i = 0; i < elems.size(); ++i) {
|
||||
for (long i = 0; i < elems.size(); ++i) {
|
||||
printf("i=%ld; [%s]\n", i, elems[i]->getCharArray());
|
||||
// elements[i]->println();
|
||||
}
|
||||
|
||||
@@ -6,7 +6,6 @@
|
||||
#include <time.h>
|
||||
#include <chrono>
|
||||
#include <thread>
|
||||
#include "json.hpp"
|
||||
|
||||
#if __cplusplus >= 201703L
|
||||
#include <filesystem>
|
||||
@@ -113,24 +112,11 @@ public:
|
||||
return res;
|
||||
}
|
||||
|
||||
static String getFileName(const String& path){
|
||||
static String getFileName(const String& path){
|
||||
int start_i = path.getBody().find_last_of('/');
|
||||
if (start_i != string::npos){
|
||||
return String(path.getBody().substr(start_i+1));
|
||||
}
|
||||
return String();
|
||||
}
|
||||
|
||||
template <typename T>
|
||||
static T getValue(const nlohmann::json& data, const string& obj) {
|
||||
T retval;
|
||||
if (data.contains(obj))
|
||||
retval = data[obj];
|
||||
else {
|
||||
printf("can not fine object '%s'\n", obj.c_str());
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
return retval;
|
||||
}
|
||||
};
|
||||
|
||||
22874
src/files/json.hpp
22874
src/files/json.hpp
File diff suppressed because it is too large
Load Diff
@@ -115,7 +115,7 @@ int main(int argc, char ** argv)
|
||||
("PATH="+PATH).println();
|
||||
("LD_LIBRARY_PATH="+LD_LIBRARY_PATH).println();
|
||||
//--
|
||||
packageId = Utils::getFileName(packageWorkspace);
|
||||
packageId =Utils::getFileName(packageWorkspace);
|
||||
#if __cplusplus >= 201703L
|
||||
std::filesystem::current_path(packageWorkspace.getCharArray());
|
||||
#else
|
||||
|
||||
@@ -1 +1 @@
|
||||
27
|
||||
24
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 843 B |
Reference in New Issue
Block a user