source: simplerunner/src/test/java/geniusweb/simplerunner/SessionRunnerTest.java@ 52

Last change on this file since 52 was 52, checked in by ruud, 14 months ago

Fixed small issues in domaineditor.

File size: 4.2 KB
Line 
1package geniusweb.simplerunner;
2
3import static org.mockito.ArgumentMatchers.any;
4import static org.mockito.ArgumentMatchers.anyLong;
5import static org.mockito.ArgumentMatchers.eq;
6import static org.mockito.Mockito.mock;
7import static org.mockito.Mockito.spy;
8import static org.mockito.Mockito.times;
9import static org.mockito.Mockito.verify;
10import static org.mockito.Mockito.when;
11
12import java.util.logging.Level;
13
14import org.junit.Before;
15import org.junit.Test;
16import org.mockito.ArgumentCaptor;
17
18import geniusweb.actions.PartyId;
19import geniusweb.protocol.CurrentNegoState;
20import geniusweb.protocol.NegoState;
21import geniusweb.protocol.ProtocolException;
22import geniusweb.protocol.session.SessionProtocol;
23import geniusweb.protocol.session.SessionSettings;
24import geniusweb.protocol.session.SessionState;
25import tudelft.utilities.listener.Listener;
26import tudelft.utilities.logging.ReportToLogger;
27import tudelft.utilities.logging.Reporter;
28
29public class SessionRunnerTest {
30 private static final ProtocolException PROTOCOL_EXC = new ProtocolException(
31 "fake protocol exception", new PartyId("test"));
32 private CurrentNegoState finishedEvent;
33 private final long NOW = 1000;
34 private final Reporter logger = new ReportToLogger("test");
35
36 @Before
37 public void before() {
38 finishedEvent = mock(CurrentNegoState.class);
39 SessionState finishedstate = mock(SessionState.class);
40 when(finishedstate.isFinal(anyLong())).thenReturn(true);
41 when(finishedEvent.getState()).thenReturn(finishedstate);
42
43 }
44
45 @SuppressWarnings("unchecked")
46 @Test
47 public void smokeTest() {
48 new Runner(mock(SessionSettings.class),
49 mock(ClassPathConnectionFactory.class), logger, 5000);
50 }
51
52 @Test
53 public void testRun() {
54 SessionSettings settings = mock(SessionSettings.class);
55 SessionProtocol protocol = mock(SessionProtocol.class);
56 when(settings.getProtocol(logger)).thenReturn(protocol);
57 @SuppressWarnings("unchecked")
58 ClassPathConnectionFactory factory = mock(
59 ClassPathConnectionFactory.class);
60
61 Runner runner = spy(new Runner(settings, factory, logger, 5000));
62 runner.run();
63
64 verify(protocol, times(1)).addListener(any());
65 verify(protocol, times(1)).start(factory);
66
67 verify(runner, times(0)).stop();
68
69 }
70
71 @Test
72 public void testStopNormally() {
73 SessionSettings settings = mock(SessionSettings.class);
74 SessionProtocol protocol = mock(SessionProtocol.class);
75 when(settings.getProtocol(any())).thenReturn(protocol);
76 SessionState state = mock(SessionState.class);
77 when(protocol.getState()).thenReturn(state);
78 Reporter logger = mock(Reporter.class);
79 @SuppressWarnings("unchecked")
80 ClassPathConnectionFactory factory = mock(
81 ClassPathConnectionFactory.class);
82 Runner runner = spy(new Runner(settings, factory, logger, 5000) {
83 @Override
84 protected void logFinal(Level level, NegoState state) {
85 log.log(level, state.toString());
86 }
87 });
88 ArgumentCaptor<Listener> listener = ArgumentCaptor
89 .forClass(Listener.class);
90 runner.run();
91
92 verify(protocol, times(1)).addListener(listener.capture());
93
94 // make the finixhed event.... too complex...
95 listener.getValue().notifyChange(finishedEvent);
96 verify(runner, times(1)).stop();
97 verify(logger, times(0)).log(eq(Level.WARNING), any(String.class));
98
99 }
100
101 @Test
102 public void testStopWithError() throws InterruptedException {
103 Reporter logger = mock(Reporter.class);
104 SessionSettings settings = mock(SessionSettings.class);
105 SessionProtocol protocol = mock(SessionProtocol.class);
106 when(settings.getProtocol(any())).thenReturn(protocol);
107 SessionState state = mock(SessionState.class);
108 when(protocol.getState()).thenReturn(state);
109 @SuppressWarnings("unchecked")
110 ClassPathConnectionFactory factory = mock(
111 ClassPathConnectionFactory.class);
112 Runner runner = spy(new Runner(settings, factory, logger, 5000) {
113 @Override
114 protected void logFinal(Level level, NegoState state) {
115 log.log(level, state.toString());
116 }
117 });
118 ArgumentCaptor<Listener> listener = ArgumentCaptor
119 .forClass(Listener.class);
120 runner.run();
121
122 verify(protocol, times(1)).addListener(listener.capture());
123
124 listener.getValue().notifyChange(finishedEvent);
125 verify(runner, times(1)).stop();
126 // check final state is logged
127 String statestr = state.toString();
128 verify(logger, times(1)).log(any(), eq(statestr));
129
130 }
131
132}
Note: See TracBrowser for help on using the repository browser.