package com.esir.sr.sweetsnake.server;
import junit.framework.Assert;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import com.esir.sr.sweetsnake.api.IClientCallback;
import com.esir.sr.sweetsnake.api.IServer;
import com.esir.sr.sweetsnake.exception.UnableToConnectException;
import com.esir.sr.sweetsnake.utils.ClientCallbackMock;
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath*:spring/sweetsnake-server-context-test.xml" })
public class ServerTest
{
private static final Logger log = LoggerFactory.getLogger(ServerTest.class);
private static final String player1 = "player1", player2 = "player2";
private static ClassPathXmlApplicationContext context;
private static IClientCallback client1, client2;
private static boolean runDataInitialization = true;
@Autowired
@Qualifier("sweetSnakeServiceRMI")
private IServer server;
@BeforeClass
public static void beforeClass() {
log.debug("Starting RMI server");
context = new ClassPathXmlApplicationContext("classpath*:spring/sweetsnake-server-context.xml");
}
@AfterClass
public static void afterClass() {
log.debug("Stopping RMI server");
context.close();
}
@Before
public void before() throws UnableToConnectException {
if (runDataInitialization) {
log.info("Initializing test fields");
client1 = new ClientCallbackMock(player1);
client2 = new ClientCallbackMock(player2);
server.connect(client1);
server.connect(client2);
runDataInitialization = false;
}
}
@Test
public void rmiServiceTest() {
log.debug("---------------------------- rmiServiceTest() ----------------------------");
Assert.assertNotNull("RMI Server must not be null", server);
}
@Test(expected = UnableToConnectException.class)
public void connectFailTest() throws UnableToConnectException {
log.debug("---------------------------- connectTest() ----------------------------");
server.connect(client1);
}
}