проверка, что версии SAPFOR не собрана. v++

This commit is contained in:
2024-03-02 22:32:42 +03:00
parent 2451129e0e
commit 6088854a54
4 changed files with 86 additions and 58 deletions

3
.idea/workspace.xml generated
View File

@@ -8,7 +8,8 @@
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Repository/Component/Visualiser.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/InstallServerSapfor.java" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -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 = 1071; version = 1072;
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());

View File

@@ -170,6 +170,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
int test_id; int test_id;
switch (code) { switch (code) {
case EmailSapforAssembly: case EmailSapforAssembly:
/*
Print("Сообщить о сборке SAPFOR для пользователя " + request.arg); Print("Сообщить о сборке SAPFOR для пользователя " + request.arg);
Vector<String> assembly_info = (Vector<String>) request.object; Vector<String> assembly_info = (Vector<String>) request.object;
File out = Paths.get(Global.RepoDirectory.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN, Constants.out_file).toFile(); File out = Paths.get(Global.RepoDirectory.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN, Constants.out_file).toFile();
@@ -182,6 +183,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
); );
Email(message, out, err); Email(message, out, err);
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
*/
break; break;
//------------------------------------------->> //------------------------------------------->>
case DownloadTest: case DownloadTest:
@@ -491,9 +493,23 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
throw new RepositoryRefuseException("Не удалось заархивировать пакет тестирования SAPFOR с ключом " + sapforPackage_id); throw new RepositoryRefuseException("Не удалось заархивировать пакет тестирования SAPFOR с ключом " + sapforPackage_id);
} }
private void InstallServerSapfor() throws Exception { private void InstallServerSapfor() throws Exception {
int max_version = Constants.Nan;
int current_version = Constants.Nan;
//--
for (ServerSapfor sapfor : db.serverSapfors.Data.values()) {
int version = -1;
try {
version = Integer.parseInt(sapfor.version);
} catch (Exception ex) {
ex.printStackTrace();
}
if (version > max_version) max_version = version;
}
System.out.println("max Sapfor version is " + max_version);
//--
File testingSystemHome = new File(Global.Home); File testingSystemHome = new File(Global.Home);
File repo = new File(testingSystemHome, "Repo"); File repo = new File(testingSystemHome, "Repo");
File repoSapforHome = Paths.get(repo.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN ).toFile(); File repoSapforHome = Paths.get(repo.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN).toFile();
File repo_bin = new File(repoSapforHome, "Sapfor_F"); File repo_bin = new File(repoSapforHome, "Sapfor_F");
//-- //--
System.out.println("Синхронизация ветви DVM..."); System.out.println("Синхронизация ветви DVM...");
@@ -507,9 +523,31 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
Constants.REPOSITORY_AUTHENTICATION + Constants.REPOSITORY_AUTHENTICATION +
" " + Constants.SAPFOR_REPOSITORY + " 1>spf_out.txt 2>spf_err.txt\n").waitFor(); " " + Constants.SAPFOR_REPOSITORY + " 1>spf_out.txt 2>spf_err.txt\n").waitFor();
//-- //--
if (repo_bin.exists()) if (repo_bin.exists())
FileUtils.forceDelete(repo_bin); FileUtils.forceDelete(repo_bin);
//-
File versionFile = Paths.get(repo.getAbsolutePath(), "/sapfor/experts/Sapfor_2017/_src/Utils/version.h").toFile();
if (versionFile.exists()) {
List<String> data = FileUtils.readLines(versionFile);
for (String s : data) {
if (s.startsWith("#define VERSION_SPF ")) {
String[] version_data = s.split("\"");
if (version_data.length > 0) {
String version_s = version_data[1];
//-
try {
current_version = Integer.parseInt(version_s);
} catch (Exception ex) {
ex.printStackTrace();
}
//-
if (current_version == max_version) {
throw new RepositoryRefuseException("Версия SAPFOR " + max_version + " уже собрана!");
}
}
}
}
}
//-- //--
System.out.println("Сборка SAPFOR..."); System.out.println("Сборка SAPFOR...");
Utils.startScript(repoSapforHome, repoSapforHome, "build_sapfor", Utils.startScript(repoSapforHome, repoSapforHome, "build_sapfor",
@@ -517,7 +555,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
//-- //--
System.out.println("DONE"); System.out.println("DONE");
File repoSapfor = new File(repoSapforHome, "Sapfor_F"); File repoSapfor = new File(repoSapforHome, "Sapfor_F");
System.out.println("Result file is "+Utils.Brackets(repoSapfor.getAbsolutePath())); System.out.println("Result file is " + Utils.Brackets(repoSapfor.getAbsolutePath()));
if (repoSapfor.exists()) { if (repoSapfor.exists()) {
System.out.println("assembly found!"); System.out.println("assembly found!");
response = new ServerExchangeUnit_2021(ServerCode.OK); response = new ServerExchangeUnit_2021(ServerCode.OK);
@@ -535,18 +573,16 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
serverSapfor.languageName = LanguageName.fortran; serverSapfor.languageName = LanguageName.fortran;
serverSapfor.buildDate = new Date().getTime(); serverSapfor.buildDate = new Date().getTime();
response.object = serverSapfor; response.object = serverSapfor;
File version =new File(sapforHome, "version.txt"); serverSapfor.version = String.valueOf(current_version);
System.out.println("Запрос версии.."); //---
Utils.startScript(sapforHome, sapforHome, "get_version", EmailSapforAssembly(current_version, true);
serverSapfor.getVersionCommand()+" 1>"+Utils.DQuotes(version.getAbsolutePath())).waitFor(); //---
if (version.exists()){ } else {
System.out.println("version.txt found"); //---
String raw = FileUtils.readFileToString(version); EmailSapforAssembly(current_version, false);
System.out.println(Utils.Brackets(raw)); //---
String[] data = raw.split(" "); throw new RepositoryRefuseException("Бинарный файл SAPFOR не найден!");
if (data.length >= 4) serverSapfor.version = data[3].replace(",", "");
} }
}else throw new RepositoryRefuseException("Не удалось собрать SAPFOR");
} }
private void ReplaceTestCode() throws Exception { private void ReplaceTestCode() throws Exception {
Test test = (Test) request.object; Test test = (Test) request.object;
@@ -558,6 +594,35 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
"Не удалось прикрепить проект к тесту с id " + test.id "Не удалось прикрепить проект к тесту с id " + test.id
+ "\nТест будет удален" + "\nТест будет удален"
); );
}else db.Update(test); //обновить список файлов и размерность. } else db.Update(test); //обновить список файлов и размерность.
}
private void EmailSapforAssembly(int version, boolean done) throws Exception {
String version_s = (version == Constants.Nan) ? "?" : String.valueOf(version);
String status = done ? "Успешно" : "С ошибками";
//-
File out = Paths.get(Global.RepoDirectory.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN, Constants.out_file).toFile();
File err = Paths.get(Global.RepoDirectory.getAbsolutePath(), Constants.SAPFOR_REPOSITORY_BIN, Constants.err_file).toFile();
Vector<String> targets = new Vector<>(Arrays.asList(Global.admins_mails));
EmailMessage message = new EmailMessage(
"Выполнена сборка системы SAPFOR",
"Версия: " + version_s + "\n" + "Статус: " + status,
targets
);
//-
Email(message, out, err);
} }
} }
/*
File version = new File(sapforHome, "version.txt");
System.out.println("Запрос версии..");
Utils.startScript(sapforHome, sapforHome, "get_version",
serverSapfor.getVersionCommand() + " 1>" + Utils.DQuotes(version.getAbsolutePath())).waitFor();
if (version.exists()) {
System.out.println("version.txt found");
String raw = FileUtils.readFileToString(version);
System.out.println(Utils.Brackets(raw));
String[] data = raw.split(" ");
if (data.length >= 4) serverSapfor.version = data[3].replace(",", "");
}
*/

View File

@@ -1,22 +1,9 @@
package Visual_DVM_2021.Passes.All; package Visual_DVM_2021.Passes.All;
import Common.Constants;
import Common.Current;
import Common.Global;
import Common.Utils.Utils;
import GlobalData.Machine.Machine;
import GlobalData.Machine.MachineType;
import GlobalData.RemoteFile.RemoteFile;
import GlobalData.User.User;
import ProjectData.LanguageName;
import Repository.Server.ServerCode; import Repository.Server.ServerCode;
import Repository.Server.ServerExchangeUnit_2021; import Repository.Server.ServerExchangeUnit_2021;
import TestingSystem.SAPFOR.ServerSapfor.ServerSapfor; import TestingSystem.SAPFOR.ServerSapfor.ServerSapfor;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.SSH.ConnectionPass;
import Visual_DVM_2021.Passes.Server.TestingSystemPass; import Visual_DVM_2021.Passes.Server.TestingSystemPass;
import java.util.Date;
import java.util.Vector;
/* /*
public class InstallServerSapfor extends ConnectionPass<Object> { public class InstallServerSapfor extends ConnectionPass<Object> {
boolean result; boolean result;
@@ -99,7 +86,7 @@ public class InstallServerSapfor extends ConnectionPass<Object> {
} }
*/ */
public class InstallServerSapfor extends TestingSystemPass{ public class InstallServerSapfor extends TestingSystemPass {
boolean result; boolean result;
ServerSapfor serverSapfor; ServerSapfor serverSapfor;
String version_text; String version_text;
@@ -131,41 +118,16 @@ public class InstallServerSapfor extends TestingSystemPass{
@Override @Override
protected void ServerAction() throws Exception { protected void ServerAction() throws Exception {
Command(new ServerExchangeUnit_2021(ServerCode.InstallServerSapfor)); Command(new ServerExchangeUnit_2021(ServerCode.InstallServerSapfor));
if (response.object!=null){ if (response.object != null) {
result = true; result = true;
serverSapfor = (ServerSapfor) response.object; serverSapfor = (ServerSapfor) response.object;
} }
} }
@Override @Override
protected void performFinish() throws Exception {
super.performFinish();
new TestingSystemPass() {
@Override
public String getDescription() {
return "Рассылка выходных файлов сборки SAPFOR";
}
@Override
protected void ServerAction() throws Exception {
Vector<String> info = new Vector<>();
info.add(result ? serverSapfor.version : "?");
info.add(result ? "Успешно" : "С ошибками");
Command(new ServerExchangeUnit_2021(ServerCode.EmailSapforAssembly,
Current.getAccount().email,
info
));
}
}.Do();
}
@Override
protected boolean validate() { protected boolean validate() {
return result; return result;
} }
@Override @Override
protected void showFail() throws Exception {
Log.Writeln_("Файл [SAPFOR_F] не найден!");
}
@Override
protected void performDone() throws Exception { protected void performDone() throws Exception {
passes.get(PassCode_2021.PublishServerSapfor).Do(serverSapfor); passes.get(PassCode_2021.PublishServerSapfor).Do(serverSapfor);
} }