1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 package net.grinder.synchronisation.messages;
23
24 import static java.util.Arrays.asList;
25 import static net.grinder.testutility.Serializer.serialize;
26 import static org.junit.Assert.assertEquals;
27 import static org.junit.Assert.assertSame;
28 import static org.junit.Assert.fail;
29 import static org.mockito.Mockito.mock;
30
31 import java.util.HashSet;
32 import java.util.Set;
33
34 import net.grinder.common.processidentity.AgentIdentity;
35 import net.grinder.common.processidentity.WorkerIdentity;
36 import net.grinder.communication.CommunicationException;
37 import net.grinder.messages.console.AgentAddress;
38 import net.grinder.messages.console.WorkerAddress;
39 import net.grinder.synchronisation.BarrierIdentityGenerator;
40
41 import org.junit.Test;
42
43
44
45
46
47
48
49 public class TestBarrierGroupMessages {
50
51 private final BarrierIdentity.Factory m_identityFactory =
52 new BarrierIdentityGenerator(new Integer(1));
53
54 @Test public void testOpenBarrierMessage() throws Exception {
55
56 final Set<BarrierIdentity> waiters =
57 new HashSet<BarrierIdentity>(asList(m_identityFactory.next(),
58 m_identityFactory.next()));
59
60 final OpenBarrierMessage message = new OpenBarrierMessage("abc",
61 waiters);
62
63 final OpenBarrierMessage serialized = serialize(message);
64
65 assertEquals("abc", serialized.getName());
66 assertEquals(waiters, message.getWaiters());
67 }
68
69 @Test public void testAddWaiterMessage() throws Exception {
70 final BarrierIdentity identity = m_identityFactory.next();
71
72 final AddWaiterMessage message = new AddWaiterMessage("abc", identity);
73
74 final AddWaiterMessage serialized = serialize(message);
75
76 assertEquals("abc", serialized.getName());
77 assertEquals(identity, serialized.getBarrierIdentity());
78 }
79
80 @Test public void testAddressAwareMessage() throws Exception {
81
82 final WorkerIdentity identity = mock(WorkerIdentity.class);
83
84 final AddWaiterMessage message =
85 new AddWaiterMessage("abc", m_identityFactory.next());
86
87 message.setAddress(new WorkerAddress(identity));
88
89 assertSame(identity, message.getProcessIdentity());
90 }
91
92 @Test public void testAddressAwareMessageBadAddress() throws Exception {
93
94 final AddWaiterMessage message =
95 new AddWaiterMessage("abc", m_identityFactory.next());
96
97 try {
98 message.setAddress(new AgentAddress(mock(AgentIdentity.class)));
99 fail("Expected CommunicationException");
100 }
101 catch (CommunicationException e) {
102 }
103 }
104 }