1 package org.apache.commons.jcs3.utils.discovery;
2
3 import java.util.ArrayList;
4
5 import org.apache.commons.jcs3.utils.discovery.UDPDiscoveryMessage.BroadcastType;
6 import org.apache.commons.jcs3.utils.serialization.StandardSerializer;
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27 import junit.framework.TestCase;
28
29
30
31
32 public class UDPDiscoverySenderUnitTest
33 extends TestCase
34 {
35
36 private static final String ADDRESS = "228.4.5.9";
37
38
39 private static final int PORT = 5556;
40
41
42 private static final String SENDING_HOST = "imaginary host address";
43
44
45 private static final int SENDING_PORT = 1;
46
47
48 private UDPDiscoveryReceiver receiver;
49
50
51 private UDPDiscoverySender sender;
52
53
54
55
56
57
58
59 @Override
60 protected void setUp()
61 throws Exception
62 {
63 super.setUp();
64
65 receiver = new UDPDiscoveryReceiver( null, null, ADDRESS, PORT );
66 receiver.setSerializer(new StandardSerializer());
67 final Thread t = new Thread( receiver );
68 t.start();
69
70 sender = new UDPDiscoverySender(null, ADDRESS, PORT, 1, new StandardSerializer());
71 }
72
73
74
75
76
77
78 @Override
79 protected void tearDown()
80 throws Exception
81 {
82 receiver.shutdown();
83 sender.close();
84 super.tearDown();
85 }
86
87
88
89
90
91
92 public void testPassiveBroadcast()
93 throws Exception
94 {
95
96 final ArrayList<String> cacheNames = new ArrayList<>();
97
98
99 sender.passiveBroadcast( SENDING_HOST, SENDING_PORT, cacheNames, 1L );
100
101
102
103 final Object obj = receiver.waitForMessage() ;
104
105 assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage );
106
107 final UDPDiscoveryMessage msg = (UDPDiscoveryMessage) obj;
108
109
110 assertEquals( "wrong port", SENDING_PORT, msg.getPort() );
111 assertEquals( "wrong message type", BroadcastType.PASSIVE, msg.getMessageType() );
112 }
113
114
115
116
117
118
119 public void testRemoveBroadcast()
120 throws Exception
121 {
122
123 final ArrayList<String> cacheNames = new ArrayList<>();
124
125
126 sender.removeBroadcast( SENDING_HOST, SENDING_PORT, cacheNames, 1L );
127
128
129
130 final Object obj = receiver.waitForMessage();
131
132 assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage );
133
134 final UDPDiscoveryMessage msg = (UDPDiscoveryMessage) obj;
135
136
137 assertEquals( "wrong port", SENDING_PORT, msg.getPort() );
138 assertEquals( "wrong message type", BroadcastType.REMOVE, msg.getMessageType() );
139 }
140
141
142
143
144
145
146 public void testRequestBroadcast()
147 throws Exception
148 {
149
150 sender.requestBroadcast();
151
152
153
154 final Object obj = receiver.waitForMessage();
155
156 assertTrue( "unexpected crap received", obj instanceof UDPDiscoveryMessage );
157
158 final UDPDiscoveryMessage msg = (UDPDiscoveryMessage) obj;
159 assertEquals( "wrong message type", BroadcastType.REQUEST, msg.getMessageType() );
160 }
161 }