проверка, что версии 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

View File

@@ -170,6 +170,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
int test_id;
switch (code) {
case EmailSapforAssembly:
/*
Print("Сообщить о сборке SAPFOR для пользователя " + request.arg);
Vector<String> assembly_info = (Vector<String>) request.object;
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);
response = new ServerExchangeUnit_2021(ServerCode.OK);
*/
break;
//------------------------------------------->>
case DownloadTest:
@@ -491,9 +493,23 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
throw new RepositoryRefuseException("Не удалось заархивировать пакет тестирования SAPFOR с ключом " + sapforPackage_id);
}
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 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");
//--
System.out.println("Синхронизация ветви DVM...");
@@ -507,9 +523,31 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
Constants.REPOSITORY_AUTHENTICATION +
" " + Constants.SAPFOR_REPOSITORY + " 1>spf_out.txt 2>spf_err.txt\n").waitFor();
//--
if (repo_bin.exists())
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...");
Utils.startScript(repoSapforHome, repoSapforHome, "build_sapfor",
@@ -517,7 +555,7 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
//--
System.out.println("DONE");
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()) {
System.out.println("assembly found!");
response = new ServerExchangeUnit_2021(ServerCode.OK);
@@ -535,18 +573,16 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
serverSapfor.languageName = LanguageName.fortran;
serverSapfor.buildDate = new Date().getTime();
response.object = serverSapfor;
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(",", "");
}
}else throw new RepositoryRefuseException("Не удалось собрать SAPFOR");
serverSapfor.version = String.valueOf(current_version);
//---
EmailSapforAssembly(current_version, true);
//---
} else {
//---
EmailSapforAssembly(current_version, false);
//---
throw new RepositoryRefuseException("Бинарный файл SAPFOR не найден!");
}
}
private void ReplaceTestCode() throws Exception {
Test test = (Test) request.object;
@@ -558,6 +594,35 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
"Не удалось прикрепить проект к тесту с id " + test.id
+ "\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(",", "");
}
*/