@Test
    public void testSetSocketTimeout() {
        LOGGER.log(Level.INFO, "----- STARTING TEST testSetSocketTimeout -----");
        String client_hash = "";
        String client_hash2 = "";
        String client_hash3 = "";
        try {
            client_hash = server2.addSocket("127.0.0.1", port);
        } catch (IOException | TimeoutException e) {
            exception = true;
        }
        waitSocketThreadAddNotEmpty(server2);
        waitSocketThreadState(server2, client_hash, SocketThread.CONFIRMED);
        try {
            server2.setSocketTimeout(100);
        } catch (InvalidArgumentException | SocketException e) {
            exception = true;
        }
        try {
            client_hash2 = server2.addSocket("127.0.0.1", port);
        } catch (IOException | TimeoutException e) {
            exception = true;
        }
        waitSocketThreadState(server2, client_hash2, SocketThread.CONFIRMED);
        try {
            server2.setUseSocketTimeout(true);
        } catch (SocketException e) {
            exception = true;
        }
        try {
            client_hash3 = server2.addSocket("127.0.0.1", port);
        } catch (IOException | TimeoutException e) {
            exception = true;
        }
        waitSocketThreadState(server2, client_hash3, SocketThread.CONFIRMED);
        Assert.assertFalse(exception, "Exception found");
        Assert.assertEquals(server2.getSocketTimeout(), 100, "Socket timeout value not changed on server");
        Assert.assertEquals(server2.getSocketList().get(client_hash).getSocketTimeout(), 100, "Socket timeout value not changed on first SocketThread");
        Assert.assertEquals(server2.getSocketList().get(client_hash2).getSocketTimeout(), 100, "Socket timeout value not changed on second SocketThread");
        Assert.assertEquals(server2.getSocketList().get(client_hash3).getSocketTimeout(), 100, "Socket timeout value not changed on third SocketThread");
        LOGGER.log(Level.INFO, "----- TEST testSetSocketTimeout COMPLETED -----");
    }