package io.vivarium.server;
import static org.mockito.Mockito.mock;
import org.java_websocket.WebSocket;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import com.johnuckele.vtest.Tester;
import io.vivarium.test.FastTest;
import io.vivarium.test.UnitTest;
import io.vivarium.util.UUID;
public class ClientConnectionManagerTest
{
@Test
@Category({ FastTest.class, UnitTest.class })
public void testRegisterWorker()
{
// Create CCM
ClientConnectionFactory factory = new ClientConnectionFactory();
ClientConnectionManager manager = new ClientConnectionManager(factory);
// Register a worker
UUID workerID = UUID.randomUUID();
WebSocket workerSocket = mock(WebSocket.class);
manager.registerWorker(workerID, workerSocket);
// Get the worker socket
ClientConnection fetchedConnection = manager.getConnectionForWorker(workerID);
Tester.isTrue("original socket and fetched socket are the same",
workerSocket == fetchedConnection.getWebSocket().get());
// Register a second worker
UUID workerID2 = UUID.randomUUID();
WebSocket workerSocket2 = mock(WebSocket.class);
manager.registerWorker(workerID2, workerSocket2);
// Get the second worker socket
ClientConnection fetchedConnection2 = manager.getConnectionForWorker(workerID2);
Tester.isFalse("Fetched sockets from different workers are not the same",
fetchedConnection.getWebSocket().get() == fetchedConnection2.getWebSocket().get());
}
}