Made discovery more reliable & added docs/tests

- Added unit tests
- Added documentation for discovery classes
- Improved error handling

Tags: #story[1281]
This commit is contained in:
Michael Rausch
2017-09-22 00:01:13 +12:00
parent 95ad7a4840
commit 5e3ae40d03
15 changed files with 360 additions and 155 deletions
@@ -0,0 +1,57 @@
package seng302.serverDiscovery;
import org.junit.BeforeClass;
import org.junit.Test;
import seng302.discoveryServer.util.ServerListing;
import seng302.discoveryServer.util.ServerTable;
import java.util.Objects;
import static org.junit.Assert.assertTrue;
public class ServerTableTest {
private static ServerTable serverTable;
@BeforeClass
public static void setup(){
serverTable = new ServerTable();
}
@Test
public void testAddServer(){
ServerListing listing = new ServerListing("", "", "", 12, 12);
serverTable.addServer(listing);
assertTrue(serverTable.getAllServers().contains(listing));
}
@Test
public void testGetNextRoomCodeIsUnique(){
assertTrue(!Objects.equals(serverTable.getNextRoomCode(), serverTable.getNextRoomCode()));
}
@Test
public void testGetServerRoomCode(){
ServerListing listing = new ServerListing("123", "", "", 12, 12);
listing.setRoomCode(serverTable.getNextRoomCode().toString());
serverTable.addServer(listing);
ServerListing result = serverTable.getServerByRoomCode(listing.getRoomCode());
assertTrue(result.equals(listing));
}
@Test
public void testServersRemovedOnExpiry() throws InterruptedException {
ServerListing listing = new ServerListing("432", "221", "", 12, 12);
listing.setTtl(1);
serverTable.addServer(listing);
listing.decrementTtl();
Thread.sleep(1000);
assertTrue(!serverTable.getAllServers().contains(listing));
}
}
@@ -0,0 +1,31 @@
package seng302.serverDiscovery;
import org.junit.Test;
import seng302.gameServer.messages.Message;
import seng302.gameServer.messages.RoomCodeRequest;
import seng302.model.stream.packets.PacketType;
import seng302.discoveryServer.util.ServerRepoStreamParser;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import static org.junit.Assert.assertTrue;
public class testStreamParser {
private static ServerRepoStreamParser parser;
private static InputStream inputStream;
private static void setupWithByteArray(byte[] bytes){
inputStream = new ByteArrayInputStream(bytes);
parser = new ServerRepoStreamParser(inputStream);
}
@Test
public void testParseRoomCodeRequest() throws Exception {
Message roomCodeMsg = new RoomCodeRequest("1234");
setupWithByteArray(roomCodeMsg.getBuffer());
assertTrue(parser.parse() == PacketType.ROOM_CODE_REQUEST);
assertTrue(parser.getRoomCode().equals("1234"));
}
}