time for more tests
This commit is contained in:
parent
dfd646cbf5
commit
0f3f081c01
|
@ -2,7 +2,6 @@ package com.rusefi.io.tcp;
|
|||
|
||||
import com.devexperts.logging.Logging;
|
||||
import com.opensr5.ConfigurationImage;
|
||||
import com.opensr5.Logger;
|
||||
import com.rusefi.Listener;
|
||||
import com.rusefi.NamedThreadFactory;
|
||||
import com.rusefi.Timeouts;
|
||||
|
@ -48,7 +47,7 @@ public class BinaryProtocolServer implements BinaryProtocolCommands {
|
|||
public static final Function<Integer, ServerSocket> PLAIN_SOCKET_FACTORY = port -> {
|
||||
try {
|
||||
ServerSocket serverSocket = new ServerSocket(port);
|
||||
Logger.CONSOLE.info("ServerSocket " + port + " created");
|
||||
log.info("ServerSocket " + port + " created");
|
||||
return serverSocket;
|
||||
} catch (IOException e) {
|
||||
throw new IllegalStateException("Error binding server socket " + port, e);
|
||||
|
|
|
@ -30,9 +30,8 @@ import static com.rusefi.binaryprotocol.BinaryProtocol.sleep;
|
|||
*/
|
||||
public class NetworkConnector {
|
||||
private final static Logging log = Logging.getLogging(NetworkConnector.class);
|
||||
public static final int RECONNECT_DELAY = 15;
|
||||
|
||||
public static NetworkConnectorResult runNetworkConnector(String authToken, String controllerPort, int serverPortForControllers) {
|
||||
public static NetworkConnectorResult runNetworkConnector(String authToken, String controllerPort, NetworkConnectorContext context) {
|
||||
LinkManager controllerConnector = new LinkManager()
|
||||
.setCompositeLogicEnabled(false)
|
||||
.setNeedPullData(false);
|
||||
|
@ -73,9 +72,9 @@ public class NetworkConnector {
|
|||
proxyReconnectSemaphore.acquire();
|
||||
|
||||
try {
|
||||
runNetworkConnector(serverPortForControllers, controllerConnector, authToken, () -> {
|
||||
log.error("Disconnect from proxy server detected, now sleeping " + RECONNECT_DELAY + " seconds");
|
||||
sleep(RECONNECT_DELAY * Timeouts.SECOND);
|
||||
runNetworkConnector(context.serverPortForControllers(), controllerConnector, authToken, () -> {
|
||||
log.error("Disconnect from proxy server detected, now sleeping " + context.reconnectDelay() + " seconds");
|
||||
sleep(context.reconnectDelay() * Timeouts.SECOND);
|
||||
proxyReconnectSemaphore.release();
|
||||
}, oneTimeToken, controllerInfo);
|
||||
} catch (IOException e) {
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
package com.rusefi.proxy;
|
||||
|
||||
import com.rusefi.tools.online.ProxyClient;
|
||||
|
||||
public class NetworkConnectorContext {
|
||||
public int reconnectDelay() {
|
||||
return 15; // this one is seconds
|
||||
}
|
||||
|
||||
public int serverPortForControllers() {
|
||||
return ProxyClient.SERVER_PORT_FOR_CONTROLLERS;
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ import com.rusefi.io.ConnectionStateListener;
|
|||
import com.rusefi.io.LinkManager;
|
||||
import com.rusefi.io.tcp.TcpIoStream;
|
||||
import com.rusefi.proxy.NetworkConnector;
|
||||
import com.rusefi.proxy.NetworkConnectorContext;
|
||||
import com.rusefi.proxy.client.LocalApplicationProxy;
|
||||
import com.rusefi.proxy.client.LocalApplicationProxyContext;
|
||||
import com.rusefi.server.*;
|
||||
|
@ -89,9 +90,15 @@ public class FullServerTest {
|
|||
ConfigurationImage controllerImage = prepareImage(value, createIniField(Fields.CYLINDERSCOUNT));
|
||||
TestHelper.createVirtualController(controllerPort, controllerImage);
|
||||
|
||||
NetworkConnectorContext networkConnectorContext = new NetworkConnectorContext() {
|
||||
@Override
|
||||
public int serverPortForControllers() {
|
||||
return serverPortForControllers;
|
||||
}
|
||||
};
|
||||
|
||||
// start "rusEFI network connector" to connect controller with backend since in real life controller has only local serial port it does not have network
|
||||
NetworkConnector.NetworkConnectorResult networkConnectorResult = NetworkConnector.runNetworkConnector(TestHelper.TEST_TOKEN_1, TestHelper.LOCALHOST + ":" + controllerPort, serverPortForControllers);
|
||||
NetworkConnector.NetworkConnectorResult networkConnectorResult = NetworkConnector.runNetworkConnector(TestHelper.TEST_TOKEN_1, TestHelper.LOCALHOST + ":" + controllerPort, networkConnectorContext);
|
||||
ControllerInfo controllerInfo = networkConnectorResult.getControllerInfo();
|
||||
|
||||
assertTrue("controllerRegistered", controllerRegistered.await(READ_IMAGE_TIMEOUT, TimeUnit.MILLISECONDS));
|
||||
|
|
|
@ -1,10 +1,42 @@
|
|||
package com.rusefi.proxy;
|
||||
|
||||
import com.opensr5.ConfigurationImage;
|
||||
import com.rusefi.BackendTestHelper;
|
||||
import com.rusefi.TestHelper;
|
||||
import com.rusefi.config.generated.Fields;
|
||||
import com.rusefi.server.Backend;
|
||||
import org.junit.Test;
|
||||
|
||||
public class NetworkConnectorTest {
|
||||
@Test
|
||||
public void testReconnect() {
|
||||
public void testReconnect() throws InterruptedException {
|
||||
int serverPortForControllers = 7504;
|
||||
int httpPort = 7503;
|
||||
|
||||
// create virtual controller to which "rusEFI network connector" connects to
|
||||
int controllerPort = 7502;
|
||||
ConfigurationImage controllerImage = new ConfigurationImage(Fields.TOTAL_CONFIG_SIZE);
|
||||
TestHelper.createVirtualController(controllerPort, controllerImage);
|
||||
|
||||
NetworkConnectorContext connectorContext = new NetworkConnectorContext() {
|
||||
@Override
|
||||
public int reconnectDelay() {
|
||||
return 3;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int serverPortForControllers() {
|
||||
return serverPortForControllers;
|
||||
}
|
||||
};
|
||||
|
||||
// start "rusEFI network connector" to connect controller with backend since in real life controller has only local serial port it does not have network
|
||||
NetworkConnector.NetworkConnectorResult networkConnectorResult = NetworkConnector.runNetworkConnector(TestHelper.TEST_TOKEN_1, TestHelper.LOCALHOST + ":" + controllerPort, connectorContext);
|
||||
|
||||
|
||||
Backend backend = new Backend(BackendTestHelper.createTestUserResolver(), httpPort);
|
||||
// BackendTestHelper.runControllerConnectorBlocking(backend, serverPortForControllers);
|
||||
|
||||
backend.close();
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue