переделал скачивание стандартных тестов. В дальнейшем будет полностью на сервере.
This commit is contained in:
6
.idea/workspace.xml
generated
6
.idea/workspace.xml
generated
@@ -8,9 +8,9 @@
|
||||
<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$/src/Common/UI/Windows/FormType.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/UI/Windows/FormType.java" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/SapforPackageFields.form" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/SapforPackageFields.java" beforeDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/Group/Group.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/Group/Group.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/ConvertCorrectnessTests.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ConvertCorrectnessTests.java" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
|
||||
@@ -19,9 +19,6 @@ public class Group extends riDBObject {
|
||||
@Description("DEFAULT 'fortran'")
|
||||
public LanguageName language = LanguageName.fortran;
|
||||
//--
|
||||
@Description("IGNORE")
|
||||
public LinkedHashMap<String, byte[]> testsFiles = new LinkedHashMap<>(); //транспорт.
|
||||
//--
|
||||
@Override
|
||||
public boolean isVisible() {
|
||||
return (!GroupsDBTable.filterMyOnly || Current.getAccount().email.equals(sender_address)) &&
|
||||
|
||||
@@ -3,6 +3,7 @@ import Common.Constants;
|
||||
import Common.Database.DBObject;
|
||||
import Common.Global;
|
||||
import Common.Utils.Utils;
|
||||
import GlobalData.Account.Account;
|
||||
import GlobalData.Machine.Machine;
|
||||
import GlobalData.RemoteFile.RemoteFile;
|
||||
import GlobalData.Tasks.TaskState;
|
||||
@@ -33,11 +34,13 @@ import Visual_DVM_2021.Passes.All.ZipFolderPass;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
import Visual_DVM_2021.Passes.Pass_2021;
|
||||
import javafx.util.Pair;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
import java.io.Serializable;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
@@ -211,68 +214,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
TimerOff();
|
||||
TimerOn();
|
||||
}
|
||||
//->>
|
||||
Group ConvertDirectoryToGroup(File src, LanguageName languageName, TestType testType) throws Exception {
|
||||
Group object = new Group();
|
||||
//->>
|
||||
object.description = src.getName();
|
||||
object.language = languageName;
|
||||
object.type = testType;
|
||||
//-->>
|
||||
//->>
|
||||
File[] testsFiles = src.listFiles(pathname ->
|
||||
pathname.isFile()
|
||||
&& !pathname.getName().equals("settings")
|
||||
&& !pathname.getName().equals("test-analyzer.sh")
|
||||
&& Utils.getExtension(pathname).startsWith(languageName.getDVMCompile()));
|
||||
;
|
||||
if (testsFiles != null) {
|
||||
for (File testFile : testsFiles)
|
||||
object.testsFiles.put(testFile.getName(), Utils.packFile(testFile));
|
||||
}
|
||||
//->>
|
||||
return object;
|
||||
}
|
||||
//->>
|
||||
public Vector<Group> getRepoGroupsInfo() throws Exception {
|
||||
Vector<Group> groups = new Vector<>();
|
||||
File testsSrc = Paths.get(
|
||||
Global.RepoDirectory.getAbsolutePath(),
|
||||
"dvm", "tools", "tester", "trunk", "test-suite").toFile();
|
||||
LanguageName[] supportedLanguages = new LanguageName[]{LanguageName.fortran, LanguageName.c};
|
||||
for (LanguageName languageName : supportedLanguages) {
|
||||
for (TestType testType : TestType.values()) {
|
||||
File groupsSrc = null;
|
||||
switch (testType) {
|
||||
case Correctness:
|
||||
String languageSrcName = null;
|
||||
switch (languageName) {
|
||||
case fortran:
|
||||
languageSrcName = "Fortran";
|
||||
break;
|
||||
case c:
|
||||
languageSrcName = "C";
|
||||
break;
|
||||
}
|
||||
if (languageSrcName != null) {
|
||||
groupsSrc = Paths.get(testsSrc.getAbsolutePath(), "Correctness", languageSrcName).toFile();
|
||||
File[] groupsDirs = groupsSrc.listFiles(File::isDirectory);
|
||||
if (groupsDirs != null) {
|
||||
for (File groupDir : groupsDirs)
|
||||
groups.add(ConvertDirectoryToGroup(groupDir, languageName, testType));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Performance:
|
||||
File groupDir = Paths.get(testsSrc.getAbsolutePath(), "Performance").toFile();
|
||||
groups.add(ConvertDirectoryToGroup(groupDir, languageName, testType));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
groups.sort(Comparator.comparing(o -> o.description));
|
||||
return groups;
|
||||
}
|
||||
@Override
|
||||
protected void Session() throws Exception {
|
||||
DBObject dbObject;
|
||||
@@ -417,15 +358,6 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
throw new RepositoryRefuseException("Теста с именем " + request.arg + " не существует");
|
||||
break;
|
||||
//-------------------------------------------------------------------------------------->>>>
|
||||
case RefreshDVMTests:
|
||||
Print("Синхронизировать репозиторий тестов");
|
||||
// временно отключить для отладки.
|
||||
DownloadRepository downloadRepository = new DownloadRepository();
|
||||
if (!downloadRepository.Do())
|
||||
throw new RepositoryRefuseException("Не удалось обновить репозиторий");
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = getRepoGroupsInfo();
|
||||
break;
|
||||
case GetAccountQueueSize:
|
||||
Print("Получить размер очереди для пользователя " + request.arg);
|
||||
SetCurrentAccountDB(request.arg);
|
||||
@@ -546,8 +478,119 @@ public class TestingServer extends RepositoryServer<TestsDatabase> {
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = sapforPackageData;
|
||||
break;
|
||||
//---
|
||||
case RefreshDVMTests:
|
||||
Print("Синхронизировать репозиторий тестов ");
|
||||
response = new ServerExchangeUnit_2021(ServerCode.OK);
|
||||
response.object = RefreshDVMTests((Account) request.object);
|
||||
break;
|
||||
//--
|
||||
default:
|
||||
throw new RepositoryRefuseException("Неподдерживаемый код: " + code);
|
||||
}
|
||||
}
|
||||
//->>
|
||||
//->>
|
||||
Pair<Group, Vector<File>> ConvertDirectoryToGroup(File src, LanguageName languageName, TestType testType, Account account) throws Exception {
|
||||
Group object = new Group();
|
||||
Vector<File> groupFiles = null; //транспорт.
|
||||
//->>
|
||||
object.description = src.getName();
|
||||
object.language = languageName;
|
||||
object.type = testType;
|
||||
object.sender_name = account.name;
|
||||
object.sender_address = account.email;
|
||||
//-->>
|
||||
File[] files = src.listFiles(pathname ->
|
||||
pathname.isFile()
|
||||
&& !pathname.getName().equals("settings")
|
||||
&& !pathname.getName().equals("test-analyzer.sh")
|
||||
&& Utils.getExtension(pathname).startsWith(languageName.getDVMCompile()));
|
||||
;
|
||||
if (files != null) {
|
||||
groupFiles = new Vector<>(Arrays.asList(files));
|
||||
groupFiles.sort(Comparator.comparing(File::getName));
|
||||
}
|
||||
//->>
|
||||
return new Pair<>(object, groupFiles);
|
||||
}
|
||||
public LinkedHashMap<Group, Vector<Test>> RefreshDVMTests(Account account) throws Exception {
|
||||
DownloadRepository downloadRepository = new DownloadRepository();
|
||||
if (!downloadRepository.Do())
|
||||
throw new RepositoryRefuseException("Не удалось обновить репозиторий");
|
||||
//-->>
|
||||
Vector<Pair<Group, Vector<File>>> groups = new Vector<>();
|
||||
LinkedHashMap<Group, Vector<Test>> res = new LinkedHashMap<>();
|
||||
File testsSrc = Paths.get(
|
||||
Global.RepoDirectory.getAbsolutePath(),
|
||||
"dvm", "tools", "tester", "trunk", "test-suite").toFile();
|
||||
LanguageName[] supportedLanguages = new LanguageName[]{LanguageName.fortran, LanguageName.c};
|
||||
for (LanguageName languageName : supportedLanguages) {
|
||||
for (TestType testType : TestType.values()) {
|
||||
File groupsSrc = null;
|
||||
switch (testType) {
|
||||
case Correctness:
|
||||
String languageSrcName = null;
|
||||
switch (languageName) {
|
||||
case fortran:
|
||||
languageSrcName = "Fortran";
|
||||
break;
|
||||
case c:
|
||||
languageSrcName = "C";
|
||||
break;
|
||||
}
|
||||
if (languageSrcName != null) {
|
||||
groupsSrc = Paths.get(testsSrc.getAbsolutePath(), "Correctness", languageSrcName).toFile();
|
||||
File[] groupsDirs = groupsSrc.listFiles(File::isDirectory);
|
||||
if (groupsDirs != null) {
|
||||
for (File groupDir : groupsDirs)
|
||||
groups.add(ConvertDirectoryToGroup(groupDir, languageName, testType, account));
|
||||
}
|
||||
}
|
||||
break;
|
||||
case Performance:
|
||||
File groupDir = Paths.get(testsSrc.getAbsolutePath(), "Performance").toFile();
|
||||
groups.add(ConvertDirectoryToGroup(groupDir, languageName, testType, account));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
groups.sort(Comparator.comparing(o -> o.getKey().description));
|
||||
//-теперь создать тесты.
|
||||
System.out.println("найдено " + groups.size() + " групп");
|
||||
//--
|
||||
for (Pair<Group, Vector<File>> p : groups) {
|
||||
Group group = p.getKey();
|
||||
//-
|
||||
db.Insert(group);
|
||||
Vector<Test> testsIds = new Vector<>();
|
||||
res.put(group, testsIds);
|
||||
//-
|
||||
Vector<File> files = p.getValue();
|
||||
if (!files.isEmpty()) {
|
||||
//->>
|
||||
for (File file : files) {
|
||||
System.out.println("Создание теста " + file.getName());
|
||||
Test test = new Test();
|
||||
test.description = Utils.getNameWithoutExtension(file.getName()) + "_" + group.language.getDVMCompile();
|
||||
test.sender_name = account.name;
|
||||
test.sender_address = account.email;
|
||||
test.group_id = group.id;
|
||||
db.Insert(test);
|
||||
testsIds.add(test);
|
||||
//->>
|
||||
File testProject = new File(Global.TempDirectory, String.valueOf(test.id));
|
||||
Utils.CheckAndCleanDirectory(testProject);
|
||||
File testFile = Paths.get(testProject.getAbsolutePath(), file.getName()).toFile();
|
||||
FileUtils.copyFile(file, testFile);
|
||||
//----
|
||||
//архивация.
|
||||
File archive = test.getArchive();
|
||||
ZipFolderPass zip = new ZipFolderPass();
|
||||
zip.Do(testProject.getAbsolutePath(), archive.getAbsolutePath());
|
||||
}
|
||||
}
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,19 +3,17 @@ import Common.Current;
|
||||
import Common.Global;
|
||||
import Common.UI.UI;
|
||||
import Common.Utils.Utils;
|
||||
import ProjectData.Files.DBProjectFile;
|
||||
import ProjectData.Project.db_project_info;
|
||||
import Repository.Server.ServerCode;
|
||||
import Repository.Server.ServerExchangeUnit_2021;
|
||||
import TestingSystem.Common.Group.Group;
|
||||
import TestingSystem.Common.Test.Test;
|
||||
import Visual_DVM_2021.Passes.PassCode_2021;
|
||||
import Visual_DVM_2021.Passes.PassException;
|
||||
import Visual_DVM_2021.Passes.Server.TestingSystemPass;
|
||||
import org.apache.commons.io.FileUtils;
|
||||
|
||||
import java.io.File;
|
||||
import java.nio.file.Paths;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Vector;
|
||||
public class ConvertCorrectnessTests extends TestingSystemPass<File> {
|
||||
@Override
|
||||
@@ -49,67 +47,36 @@ public class ConvertCorrectnessTests extends TestingSystemPass<File> {
|
||||
}
|
||||
@Override
|
||||
protected void ServerAction() throws Exception {
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.RefreshDVMTests));
|
||||
Vector<Group> groups = (Vector<Group>) response.object;
|
||||
System.out.println("найдено " + groups.size() + " групп");
|
||||
Test test = null;
|
||||
Vector<Test> tests = null;
|
||||
for (Group group : groups) {
|
||||
ShowMessage1("Создание группы " + group.description);
|
||||
tests = new Vector<>();
|
||||
// group.genName();
|
||||
group.sender_name = Current.getAccount().name;
|
||||
group.sender_address = Current.getAccount().email;
|
||||
//->>
|
||||
//->>
|
||||
for (String testFileName : group.testsFiles.keySet()) {
|
||||
ShowMessage2("Создание теста " + testFileName);
|
||||
test = new Test();
|
||||
// test.genName();
|
||||
test.description = Utils.getNameWithoutExtension(testFileName) + "_" + group.language.getDVMCompile();
|
||||
test.sender_name = Current.getAccount().name;
|
||||
test.sender_address = Current.getAccount().email;
|
||||
test.group_id = group.id;
|
||||
//->>
|
||||
File testProject = Paths.get(Global.TempDirectory.getAbsolutePath(), String.valueOf(test.id)).toFile();
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.RefreshDVMTests, "", Current.getAccount()));
|
||||
LinkedHashMap<Group, Vector<Test>> ids = (LinkedHashMap<Group, Vector<Test>>) response.object;
|
||||
ShowMessage1("Определение размерности тестов");
|
||||
for (Group group : ids.keySet()) {
|
||||
Vector<Test> tests = ids.get(group);
|
||||
for (Test test : tests) {
|
||||
ShowMessage2(group.description+" : "+test.description);
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.DownloadTest, String.valueOf(test.id)));
|
||||
File testArchive = Utils.getTempFileName(String.valueOf(test));
|
||||
response.Unpack(testArchive);
|
||||
File testProject = new File(Global.TempDirectory, String.valueOf(test.id));
|
||||
Utils.forceDeleteWithCheck(testProject);
|
||||
FileUtils.forceMkdir(testProject);
|
||||
File testFile = Paths.get(testProject.getAbsolutePath(), testFileName).toFile();
|
||||
Utils.unpackFile(group.testsFiles.get(testFileName), testFile);
|
||||
//----
|
||||
DBProjectFile testDBProjectFile = new DBProjectFile();
|
||||
testDBProjectFile.name = testFile.getName();
|
||||
testDBProjectFile.file = testFile;
|
||||
testDBProjectFile.AutoDetectProperties();
|
||||
//---
|
||||
passes.get(PassCode_2021.UnzipFolderPass).Do(testArchive.getAbsolutePath(), Global.TempDirectory.getAbsolutePath());
|
||||
//без создания бд!!
|
||||
db_project_info vizTestProject = new db_project_info(testProject, "", false);
|
||||
switch (group.language) {
|
||||
case fortran:
|
||||
test.dim = Current.getSapfor().getTextMaxDim(testFile, vizTestProject);
|
||||
break;
|
||||
case c:
|
||||
test.dim = Utils.getCTestMaxDim(testFile);
|
||||
break;
|
||||
}
|
||||
//-
|
||||
//архивация.
|
||||
File archive = Utils.getTempFileName("test_archive");
|
||||
if (passes.get(PassCode_2021.ZipFolderPass).Do(vizTestProject.Home.getAbsolutePath(), archive.getAbsolutePath())) {
|
||||
// test.project_archive_bytes = Utils.packFile(archive);
|
||||
if (test.dim >= 0)
|
||||
tests.add(test);
|
||||
else UI.Info("для теста " + testFileName + " не удалось определить размерность");
|
||||
} else throw new PassException("Не удалось заархивировать тест");
|
||||
}
|
||||
//->>
|
||||
if (!tests.isEmpty()) {
|
||||
ShowMessage1("Публикация группы " + group.description);
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.PublishObject, "", group));
|
||||
for (Test test1 : tests) {
|
||||
ShowMessage2("Публикация теста " + test1.description);
|
||||
Command(new ServerExchangeUnit_2021(ServerCode.PublishObject, "", test1));
|
||||
File[] files = testProject.listFiles();
|
||||
if (files != null && files.length > 0) {
|
||||
db_project_info vizTestProject = new db_project_info(testProject, "", false);
|
||||
switch (group.language) {
|
||||
case fortran:
|
||||
test.dim = Current.getSapfor().getTextMaxDim(files[0], vizTestProject);
|
||||
System.out.println(test.dim);
|
||||
break;
|
||||
case c:
|
||||
test.dim = Utils.getCTestMaxDim(files[0]);
|
||||
System.out.println(test.dim);
|
||||
break;
|
||||
}
|
||||
}
|
||||
EditObject(test);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -119,3 +86,4 @@ public class ConvertCorrectnessTests extends TestingSystemPass<File> {
|
||||
passes.get(PassCode_2021.SynchronizeTests).Do();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user