1
2
3
4
5
6
7 package org.sourceforge.jvb3d.Network;
8
9 import junit.framework.TestCase;
10
11 import java.net.InetSocketAddress;
12 import java.net.SocketException;
13 import java.net.UnknownHostException;
14 import java.net.DatagramSocket;
15 import java.net.DatagramPacket;
16 import java.net.InetAddress;
17 import java.io.ByteArrayOutputStream;
18 import java.io.IOException;
19 import java.io.ObjectOutputStream;
20
21 /***
22 * @author Develop
23 *
24 * TODO To change the template for this generated type comment go to
25 * Window - Preferences - Java - Code Style - Code Templates
26 */
27 public class NetworkReceiverTest extends TestCase {
28 private ReceivedPacketBuffer packetBuffer = new ReceivedPacketBuffer();
29 private DatagramSocket recvSocket;
30 private static final int receiverPort = 2001;
31
32 public void testNetworkReceiver() {
33 NetworkReceiver receiver1 = null;
34 try {
35 receiver1 = new NetworkReceiver(55535);
36 }
37 catch(Exception e) {
38 e.printStackTrace();
39 fail("Exception - SocketException przy tworzeniu 1 socketa");
40 }
41
42 try {
43 NetworkReceiver receiver2 = new NetworkReceiver(55535);
44 fail("Utworzono dwa sockety na jednym porcie");
45 }
46 catch(Exception e) {
47 }
48 receiver1.terminate();
49 try {
50 NetworkReceiver receiver3 = new NetworkReceiver(55536);
51 receiver3.terminate();
52 }
53 catch(Exception e) {
54 fail("Exception - SocketException przy tworzeniu 2 socketa");
55 }
56 }
57
58 /***
59 * Wysy³a pakiet join na socket, i czeka a¿ zostanie odebrany
60 *
61 */
62 public void testRun() {
63 try {
64 TestObserver observer = new TestObserver();
65 NetworkReceiver receiver = new NetworkReceiver(receiverPort);
66
67 UpdatePacket sendPacket = new UpdatePacket();
68 sendPacket.setUpdateData("update".getBytes());
69
70 ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
71 ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
72 DatagramSocket sendSocket = new DatagramSocket();
73
74 objectOutputStream.writeObject(sendPacket);
75 DatagramPacket sendDatagramPacket = new DatagramPacket(byteArrayOutputStream.toByteArray(), byteArrayOutputStream.size(), InetAddress.getByName("localhost"), receiverPort);
76 packetBuffer.addObserver(observer);
77 receiver.connectToBuffer(packetBuffer);
78 receiver.start();
79 sendSocket.send(sendDatagramPacket);
80 UpdatePacket packet = null;
81 while ((packet = (UpdatePacket)observer.getPacket()) == null)
82 Thread.sleep(100);
83 receiver.finish();
84 assertEquals(new String(packet.getUpdateData()), "update");
85 }
86 catch(Exception e) {
87 fail(e.toString());
88 }
89 }
90 }