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.console.communication.server;
23
24 import net.grinder.common.GrinderProperties;
25 import net.grinder.communication.BlockingSender;
26 import net.grinder.communication.BlockingSenderWrapper;
27 import net.grinder.communication.MessageDispatchSender;
28 import net.grinder.console.communication.ProcessControl;
29 import net.grinder.console.communication.server.messages.GetNumberOfAgentsMessage;
30 import net.grinder.console.communication.server.messages.ResetRecordingMessage;
31 import net.grinder.console.communication.server.messages.ResetWorkerProcessesMessage;
32 import net.grinder.console.communication.server.messages.ResultMessage;
33 import net.grinder.console.communication.server.messages.StartRecordingMessage;
34 import net.grinder.console.communication.server.messages.StartWorkerProcessesMessage;
35 import net.grinder.console.communication.server.messages.StopAgentAndWorkerProcessesMessage;
36 import net.grinder.console.communication.server.messages.StopRecordingMessage;
37 import net.grinder.console.communication.server.messages.SuccessMessage;
38 import net.grinder.console.model.SampleModel;
39 import net.grinder.console.model.SampleModelViews;
40 import net.grinder.testutility.RandomStubFactory;
41 import junit.framework.TestCase;
42
43
44
45
46
47
48
49 public class TestDispatchClientCommands extends TestCase {
50
51 public void testRegisterMessageHandlers() throws Exception {
52
53 final RandomStubFactory<SampleModel> modelStubFactory =
54 RandomStubFactory.create(SampleModel.class);
55
56 final RandomStubFactory<SampleModelViews> sampleModelViewsStubFactory =
57 RandomStubFactory.create(SampleModelViews.class);
58
59 final RandomStubFactory<ProcessControl> processControlStubFactory =
60 RandomStubFactory.create(ProcessControl.class);
61
62 final DispatchClientCommands dispatchClientCommands =
63 new DispatchClientCommands(modelStubFactory.getStub(),
64 sampleModelViewsStubFactory.getStub(),
65 processControlStubFactory.getStub());
66
67 final MessageDispatchSender messageDispatcher = new MessageDispatchSender();
68
69 dispatchClientCommands.registerMessageHandlers(messageDispatcher);
70
71 final BlockingSender blockingSender =
72 new BlockingSenderWrapper(messageDispatcher);
73
74 assertTrue(blockingSender.blockingSend(new ResetRecordingMessage())
75 instanceof SuccessMessage);
76
77 modelStubFactory.assertSuccess("reset");
78 modelStubFactory.assertNoMoreCalls();
79
80 sampleModelViewsStubFactory.assertSuccess("resetStatisticsViews");
81 sampleModelViewsStubFactory.assertNoMoreCalls();
82
83 assertTrue(blockingSender.blockingSend(new StopRecordingMessage())
84 instanceof SuccessMessage);
85
86 assertTrue(blockingSender.blockingSend(new StartRecordingMessage())
87 instanceof SuccessMessage);
88
89 modelStubFactory.assertSuccess("stop");
90 modelStubFactory.assertSuccess("start");
91 modelStubFactory.assertNoMoreCalls();
92
93 processControlStubFactory.setResult(
94 "getNumberOfLiveAgents", new Integer(3));
95 final ResultMessage message =
96 (ResultMessage)blockingSender.blockingSend(
97 new GetNumberOfAgentsMessage());
98 assertEquals(new Integer(3), message.getResult());
99
100 final GrinderProperties grinderProperties = new GrinderProperties();
101 assertTrue(
102 blockingSender.blockingSend(
103 new StartWorkerProcessesMessage(grinderProperties))
104 instanceof SuccessMessage);
105
106 assertTrue(blockingSender.blockingSend(new ResetWorkerProcessesMessage())
107 instanceof SuccessMessage);
108
109 assertTrue(
110 blockingSender.blockingSend(new StopAgentAndWorkerProcessesMessage())
111 instanceof SuccessMessage);
112
113 processControlStubFactory.assertSuccess("getNumberOfLiveAgents");
114 processControlStubFactory.assertSuccess("startWorkerProcesses",
115 grinderProperties);
116 processControlStubFactory.assertSuccess("resetWorkerProcesses");
117 processControlStubFactory.assertSuccess("stopAgentAndWorkerProcesses");
118 processControlStubFactory.assertNoMoreCalls();
119 }
120 }