package ch.sla.jdbcperflogger.console.net;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import java.net.UnknownHostException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import ch.sla.jdbcperflogger.console.db.LogRepositoryUpdateJdbc;
@SuppressWarnings("null")
public class ServerLogReceiverTest {
private ServerLogReceiver receiver;
@Mock
private LogRepositoryUpdateJdbc repository;
private ObjectOutputStream oos;
private Socket clientSocket;
@Before
public void setUp() throws Exception {
receiver = new ServerLogReceiver(0, repository);
receiver.start();
receiver.waitUntilServerIsReady();
}
@After
public void teardown() throws Exception {
if (oos != null) {
oos.close();
}
if (clientSocket != null) {
clientSocket.close();
}
receiver.dispose();
}
@Test
public void testGetConnectionsCount() throws Exception {
assertEquals(0, receiver.getConnectionsCount());
connectToServer();
Thread.sleep(1000);
assertEquals(1, receiver.getConnectionsCount());
}
@Test
public void testPauseReceivingLogs() throws Exception {
assertFalse(receiver.isPaused());
receiver.pauseReceivingLogs();
assertTrue(receiver.isPaused());
receiver.resumeReceivingLogs();
assertFalse(receiver.isPaused());
}
private Socket connectToServer() throws UnknownHostException, IOException {
clientSocket = new Socket("localhost", receiver.getListenPort());
oos = new ObjectOutputStream(clientSocket.getOutputStream());
oos.writeObject(null);
return clientSocket;
}
}