time for more tests
This commit is contained in:
parent
60c327f11f
commit
a7961de5cd
|
@ -2,4 +2,9 @@ package com.rusefi;
|
||||||
|
|
||||||
public interface Listener<T> {
|
public interface Listener<T> {
|
||||||
void onResult(T parameter);
|
void onResult(T parameter);
|
||||||
|
|
||||||
|
static <T> Listener<T> empty() {
|
||||||
|
return parameter -> {
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
package com.rusefi.io.tcp;
|
package com.rusefi.io.tcp;
|
||||||
|
|
||||||
import com.devexperts.logging.Logging;
|
import com.devexperts.logging.Logging;
|
||||||
|
import com.rusefi.Listener;
|
||||||
import com.rusefi.Timeouts;
|
import com.rusefi.Timeouts;
|
||||||
import com.rusefi.binaryprotocol.BinaryProtocol;
|
import com.rusefi.binaryprotocol.BinaryProtocol;
|
||||||
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
import com.rusefi.binaryprotocol.IncomingDataBuffer;
|
||||||
|
@ -27,7 +28,7 @@ public class BinaryProtocolProxy {
|
||||||
*/
|
*/
|
||||||
public static final int USER_IO_TIMEOUT = 10 * Timeouts.MINUTE;
|
public static final int USER_IO_TIMEOUT = 10 * Timeouts.MINUTE;
|
||||||
|
|
||||||
public static ServerHolder createProxy(IoStream targetEcuSocket, int serverProxyPort) {
|
public static ServerSocketReference createProxy(IoStream targetEcuSocket, int serverProxyPort) {
|
||||||
Function<Socket, Runnable> clientSocketRunnableFactory = clientSocket -> () -> {
|
Function<Socket, Runnable> clientSocketRunnableFactory = clientSocket -> () -> {
|
||||||
TcpIoStream clientStream = null;
|
TcpIoStream clientStream = null;
|
||||||
try {
|
try {
|
||||||
|
@ -38,7 +39,7 @@ public class BinaryProtocolProxy {
|
||||||
close(clientStream);
|
close(clientStream);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
return BinaryProtocolServer.tcpServerSocket(serverProxyPort, "proxy", clientSocketRunnableFactory, null);
|
return BinaryProtocolServer.tcpServerSocket(serverProxyPort, "proxy", clientSocketRunnableFactory, Listener.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void runProxy(IoStream targetEcu, IoStream clientStream) throws IOException {
|
public static void runProxy(IoStream targetEcu, IoStream clientStream) throws IOException {
|
||||||
|
|
|
@ -11,7 +11,6 @@ import com.rusefi.io.IoStream;
|
||||||
import com.rusefi.io.LinkManager;
|
import com.rusefi.io.LinkManager;
|
||||||
import com.rusefi.io.commands.HelloCommand;
|
import com.rusefi.io.commands.HelloCommand;
|
||||||
import com.rusefi.server.rusEFISSLContext;
|
import com.rusefi.server.rusEFISSLContext;
|
||||||
import com.rusefi.shared.FileUtil;
|
|
||||||
|
|
||||||
import java.io.*;
|
import java.io.*;
|
||||||
import java.net.ServerSocket;
|
import java.net.ServerSocket;
|
||||||
|
@ -54,7 +53,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
|
||||||
};
|
};
|
||||||
|
|
||||||
public void start(LinkManager linkManager) {
|
public void start(LinkManager linkManager) {
|
||||||
start(linkManager, DEFAULT_PROXY_PORT, null);
|
start(linkManager, DEFAULT_PROXY_PORT, Listener.empty());
|
||||||
}
|
}
|
||||||
|
|
||||||
public void start(LinkManager linkManager, int port, Listener serverSocketCreationCallback) {
|
public void start(LinkManager linkManager, int port, Listener serverSocketCreationCallback) {
|
||||||
|
@ -80,23 +79,17 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
|
||||||
* @param serverSocketCreationCallback this callback is invoked once we open the server socket
|
* @param serverSocketCreationCallback this callback is invoked once we open the server socket
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
public static ServerHolder tcpServerSocket(int port, String threadName, Function<Socket, Runnable> socketRunnableFactory, Listener serverSocketCreationCallback) {
|
public static ServerSocketReference tcpServerSocket(int port, String threadName, Function<Socket, Runnable> socketRunnableFactory, Listener serverSocketCreationCallback) {
|
||||||
return tcpServerSocket(socketRunnableFactory, port, threadName, serverSocketCreationCallback, PLAIN_SOCKET_FACTORY);
|
return tcpServerSocket(socketRunnableFactory, port, threadName, serverSocketCreationCallback, PLAIN_SOCKET_FACTORY);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static ServerHolder tcpServerSocket(Function<Socket, Runnable> clientSocketRunnableFactory, int port, String threadName, Listener serverSocketCreationCallback, Function<Integer, ServerSocket> nonSecureSocketFunction) {
|
public static ServerSocketReference tcpServerSocket(Function<Socket, Runnable> clientSocketRunnableFactory, int port, String threadName, Listener serverSocketCreationCallback, Function<Integer, ServerSocket> nonSecureSocketFunction) {
|
||||||
|
Objects.requireNonNull(serverSocketCreationCallback, "serverSocketCreationCallback");
|
||||||
ServerSocket serverSocket = nonSecureSocketFunction.apply(port);
|
ServerSocket serverSocket = nonSecureSocketFunction.apply(port);
|
||||||
|
|
||||||
ServerHolder holder = new ServerHolder() {
|
ServerSocketReference holder = new ServerSocketReference(serverSocket);
|
||||||
@Override
|
|
||||||
public void close() {
|
|
||||||
super.close();
|
|
||||||
FileUtil.close(serverSocket);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
if (serverSocketCreationCallback != null)
|
serverSocketCreationCallback.onResult(null);
|
||||||
serverSocketCreationCallback.onResult(null);
|
|
||||||
Runnable runnable = () -> {
|
Runnable runnable = () -> {
|
||||||
while (!holder.isClosed()) {
|
while (!holder.isClosed()) {
|
||||||
// Wait for a connection
|
// Wait for a connection
|
||||||
|
|
|
@ -1,15 +0,0 @@
|
||||||
package com.rusefi.io.tcp;
|
|
||||||
|
|
||||||
import java.io.Closeable;
|
|
||||||
|
|
||||||
public class ServerHolder implements Closeable {
|
|
||||||
private boolean isClosed;
|
|
||||||
|
|
||||||
public void close() {
|
|
||||||
isClosed = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isClosed() {
|
|
||||||
return isClosed;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,25 @@
|
||||||
|
package com.rusefi.io.tcp;
|
||||||
|
|
||||||
|
import com.rusefi.shared.FileUtil;
|
||||||
|
|
||||||
|
import java.io.Closeable;
|
||||||
|
import java.net.ServerSocket;
|
||||||
|
|
||||||
|
public class ServerSocketReference implements Closeable {
|
||||||
|
private final ServerSocket serverSocket;
|
||||||
|
private boolean isClosed;
|
||||||
|
|
||||||
|
public ServerSocketReference(ServerSocket serverSocket) {
|
||||||
|
this.serverSocket = serverSocket;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void close() {
|
||||||
|
isClosed = true;
|
||||||
|
FileUtil.close(serverSocket);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isClosed() {
|
||||||
|
return isClosed;
|
||||||
|
}
|
||||||
|
}
|
|
@ -4,7 +4,7 @@ import com.devexperts.logging.Logging;
|
||||||
import com.rusefi.io.IoStream;
|
import com.rusefi.io.IoStream;
|
||||||
import com.rusefi.io.commands.HelloCommand;
|
import com.rusefi.io.commands.HelloCommand;
|
||||||
import com.rusefi.io.tcp.BinaryProtocolProxy;
|
import com.rusefi.io.tcp.BinaryProtocolProxy;
|
||||||
import com.rusefi.io.tcp.ServerHolder;
|
import com.rusefi.io.tcp.ServerSocketReference;
|
||||||
import com.rusefi.io.tcp.TcpIoStream;
|
import com.rusefi.io.tcp.TcpIoStream;
|
||||||
import com.rusefi.server.ApplicationRequest;
|
import com.rusefi.server.ApplicationRequest;
|
||||||
import com.rusefi.server.rusEFISSLContext;
|
import com.rusefi.server.rusEFISSLContext;
|
||||||
|
@ -20,10 +20,10 @@ public class LocalApplicationProxy implements Closeable {
|
||||||
private static final Logging log = getLogging(LocalApplicationProxy.class);
|
private static final Logging log = getLogging(LocalApplicationProxy.class);
|
||||||
public static final int SERVER_PORT_FOR_APPLICATIONS = HttpUtil.getIntProperty("applications.port", 8002);
|
public static final int SERVER_PORT_FOR_APPLICATIONS = HttpUtil.getIntProperty("applications.port", 8002);
|
||||||
private final ApplicationRequest applicationRequest;
|
private final ApplicationRequest applicationRequest;
|
||||||
private final ServerHolder serverHolder;
|
private final ServerSocketReference serverHolder;
|
||||||
private final IoStream authenticatorToProxyStream;
|
private final IoStream authenticatorToProxyStream;
|
||||||
|
|
||||||
public LocalApplicationProxy(ApplicationRequest applicationRequest, ServerHolder serverHolder, IoStream authenticatorToProxyStream) {
|
public LocalApplicationProxy(ApplicationRequest applicationRequest, ServerSocketReference serverHolder, IoStream authenticatorToProxyStream) {
|
||||||
this.applicationRequest = applicationRequest;
|
this.applicationRequest = applicationRequest;
|
||||||
this.serverHolder = serverHolder;
|
this.serverHolder = serverHolder;
|
||||||
this.authenticatorToProxyStream = authenticatorToProxyStream;
|
this.authenticatorToProxyStream = authenticatorToProxyStream;
|
||||||
|
@ -34,6 +34,7 @@ public class LocalApplicationProxy implements Closeable {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param context
|
||||||
* @param serverPortForRemoteUsers port on which rusEFI proxy accepts authenticator connections
|
* @param serverPortForRemoteUsers port on which rusEFI proxy accepts authenticator connections
|
||||||
* @param applicationRequest remote session we want to connect to
|
* @param applicationRequest remote session we want to connect to
|
||||||
* @param localApplicationPort local port we would bind for TunerStudio to connect to
|
* @param localApplicationPort local port we would bind for TunerStudio to connect to
|
||||||
|
@ -41,8 +42,8 @@ public class LocalApplicationProxy implements Closeable {
|
||||||
* @param disconnectListener
|
* @param disconnectListener
|
||||||
* @param connectionListener
|
* @param connectionListener
|
||||||
*/
|
*/
|
||||||
public static ServerHolder startAndRun(int serverPortForRemoteUsers, ApplicationRequest applicationRequest, int localApplicationPort, int jsonHttpPort, TcpIoStream.DisconnectListener disconnectListener, ConnectionListener connectionListener) throws IOException {
|
public static ServerSocketReference startAndRun(LocalApplicationProxyContext context, int serverPortForRemoteUsers, ApplicationRequest applicationRequest, int localApplicationPort, int jsonHttpPort, TcpIoStream.DisconnectListener disconnectListener, ConnectionListener connectionListener) throws IOException {
|
||||||
String version = HttpUtil.executeGet(ProxyClient.getHttpAddress(jsonHttpPort) + ProxyClient.VERSION_PATH);
|
String version = context.executeGet(ProxyClient.getHttpAddress(jsonHttpPort) + ProxyClient.VERSION_PATH);
|
||||||
log.info("Server says version=" + version);
|
log.info("Server says version=" + version);
|
||||||
if (!version.contains(ProxyClient.BACKEND_VERSION))
|
if (!version.contains(ProxyClient.BACKEND_VERSION))
|
||||||
throw new IOException("Unexpected backend version " + version + " while we want " + ProxyClient.BACKEND_VERSION);
|
throw new IOException("Unexpected backend version " + version + " while we want " + ProxyClient.BACKEND_VERSION);
|
||||||
|
@ -50,7 +51,7 @@ public class LocalApplicationProxy implements Closeable {
|
||||||
IoStream authenticatorToProxyStream = new TcpIoStream("authenticatorToProxyStream ", rusEFISSLContext.getSSLSocket(HttpUtil.RUSEFI_PROXY_HOSTNAME, serverPortForRemoteUsers), disconnectListener);
|
IoStream authenticatorToProxyStream = new TcpIoStream("authenticatorToProxyStream ", rusEFISSLContext.getSSLSocket(HttpUtil.RUSEFI_PROXY_HOSTNAME, serverPortForRemoteUsers), disconnectListener);
|
||||||
LocalApplicationProxy.sendHello(authenticatorToProxyStream, applicationRequest);
|
LocalApplicationProxy.sendHello(authenticatorToProxyStream, applicationRequest);
|
||||||
|
|
||||||
ServerHolder serverHolder = BinaryProtocolProxy.createProxy(authenticatorToProxyStream, localApplicationPort);
|
ServerSocketReference serverHolder = BinaryProtocolProxy.createProxy(authenticatorToProxyStream, localApplicationPort);
|
||||||
LocalApplicationProxy localApplicationProxy = new LocalApplicationProxy(applicationRequest, serverHolder, authenticatorToProxyStream);
|
LocalApplicationProxy localApplicationProxy = new LocalApplicationProxy(applicationRequest, serverHolder, authenticatorToProxyStream);
|
||||||
connectionListener.onConnected(localApplicationProxy);
|
connectionListener.onConnected(localApplicationProxy);
|
||||||
return serverHolder;
|
return serverHolder;
|
||||||
|
|
|
@ -0,0 +1,7 @@
|
||||||
|
package com.rusefi.proxy.client;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public interface LocalApplicationProxyContext {
|
||||||
|
String executeGet(String url) throws IOException;
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
package com.rusefi.proxy.client;
|
||||||
|
|
||||||
|
import com.rusefi.tools.online.HttpUtil;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
|
||||||
|
public class LocalApplicationProxyContextImpl implements LocalApplicationProxyContext {
|
||||||
|
@Override
|
||||||
|
public String executeGet(String url) throws IOException {
|
||||||
|
return HttpUtil.executeGet(url);
|
||||||
|
}
|
||||||
|
}
|
|
@ -11,7 +11,7 @@ import com.rusefi.io.LinkConnector;
|
||||||
import com.rusefi.io.LinkManager;
|
import com.rusefi.io.LinkManager;
|
||||||
import com.rusefi.io.tcp.BinaryProtocolServer;
|
import com.rusefi.io.tcp.BinaryProtocolServer;
|
||||||
import com.rusefi.io.tcp.TcpIoStream;
|
import com.rusefi.io.tcp.TcpIoStream;
|
||||||
import com.rusefi.server.Backend;
|
import com.rusefi.server.ControllerInfo;
|
||||||
import com.rusefi.server.rusEFISSLContext;
|
import com.rusefi.server.rusEFISSLContext;
|
||||||
import com.rusefi.tune.xml.Constant;
|
import com.rusefi.tune.xml.Constant;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
@ -26,6 +26,9 @@ import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class TestHelper {
|
public class TestHelper {
|
||||||
public static final String LOCALHOST = "localhost";
|
public static final String LOCALHOST = "localhost";
|
||||||
|
public static final String TEST_SIGNATURE_1 = "rusEFI 2020.07.06.frankenso_na6.2468827536";
|
||||||
|
public static final String TEST_SIGNATURE_2 = "rusEFI 2020.07.11.proteus_f4.1986715563";
|
||||||
|
public static final ControllerInfo CONTROLLER_INFO = new ControllerInfo("name", "make", "code", Fields.TS_SIGNATURE);
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public static ScalarIniField createIniField(Field field) {
|
public static ScalarIniField createIniField(Field field) {
|
||||||
|
@ -81,16 +84,4 @@ public class TestHelper {
|
||||||
assertTrue(controllerCreated.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
assertTrue(controllerCreated.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
||||||
return server;
|
return server;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void runApplicationConnectorBlocking(Backend backend, int serverPortForRemoteUsers) throws InterruptedException {
|
|
||||||
CountDownLatch applicationServerCreated = new CountDownLatch(1);
|
|
||||||
backend.runApplicationConnector(serverPortForRemoteUsers, parameter -> applicationServerCreated.countDown());
|
|
||||||
assertTrue(applicationServerCreated.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void runControllerConnectorBlocking(Backend backend, int serverPortForControllers) throws InterruptedException {
|
|
||||||
CountDownLatch controllerServerCreated = new CountDownLatch(1);
|
|
||||||
backend.runControllerConnector(serverPortForControllers, parameter -> controllerServerCreated.countDown());
|
|
||||||
assertTrue(controllerServerCreated.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
package com.rusefi.proxy.client;
|
||||||
|
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
public class LocalApplicationProxyTest {
|
||||||
|
@Test
|
||||||
|
public void testLocalApplication() {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
package com.rusefi;
|
||||||
|
|
||||||
|
import com.rusefi.server.Backend;
|
||||||
|
|
||||||
|
import java.util.concurrent.CountDownLatch;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
|
import static com.rusefi.Timeouts.READ_IMAGE_TIMEOUT;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
public class BackendTestHelper {
|
||||||
|
public static void runApplicationConnectorBlocking(Backend backend, int serverPortForRemoteUsers) throws InterruptedException {
|
||||||
|
CountDownLatch applicationServerCreated = new CountDownLatch(1);
|
||||||
|
backend.runApplicationConnector(serverPortForRemoteUsers, parameter -> applicationServerCreated.countDown());
|
||||||
|
assertTrue(applicationServerCreated.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void runControllerConnectorBlocking(Backend backend, int serverPortForControllers) throws InterruptedException {
|
||||||
|
CountDownLatch controllerServerCreated = new CountDownLatch(1);
|
||||||
|
backend.runControllerConnector(serverPortForControllers, parameter -> controllerServerCreated.countDown());
|
||||||
|
assertTrue(controllerServerCreated.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
||||||
|
}
|
||||||
|
}
|
|
@ -9,6 +9,7 @@ import com.rusefi.io.LinkManager;
|
||||||
import com.rusefi.io.tcp.TcpIoStream;
|
import com.rusefi.io.tcp.TcpIoStream;
|
||||||
import com.rusefi.proxy.NetworkConnector;
|
import com.rusefi.proxy.NetworkConnector;
|
||||||
import com.rusefi.proxy.client.LocalApplicationProxy;
|
import com.rusefi.proxy.client.LocalApplicationProxy;
|
||||||
|
import com.rusefi.proxy.client.LocalApplicationProxyContextImpl;
|
||||||
import com.rusefi.server.*;
|
import com.rusefi.server.*;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
@ -63,8 +64,8 @@ public class FullServerTest {
|
||||||
|
|
||||||
|
|
||||||
// first start backend server
|
// first start backend server
|
||||||
TestHelper.runControllerConnectorBlocking(backend, serverPortForControllers);
|
BackendTestHelper.runControllerConnectorBlocking(backend, serverPortForControllers);
|
||||||
TestHelper.runApplicationConnectorBlocking(backend, serverPortForRemoteUsers);
|
BackendTestHelper.runApplicationConnectorBlocking(backend, serverPortForRemoteUsers);
|
||||||
|
|
||||||
// create virtual controller to which "rusEFI network connector" connects to
|
// create virtual controller to which "rusEFI network connector" connects to
|
||||||
int controllerPort = 7002;
|
int controllerPort = 7002;
|
||||||
|
@ -83,7 +84,7 @@ public class FullServerTest {
|
||||||
|
|
||||||
// start authenticator
|
// start authenticator
|
||||||
int authenticatorPort = 7004; // local port on which authenticator accepts connections from Tuner Studio
|
int authenticatorPort = 7004; // local port on which authenticator accepts connections from Tuner Studio
|
||||||
LocalApplicationProxy.startAndRun(serverPortForRemoteUsers, applicationRequest, authenticatorPort, httpPort,
|
LocalApplicationProxy.startAndRun(new LocalApplicationProxyContextImpl(), serverPortForRemoteUsers, applicationRequest, authenticatorPort, httpPort,
|
||||||
TcpIoStream.DisconnectListener.VOID,
|
TcpIoStream.DisconnectListener.VOID,
|
||||||
LocalApplicationProxy.ConnectionListener.VOID);
|
LocalApplicationProxy.ConnectionListener.VOID);
|
||||||
|
|
||||||
|
|
|
@ -80,8 +80,8 @@ public class ServerTest {
|
||||||
assertEquals(0, backend.getControllersCount());
|
assertEquals(0, backend.getControllersCount());
|
||||||
|
|
||||||
|
|
||||||
new MockRusEfiDevice(MockRusEfiDevice.TEST_TOKEN_1, "rusEFI 2020.07.06.frankenso_na6.2468827536", logger).connect(serverPortForControllers);
|
new MockRusEfiDevice(MockRusEfiDevice.TEST_TOKEN_1, TestHelper.TEST_SIGNATURE_1, logger).connect(serverPortForControllers);
|
||||||
new MockRusEfiDevice("12345678-1234-1234-1234-123456789012", "rusEFI 2020.07.11.proteus_f4.1986715563", logger).connect(serverPortForControllers);
|
new MockRusEfiDevice("12345678-1234-1234-1234-123456789012", TestHelper.TEST_SIGNATURE_2, logger).connect(serverPortForControllers);
|
||||||
|
|
||||||
assertTrue("onConnected", onConnected.await(30, TimeUnit.SECONDS));
|
assertTrue("onConnected", onConnected.await(30, TimeUnit.SECONDS));
|
||||||
|
|
||||||
|
@ -152,7 +152,7 @@ covered by FullServerTest
|
||||||
}
|
}
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
TestHelper.runApplicationConnectorBlocking(backend, serverPortForRemoteUsers);
|
BackendTestHelper.runApplicationConnectorBlocking(backend, serverPortForRemoteUsers);
|
||||||
|
|
||||||
// start authenticator
|
// start authenticator
|
||||||
IoStream authenticatorToProxyStream = TestHelper.secureConnectToLocalhost(serverPortForRemoteUsers, logger);
|
IoStream authenticatorToProxyStream = TestHelper.secureConnectToLocalhost(serverPortForRemoteUsers, logger);
|
||||||
|
@ -183,7 +183,7 @@ covered by FullServerTest
|
||||||
}
|
}
|
||||||
}) {
|
}) {
|
||||||
|
|
||||||
TestHelper.runApplicationConnectorBlocking(backend, serverPortForRemoteUsers);
|
BackendTestHelper.runApplicationConnectorBlocking(backend, serverPortForRemoteUsers);
|
||||||
|
|
||||||
SessionDetails sessionDetails = MockRusEfiDevice.createTestSession(MockRusEfiDevice.TEST_TOKEN_1, Fields.TS_SIGNATURE);
|
SessionDetails sessionDetails = MockRusEfiDevice.createTestSession(MockRusEfiDevice.TEST_TOKEN_1, Fields.TS_SIGNATURE);
|
||||||
ApplicationRequest applicationRequest = new ApplicationRequest(sessionDetails, createTestUserResolver().apply(MockRusEfiDevice.TEST_TOKEN_1));
|
ApplicationRequest applicationRequest = new ApplicationRequest(sessionDetails, createTestUserResolver().apply(MockRusEfiDevice.TEST_TOKEN_1));
|
||||||
|
|
|
@ -1,14 +1,15 @@
|
||||||
package com.rusefi.server;
|
package com.rusefi.server;
|
||||||
|
|
||||||
|
import com.rusefi.TestHelper;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
public class SessionDetailsTest {
|
public class SessionDetailsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testSerialization() {
|
public void testSerialization() {
|
||||||
ControllerInfo ci = new ControllerInfo("name", "make", "code", "sign");
|
SessionDetails sd = new SessionDetails(TestHelper.CONTROLLER_INFO, "auth", 123);
|
||||||
SessionDetails sd = new SessionDetails(ci, "auth", 123);
|
|
||||||
|
|
||||||
String json = sd.toJson();
|
String json = sd.toJson();
|
||||||
SessionDetails fromJson = SessionDetails.valueOf(json);
|
SessionDetails fromJson = SessionDetails.valueOf(json);
|
||||||
|
@ -17,8 +18,7 @@ public class SessionDetailsTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testApplicationRequest() {
|
public void testApplicationRequest() {
|
||||||
ControllerInfo ci = new ControllerInfo("name", "make", "code", "sign");
|
SessionDetails sd = new SessionDetails(TestHelper.CONTROLLER_INFO, "auth", 123);
|
||||||
SessionDetails sd = new SessionDetails(ci, "auth", 123);
|
|
||||||
ApplicationRequest ar = new ApplicationRequest(sd, new UserDetails("", 321));
|
ApplicationRequest ar = new ApplicationRequest(sd, new UserDetails("", 321));
|
||||||
|
|
||||||
String json = ar.toJson();
|
String json = ar.toJson();
|
||||||
|
|
|
@ -3,9 +3,10 @@ package com.rusefi.ts_plugin;
|
||||||
import com.rusefi.NamedThreadFactory;
|
import com.rusefi.NamedThreadFactory;
|
||||||
import com.rusefi.SignatureHelper;
|
import com.rusefi.SignatureHelper;
|
||||||
import com.rusefi.autoupdate.AutoupdateUtil;
|
import com.rusefi.autoupdate.AutoupdateUtil;
|
||||||
import com.rusefi.io.tcp.ServerHolder;
|
import com.rusefi.io.tcp.ServerSocketReference;
|
||||||
import com.rusefi.io.tcp.TcpIoStream;
|
import com.rusefi.io.tcp.TcpIoStream;
|
||||||
import com.rusefi.proxy.client.LocalApplicationProxy;
|
import com.rusefi.proxy.client.LocalApplicationProxy;
|
||||||
|
import com.rusefi.proxy.client.LocalApplicationProxyContextImpl;
|
||||||
import com.rusefi.server.ApplicationRequest;
|
import com.rusefi.server.ApplicationRequest;
|
||||||
import com.rusefi.server.ControllerInfo;
|
import com.rusefi.server.ControllerInfo;
|
||||||
import com.rusefi.server.SessionDetails;
|
import com.rusefi.server.SessionDetails;
|
||||||
|
@ -211,17 +212,18 @@ public class RemoteTab {
|
||||||
ApplicationRequest applicationRequest = new ApplicationRequest(sessionDetails, publicSession.getUserDetails());
|
ApplicationRequest applicationRequest = new ApplicationRequest(sessionDetails, publicSession.getUserDetails());
|
||||||
|
|
||||||
try {
|
try {
|
||||||
AtomicReference<ServerHolder> serverHolderAtomicReference = new AtomicReference<>();
|
AtomicReference<ServerSocketReference> serverHolderAtomicReference = new AtomicReference<>();
|
||||||
|
|
||||||
TcpIoStream.DisconnectListener disconnectListener = () -> SwingUtilities.invokeLater(() -> {
|
TcpIoStream.DisconnectListener disconnectListener = () -> SwingUtilities.invokeLater(() -> {
|
||||||
setStatus("Disconnected");
|
setStatus("Disconnected");
|
||||||
RemoteTabController.INSTANCE.setState(RemoteTabController.State.NOT_CONNECTED);
|
RemoteTabController.INSTANCE.setState(RemoteTabController.State.NOT_CONNECTED);
|
||||||
ServerHolder serverHolder = serverHolderAtomicReference.get();
|
ServerSocketReference serverHolder = serverHolderAtomicReference.get();
|
||||||
if (serverHolder != null)
|
if (serverHolder != null)
|
||||||
serverHolder.close();
|
serverHolder.close();
|
||||||
});
|
});
|
||||||
|
|
||||||
ServerHolder serverHolder = LocalApplicationProxy.startAndRun(
|
ServerSocketReference serverHolder = LocalApplicationProxy.startAndRun(
|
||||||
|
new LocalApplicationProxyContextImpl(),
|
||||||
LocalApplicationProxy.SERVER_PORT_FOR_APPLICATIONS,
|
LocalApplicationProxy.SERVER_PORT_FOR_APPLICATIONS,
|
||||||
applicationRequest,
|
applicationRequest,
|
||||||
Integer.parseInt(getLocalPort()),
|
Integer.parseInt(getLocalPort()),
|
||||||
|
|
Loading…
Reference in New Issue