1
2
3
4
5
6
7 package org.sourceforge.jvb3d.Network;
8
9 import java.net.InetAddress;
10 import java.net.InetSocketAddress;
11 import java.util.logging.Level;
12 import java.util.logging.Logger;
13
14 import junit.framework.TestCase;
15
16 /***
17 * @author £ukasz Krzy¿ak
18 *
19 * TODO To change the template for this generated type comment go to Window -
20 * Preferences - Java - Code Style - Code Templates
21 */
22 public class ClientDataTest extends TestCase {
23 private static final int receiverPort = NetworkClientFacade.clientport;
24
25
26
27
28 protected void setUp() throws Exception {
29 super.setUp();
30 Logger.global.setLevel(Level.ALL);
31 NetworkServerFacadeHolder.setNetworkFacade(new TestServerFacade());
32 }
33
34
35
36
37 protected void tearDown() throws Exception {
38 super.tearDown();
39 }
40
41 public void testClientData() throws Exception {
42 NetworkReceiver receiver = new NetworkReceiver(receiverPort);
43 ReceivedPacketBuffer packetBuffer = new ReceivedPacketBuffer();
44 TestObserver observer = new TestObserver();
45 packetBuffer.addObserver(observer);
46 receiver.connectToBuffer(packetBuffer);
47 receiver.setTimeout(0);
48 receiver.start();
49
50 ClientData client = new ClientData(new InetSocketAddress("localhost",
51 receiverPort));
52 assertEquals("Niezgadzaj¹ siê adresy klienta", new InetSocketAddress(
53 "localhost", receiverPort), client.getClientAddress());
54 ConnectPacket packet = null;
55 int j = 0;
56 while ((packet = (ConnectPacket) observer.getPacket()) == null
57 && j++ < 10)
58 Thread.sleep(100);
59 assertEquals("Niepoprawne dane odebrane z ConnectPacket", packet
60 .getAvatarId(), "avatar0");
61
62 receiver.finish();
63 receiver.terminate();
64 }
65
66 public void testGetAvatarID() {
67 try {
68 ClientData client = new ClientData(new InetSocketAddress(
69 "localhost", receiverPort));
70 assertNotNull(client.getAvatarID());
71 } catch (Exception e) {
72 e.printStackTrace();
73 }
74 }
75
76 public void testValidatePacket() throws Exception {
77 ClientData client = new ClientData(new InetSocketAddress("localhost", receiverPort));
78 UpdatePacket update = new UpdatePacket();
79 update.setSeqNumber(1);
80 assertTrue("Odrzucono poprawny pakiet - SEQ 1", client
81 .validatePacket(update));
82 update.setSeqNumber(2);
83 assertTrue("Odrzucono poprawny pakiet - SEQ 2", client
84 .validatePacket(update));
85 assertFalse("Przyjêto b³êdny pakiet - SEQ 2 po SEQ 2", client
86 .validatePacket(update));
87 update.setSeqNumber(1);
88 assertFalse("Przyjêto b³êdny pakiet - SEQ 1 po SEQ 2", client
89 .validatePacket(update));
90 update.setSeqNumber(2);
91 assertFalse("Przyjêto b³êdny pakiet - SEQ 2 po SEQ 2", client
92 .validatePacket(update));
93 update.setSeqNumber(3);
94 assertTrue("Odrzucono poprawny pakiet - SEQ 3 po SEQ 2", client
95 .validatePacket(update));
96 }
97
98 public void testSendUpdate() throws Exception {
99 NetworkReceiver receiver = new NetworkReceiver(receiverPort);
100 ReceivedPacketBuffer recvBuffer = new ReceivedPacketBuffer();
101 receiver.connectToBuffer(recvBuffer);
102
103 TestObserver observer = new TestObserver();
104 recvBuffer.addObserver(observer);
105
106 ClientData clientData = new ClientData(new InetSocketAddress("localhost", receiverPort));
107 receiver.start();
108
109 clientData.sendUpdate("update".getBytes());
110 Thread.sleep(100);
111
112 UpdatePacket packet = null;
113 while ((packet = (UpdatePacket) observer.getPacket()) == null) Thread.sleep(100);
114 assertEquals("Otrzymano inne dane ni¿ wys³ano", new String(packet.getUpdateData()),
115 "update");
116 assertEquals("Nieprawid³owy numer SEQ otrzymanego pakietu", packet
117 .getSeqNumber(), 1);
118 clientData.sendUpdate("update1".getBytes());
119 clientData.sendUpdate("update2".getBytes());
120
121 while ((packet = (UpdatePacket) observer.getPacket()) == null) Thread.sleep(100);
122 assertEquals("Otrzymano inne dane ni¿ wys³ano", new String(packet.getUpdateData()),
123 "update2");
124 assertEquals("Nieprawid³owy numer SEQ otrzymanego pakietu", packet
125 .getSeqNumber(), 3);
126
127 Thread.sleep(1000);
128 try {
129 clientData.sendUpdate("update_fail".getBytes());
130 fail("Nie wykryto timeouta");
131 } catch (TimeoutException e) {
132
133 }
134 receiver.finish();
135 receiver.terminate();
136 }
137 }