@@ -85,105 +85,73 @@ public void disconnectNodeShouldFailIfNodeDoesNotExist() {
8585 @ Test
8686 public void disconnectNodeShouldSucceed () throws Exception {
8787 DumbSlave slave = j .createSlave ("aNode" , "" , null );
88- slave .toComputer ().waitUntilOnline ();
89- assertThat (slave .toComputer ().isOnline (), equalTo (true ));
90- assertThat (slave .toComputer ().getOfflineCause (), equalTo (null ));
88+ assertOnline (slave );
9189
9290 CLICommandInvoker .Result result = command
9391 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
9492 .invokeWithArgs ("aNode" );
9593 assertThat (result , succeededSilently ());
96- assertThat (slave .toComputer ().isOffline (), equalTo (true ));
97- assertThat (slave .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
98- assertThat (((OfflineCause .ByCLI ) slave .toComputer ().getOfflineCause ()).message , equalTo (null ));
94+ assertOffline (slave , null );
9995
10096 slave .toComputer ().connect (true );
101- slave .toComputer ().waitUntilOnline ();
102- assertThat (slave .toComputer ().isOnline (), equalTo (true ));
103- assertThat (slave .toComputer ().getOfflineCause (), equalTo (null ));
97+ assertOnline (slave );
10498
10599 result = command
106100 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
107101 .invokeWithArgs ("aNode" );
108102 assertThat (result , succeededSilently ());
109- assertThat (slave .toComputer ().isOffline (), equalTo (true ));
110- assertThat (slave .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
111- assertThat (((OfflineCause .ByCLI ) slave .toComputer ().getOfflineCause ()).message , equalTo (null ));
103+ assertOffline (slave , null );
112104
113105 result = command
114106 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
115107 .invokeWithArgs ("aNode" );
116108 assertThat (result , succeededSilently ());
117- assertThat (slave .toComputer ().isOffline (), equalTo (true ));
118- assertThat (slave .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
119- assertThat (((OfflineCause .ByCLI ) slave .toComputer ().getOfflineCause ()).message , equalTo (null ));
109+ assertOffline (slave , null );
120110 }
121111
122112 @ Test
123113 public void disconnectNodeShouldSucceedWithCause () throws Exception {
124114 DumbSlave slave = j .createSlave ("aNode" , "" , null );
125- slave .toComputer ().waitUntilOnline ();
126- assertThat (slave .toComputer ().isOnline (), equalTo (true ));
127- assertThat (slave .toComputer ().getOfflineCause (), equalTo (null ));
115+ assertOnline (slave );
128116
129117 CLICommandInvoker .Result result = command
130118 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
131119 .invokeWithArgs ("aNode" , "-m" , "aCause" );
132120 assertThat (result , succeededSilently ());
133- assertThat (slave .toComputer ().isOffline (), equalTo (true ));
134- assertThat (slave .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
135- assertThat (((OfflineCause .ByCLI ) slave .toComputer ().getOfflineCause ()).message , equalTo ("aCause" ));
121+ assertOffline (slave , "aCause" );
136122
137123 slave .toComputer ().connect (true );
138- slave .toComputer ().waitUntilOnline ();
139- assertThat (slave .toComputer ().isOnline (), equalTo (true ));
140- assertThat (slave .toComputer ().getOfflineCause (), equalTo (null ));
124+ assertOnline (slave );
141125
142126 result = command
143127 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
144128 .invokeWithArgs ("aNode" , "-m" , "anotherCause" );
145129 assertThat (result , succeededSilently ());
146- assertThat (slave .toComputer ().isOffline (), equalTo (true ));
147- assertThat (slave .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
148- assertThat (((OfflineCause .ByCLI ) slave .toComputer ().getOfflineCause ()).message , equalTo ("anotherCause" ));
130+ assertOffline (slave , "anotherCause" );
149131
150132 result = command
151133 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
152134 .invokeWithArgs ("aNode" , "-m" , "yetAnotherCause" );
153135 assertThat (result , succeededSilently ());
154- assertThat (slave .toComputer ().isOffline (), equalTo (true ));
155- assertThat (slave .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
156- assertThat (((OfflineCause .ByCLI ) slave .toComputer ().getOfflineCause ()).message , equalTo ("yetAnotherCause" ));
136+ assertOffline (slave , "yetAnotherCause" );
157137 }
158138
159139 @ Test
160140 public void disconnectNodeManyShouldSucceed () throws Exception {
161141 DumbSlave slave1 = j .createSlave ("aNode1" , "" , null );
162142 DumbSlave slave2 = j .createSlave ("aNode2" , "" , null );
163143 DumbSlave slave3 = j .createSlave ("aNode3" , "" , null );
164- slave1 .toComputer ().waitUntilOnline ();
165- assertThat (slave1 .toComputer ().isOnline (), equalTo (true ));
166- assertThat (slave1 .toComputer ().getOfflineCause (), equalTo (null ));
167- slave2 .toComputer ().waitUntilOnline ();
168- assertThat (slave2 .toComputer ().isOnline (), equalTo (true ));
169- assertThat (slave2 .toComputer ().getOfflineCause (), equalTo (null ));
170- slave3 .toComputer ().waitUntilOnline ();
171- assertThat (slave3 .toComputer ().isOnline (), equalTo (true ));
172- assertThat (slave3 .toComputer ().getOfflineCause (), equalTo (null ));
144+ assertOnline (slave1 );
145+ assertOnline (slave2 );
146+ assertOnline (slave3 );
173147
174148 final CLICommandInvoker .Result result = command
175149 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
176150 .invokeWithArgs ("aNode1" , "aNode2" , "aNode3" );
177151 assertThat (result , succeededSilently ());
178- assertThat (slave1 .toComputer ().isOffline (), equalTo (true ));
179- assertThat (slave1 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
180- assertThat (((OfflineCause .ByCLI ) slave1 .toComputer ().getOfflineCause ()).message , equalTo (null ));
181- assertThat (slave2 .toComputer ().isOffline (), equalTo (true ));
182- assertThat (slave2 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
183- assertThat (((OfflineCause .ByCLI ) slave2 .toComputer ().getOfflineCause ()).message , equalTo (null ));
184- assertThat (slave3 .toComputer ().isOffline (), equalTo (true ));
185- assertThat (slave3 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
186- assertThat (((OfflineCause .ByCLI ) slave3 .toComputer ().getOfflineCause ()).message , equalTo (null ));
152+ assertOffline (slave1 , null );
153+ assertOffline (slave2 , null );
154+ assertOffline (slave3 , null );
187155 }
188156
189157 @ Test
@@ -194,10 +162,7 @@ public void disconnectNodeManyShouldSucceedWithCause() throws Exception {
194162 agents .add (j .createSlave ("aNode" + i , "" , null ));
195163 }
196164 for (var agent : agents ) {
197- var computer = agent .toComputer ();
198- computer .waitUntilOnline ();
199- assertThat (computer .isOnline (), equalTo (true ));
200- assertThat (computer .getOfflineCause (), equalTo (null ));
165+ assertOnline (agent );
201166 }
202167
203168 var args = new ArrayList <String >();
@@ -211,27 +176,16 @@ public void disconnectNodeManyShouldSucceedWithCause() throws Exception {
211176 .invokeWithArgs (args .toArray (String []::new ));
212177 assertThat (result , succeededSilently ());
213178 for (var agent : agents ) {
214- var computer = agent .toComputer ();
215- assertThat (computer .isOffline (), equalTo (true ));
216- var cause = computer .getOfflineCause ();
217- if (cause instanceof OfflineCause .ByCLI cliCause ) {
218- assertThat (cliCause .message , equalTo ("aCause" ));
219- } else {
220- assertThat ("seen occasionally in CI" , cause , instanceOf (OfflineCause .ChannelTermination .class ));
221- }
179+ assertOffline (agent , "aCause" );
222180 }
223181 }
224182
225183 @ Test
226184 public void disconnectNodeManyShouldFailIfANodeDoesNotExist () throws Exception {
227185 DumbSlave slave1 = j .createSlave ("aNode1" , "" , null );
228186 DumbSlave slave2 = j .createSlave ("aNode2" , "" , null );
229- slave1 .toComputer ().waitUntilOnline ();
230- assertThat (slave1 .toComputer ().isOnline (), equalTo (true ));
231- assertThat (slave1 .toComputer ().getOfflineCause (), equalTo (null ));
232- slave2 .toComputer ().waitUntilOnline ();
233- assertThat (slave2 .toComputer ().isOnline (), equalTo (true ));
234- assertThat (slave2 .toComputer ().getOfflineCause (), equalTo (null ));
187+ assertOnline (slave1 );
188+ assertOnline (slave2 );
235189
236190 final CLICommandInvoker .Result result = command
237191 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
@@ -240,34 +194,40 @@ public void disconnectNodeManyShouldFailIfANodeDoesNotExist() throws Exception {
240194 assertThat (result , hasNoStandardOutput ());
241195 assertThat (result .stderr (), containsString ("never_created: No such agent \" never_created\" exists. Did you mean \" aNode1\" ?" ));
242196 assertThat (result .stderr (), containsString ("ERROR: " + CLICommand .CLI_LISTPARAM_SUMMARY_ERROR_TEXT ));
243- assertThat (slave1 .toComputer ().isOffline (), equalTo (true ));
244- assertThat (slave1 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
245- assertThat (((OfflineCause .ByCLI ) slave1 .toComputer ().getOfflineCause ()).message , equalTo ("aCause" ));
246- assertThat (slave2 .toComputer ().isOffline (), equalTo (true ));
247- assertThat (slave2 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
248- assertThat (((OfflineCause .ByCLI ) slave2 .toComputer ().getOfflineCause ()).message , equalTo ("aCause" ));
197+ assertOffline (slave1 , "aCause" );
198+ assertOffline (slave2 , "aCause" );
249199 }
250200
251201 @ Test
252202 public void disconnectNodeManyShouldSucceedEvenANodeIsSpecifiedTwice () throws Exception {
253203 DumbSlave slave1 = j .createSlave ("aNode1" , "" , null );
254204 DumbSlave slave2 = j .createSlave ("aNode2" , "" , null );
255- slave1 .toComputer ().waitUntilOnline ();
256- assertThat (slave1 .toComputer ().isOnline (), equalTo (true ));
257- assertThat (slave1 .toComputer ().getOfflineCause (), equalTo (null ));
258- slave2 .toComputer ().waitUntilOnline ();
259- assertThat (slave2 .toComputer ().isOnline (), equalTo (true ));
260- assertThat (slave2 .toComputer ().getOfflineCause (), equalTo (null ));
205+ assertOnline (slave1 );
206+ assertOnline (slave2 );
261207
262208 final CLICommandInvoker .Result result = command
263209 .authorizedTo (Computer .DISCONNECT , Jenkins .READ )
264210 .invokeWithArgs ("aNode1" , "aNode2" , "aNode1" , "-m" , "aCause" );
265211 assertThat (result , succeededSilently ());
266- assertThat (slave1 .toComputer ().isOffline (), equalTo (true ));
267- assertThat (slave1 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
268- assertThat (((OfflineCause .ByCLI ) slave1 .toComputer ().getOfflineCause ()).message , equalTo ("aCause" ));
269- assertThat (slave2 .toComputer ().isOffline (), equalTo (true ));
270- assertThat (slave2 .toComputer ().getOfflineCause (), instanceOf (OfflineCause .ByCLI .class ));
271- assertThat (((OfflineCause .ByCLI ) slave2 .toComputer ().getOfflineCause ()).message , equalTo ("aCause" ));
212+ assertOffline (slave1 , "aCause" );
213+ assertOffline (slave2 , "aCause" );
214+ }
215+
216+ private static void assertOnline (DumbSlave slave ) throws InterruptedException {
217+ var computer = slave .toComputer ();
218+ computer .waitUntilOnline ();
219+ assertThat (computer .isOnline (), equalTo (true ));
220+ assertThat (computer .getOfflineCause (), equalTo (null ));
221+ }
222+
223+ private static void assertOffline (DumbSlave slave , String message ) {
224+ var computer = slave .toComputer ();
225+ assertThat (computer .isOffline (), equalTo (true ));
226+ var offlineCause = computer .getOfflineCause ();
227+ if (offlineCause instanceof OfflineCause .ByCLI cliCause ) {
228+ assertThat (cliCause .message , equalTo (message ));
229+ } else {
230+ assertThat ("sometimes overrides ByCLI" , offlineCause , instanceOf (OfflineCause .ChannelTermination .class ));
231+ }
272232 }
273233}
0 commit comments