промежуточный. добавление кнопки публикации тестового сервера. она выполняет остановку сервера, замену его на текущий файл jar, и запускает заново

This commit is contained in:
2024-03-29 00:07:04 +03:00
parent cad6ea8d3b
commit a5ffce7c08
9 changed files with 104 additions and 28 deletions

12
.idea/workspace.xml generated
View File

@@ -7,11 +7,15 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment=""> <list default="true" id="e42177c3-2328-4b27-8a01-35779b2beb99" name="Default Changelist" comment="">
<change afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/PublishTestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/properties" beforeDir="false" afterPath="$PROJECT_DIR$/properties" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Common/Constants.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Common/Constants.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/GlobalData/Tasks/Supervisor/Remote/RemoteCompilationSupervisor.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/GlobalData/Tasks/Supervisor/Remote/RemoteCompilationSupervisor.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingBar.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingBar.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/Common/TestingPlanner.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ShutdownTestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/ShutdownTestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/TestingSystem/DVM/UserConnection.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/TestingSystem/DVM/UserConnection.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTestingServer.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/All/StartTestingServer.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/PassCode_2021.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SSH/TestingServerSSHPass.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/Passes/SSH/RepositoryServerSSHPass.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/CallbackForm.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/Visual_DVM_2021/UI/Main/CallbackForm.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

@@ -9,7 +9,6 @@ public class Constants {
public static final int Nan = -1; public static final int Nan = -1;
public static final int planner_version = 3; public static final int planner_version = 3;
//-- //--
public static final String testingSystemHomeName = "_testing_system";
//SVN //SVN
public static final String REPOSITORY_AUTHENTICATION = "--username dvmhuser --password dvmh2013 --non-interactive"; public static final String REPOSITORY_AUTHENTICATION = "--username dvmhuser --password dvmh2013 --non-interactive";
public static final String DVM_REPOSITORY = "http://svn.dvm-system.org/svn/dvmhrepo/dvm"; public static final String DVM_REPOSITORY = "http://svn.dvm-system.org/svn/dvmhrepo/dvm";

View File

@@ -85,7 +85,7 @@ public class TestingBar extends VisualiserMenuBar {
}); });
addSeparator(); addSeparator();
serverAdminLabel = addLabel(" управление сервером "); serverAdminLabel = addLabel(" управление сервером ");
addPasses(PassCode_2021.StartTestingServer, PassCode_2021.ShutdownTestingServer); addPasses(PassCode_2021.StartTestingServer, PassCode_2021.ShutdownTestingServer, PassCode_2021.PublishTestingServer);
} }
public void ShowAutoCheckTesting() { public void ShowAutoCheckTesting() {
autorefreshButton.setIcon(Utils.getIcon(Global.properties.AutoCheckTesting ? "/icons/Pick.png" : "/icons/NotPick.png")); autorefreshButton.setIcon(Utils.getIcon(Global.properties.AutoCheckTesting ? "/icons/Pick.png" : "/icons/NotPick.png"));

View File

@@ -0,0 +1,53 @@
package Visual_DVM_2021.Passes.All;
import Common.Global;
import Common.UI.UI;
import Common.Utils.Utils;
import GlobalData.RemoteFile.RemoteFile;
import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.PassException;
import Visual_DVM_2021.Passes.SSH.RepositoryServerSSHPass;
import java.io.File;
public class PublishTestingServer extends RepositoryServerSSHPass {
@Override
protected String getServerFileName() {
return "TestingSystem.jar";
}
@Override
protected String getServerHomeName() {
return "_testing_system";
}
@Override
public String getIconPath() {
return "/icons/Publish.png";
}
//1. остановить сервер.
//2. заменить файл сервера на компонент визуализатора. переименовать его.
//3. запустить сервер.
@Override
protected void ServerAction() throws Exception {
if (passes.get(PassCode_2021.PingTestingServer).Do(true))
ShutdownServer();
if (passes.get(PassCode_2021.PingTestingServer).Do(true)) {
throw new PassException("Не удалось остановить сервер.");
}
File src = Global.visualiser.getFile();
//-
RemoteFile dst = new RemoteFile(serverHome, getServerFileName());
user.connection.tryRM(dst);
user.connection.putSingleFile(src, dst);
//-
StartServer();
System.out.println("userHome=" + Utils.Brackets(userHome.full_name));
System.out.println("testingHome=" + Utils.Brackets(serverHome.full_name));
}
@Override
protected boolean validate() {
if (!passes.get(PassCode_2021.PingTestingServer).Do(true)) {
Log.Writeln_("Не удалось запустить сервер.");
}
return true;
}
}

View File

@@ -1,7 +1,15 @@
package Visual_DVM_2021.Passes.All; package Visual_DVM_2021.Passes.All;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.SSH.TestingServerSSHPass; import Visual_DVM_2021.Passes.SSH.RepositoryServerSSHPass;
public class ShutdownTestingServer extends TestingServerSSHPass { public class ShutdownTestingServer extends RepositoryServerSSHPass {
@Override
protected String getServerFileName() {
return "TestingSystem.jar";
}
@Override
protected String getServerHomeName() {
return "_testing_system";
}
@Override @Override
public String getIconPath() { public String getIconPath() {
return "/icons/Stop25.png"; return "/icons/Stop25.png";

View File

@@ -1,17 +1,16 @@
package Visual_DVM_2021.Passes.All; package Visual_DVM_2021.Passes.All;
import Common.Constants;
import Common.Current;
import GlobalData.RemoteFile.RemoteFile;
import Visual_DVM_2021.Passes.PassCode_2021; import Visual_DVM_2021.Passes.PassCode_2021;
import Visual_DVM_2021.Passes.SSH.TestingServerSSHPass; import Visual_DVM_2021.Passes.SSH.RepositoryServerSSHPass;
public class StartTestingServer extends RepositoryServerSSHPass {
import java.util.Date;
public class StartTestingServer extends TestingServerSSHPass {
@Override @Override
public String getIconPath() { public String getIconPath() {
return "/icons/GreenStart.png"; return "/icons/GreenStart.png";
} }
@Override @Override
protected String getServerHomeName() {
return "_testing_system";
}
@Override
protected boolean canStart(Object... args) throws Exception { protected boolean canStart(Object... args) throws Exception {
if (passes.get(PassCode_2021.PingTestingServer).Do(true)) { if (passes.get(PassCode_2021.PingTestingServer).Do(true)) {
Log.Writeln_("Сервер уже активен!"); Log.Writeln_("Сервер уже активен!");
@@ -27,4 +26,8 @@ public class StartTestingServer extends TestingServerSSHPass {
protected boolean validate() { protected boolean validate() {
return passes.get(PassCode_2021.PingTestingServer).Do(); return passes.get(PassCode_2021.PingTestingServer).Do();
} }
@Override
protected String getServerFileName() {
return "TestingSystem.jar";
}
} }

View File

@@ -327,11 +327,14 @@ public enum PassCode_2021 {
ShutdownTestingServer, ShutdownTestingServer,
StartTestingServer, StartTestingServer,
SPF_InsertImplicitNone, SPF_InsertImplicitNone,
PublishTestingServer,
; ;
public String getDescription() { public String getDescription() {
switch (this) { switch (this) {
case Undefined: case Undefined:
return "?"; return "?";
case PublishTestingServer:
return "Опубликовать тестовый сервер.";
case SPF_InsertImplicitNone: case SPF_InsertImplicitNone:
return "Вставка оператора Implicit NONE"; return "Вставка оператора Implicit NONE";
case PingTestingServer: case PingTestingServer:

View File

@@ -9,14 +9,16 @@ import GlobalData.RemoteFile.RemoteFile;
import GlobalData.User.User; import GlobalData.User.User;
import java.util.Date; import java.util.Date;
public class TestingServerSSHPass extends ConnectionPass { public abstract class RepositoryServerSSHPass extends ConnectionPass {
protected abstract String getServerFileName();
protected abstract String getServerHomeName();
@Override @Override
public String getButtonText() { public String getButtonText() {
return ""; return "";
} }
//-- //--
protected RemoteFile userHome; protected RemoteFile userHome;
protected RemoteFile testingHome; protected RemoteFile serverHome;
@Override @Override
protected boolean needsAnimation() { protected boolean needsAnimation() {
return true; return true;
@@ -24,22 +26,23 @@ public class TestingServerSSHPass extends ConnectionPass {
@Override @Override
public void Connect() throws Exception { public void Connect() throws Exception {
userHome = null; userHome = null;
testingHome = null; serverHome = null;
//-- //--
machine = new Machine("alex", Global.properties.ServerAddress, Global.properties.ServerUserSHHPort, MachineType.Server); machine = new Machine("alex", Global.properties.ServerAddress, Global.properties.ServerUserSHHPort, MachineType.Server);
user = new User(Global.properties.ServerUserName, "mprit_2011"); user = new User(Global.properties.ServerUserName, "mprit_2011");
super.Connect(); super.Connect();
//-- //--
userHome = new RemoteFile(user.connection.sftpChannel.getHome(), true); userHome = new RemoteFile(user.connection.sftpChannel.getHome(), true);
testingHome = new RemoteFile(userHome, Constants.testingSystemHomeName); serverHome = new RemoteFile(userHome, getServerHomeName());
//- //-
System.out.println("userHome=" + Utils.Brackets(userHome.full_name)); System.out.println("userHome=" + Utils.Brackets(userHome.full_name));
System.out.println("testingHome=" + Utils.Brackets(testingHome.full_name)); System.out.println("testingHome=" + Utils.Brackets(serverHome.full_name));
} }
//-- //--
protected void StartServer() throws Exception { protected void StartServer() throws Exception {
user.connection.performScript(testingHome, "nohup java -jar TestingSystem.jar &"); user.connection.performScript(serverHome, "nohup java -jar " + getServerFileName()+
RemoteFile StartLog = new RemoteFile(testingHome, Constants.STARTED + " &");
RemoteFile StartLog = new RemoteFile(serverHome, Constants.STARTED +
"_by_" + "_by_" +
Current.getAccount().email + Current.getAccount().email +
"_" + "_" +
@@ -48,9 +51,9 @@ public class TestingServerSSHPass extends ConnectionPass {
user.connection.writeToFile("+", StartLog); user.connection.writeToFile("+", StartLog);
//-- //--
RemoteFile[] files = new RemoteFile[]{ RemoteFile[] files = new RemoteFile[]{
new RemoteFile(testingHome, Constants.script), new RemoteFile(serverHome, Constants.script),
new RemoteFile(testingHome, Constants.out_file), new RemoteFile(serverHome, Constants.out_file),
new RemoteFile(testingHome, Constants.err_file) new RemoteFile(serverHome, Constants.err_file)
}; };
//- //-
for (RemoteFile file : files) { for (RemoteFile file : files) {
@@ -59,8 +62,8 @@ public class TestingServerSSHPass extends ConnectionPass {
} }
protected void ShutdownServer() throws Exception { protected void ShutdownServer() throws Exception {
//-- //--
RemoteFile INTERRUPT = new RemoteFile(testingHome, Constants.INTERRUPT); RemoteFile INTERRUPT = new RemoteFile(serverHome, Constants.INTERRUPT);
RemoteFile ABORTED = new RemoteFile(testingHome, Constants.ABORTED); RemoteFile ABORTED = new RemoteFile(serverHome, Constants.ABORTED);
//-- //--
ShowMessage1("Создание файла INTERRUPT.."); ShowMessage1("Создание файла INTERRUPT..");
user.connection.writeToFile("+", INTERRUPT); user.connection.writeToFile("+", INTERRUPT);
@@ -72,7 +75,7 @@ public class TestingServerSSHPass extends ConnectionPass {
//-- //--
ShowMessage2(""); ShowMessage2("");
ShowMessage1("Журнализация"); ShowMessage1("Журнализация");
RemoteFile AbortLog = new RemoteFile(testingHome, Constants.ABORTED + RemoteFile AbortLog = new RemoteFile(serverHome, Constants.ABORTED +
"_by_" + "_by_" +
Current.getAccount().email + Current.getAccount().email +
"_" + "_" +

View File

@@ -377,6 +377,7 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
// //
Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(false);
UI.testingBar.showServerAdminLabel(false); UI.testingBar.showServerAdminLabel(false);
} }
private void setDeveloperRights() { private void setDeveloperRights() {
@@ -391,6 +392,7 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
// //
Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false); Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(false);
Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(false);
UI.testingBar.showServerAdminLabel(false); UI.testingBar.showServerAdminLabel(false);
} }
@Override @Override
@@ -406,6 +408,7 @@ public class CallbackForm implements FormWithSplitters, CallbackWindow {
//-- //--
Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.ShutdownTestingServer).setControlsVisible(true);
Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(true); Pass_2021.passes.get(PassCode_2021.StartTestingServer).setControlsVisible(true);
Pass_2021.passes.get(PassCode_2021.PublishTestingServer).setControlsVisible(true);
UI.testingBar.showServerAdminLabel(true); UI.testingBar.showServerAdminLabel(true);
} }
@Override @Override