2
* JBoss, Home of Professional Open Source
3
* Copyright 2005, JBoss Inc., and individual contributors as indicated
4
* by the @authors tag. See the copyright.txt in the distribution for a
5
* full listing of individual contributors.
7
* This is free software; you can redistribute it and/or modify it
8
* under the terms of the GNU Lesser General Public License as
9
* published by the Free Software Foundation; either version 2.1 of
10
* the License, or (at your option) any later version.
12
* This software is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with this software; if not, write to the Free
19
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
22
package org.jboss.test.remoting.connection;
24
import java.lang.reflect.Field;
25
import java.util.HashMap;
28
import javax.management.MBeanServer;
30
import junit.framework.TestCase;
32
import org.apache.log4j.Logger;
33
import org.jboss.remoting.AbstractInvoker;
34
import org.jboss.remoting.Client;
35
import org.jboss.remoting.ConnectionListener;
36
import org.jboss.remoting.ConnectionValidator;
37
import org.jboss.remoting.InvocationRequest;
38
import org.jboss.remoting.InvokerLocator;
39
import org.jboss.remoting.ServerInvocationHandler;
40
import org.jboss.remoting.ServerInvoker;
41
import org.jboss.remoting.callback.InvokerCallbackHandler;
42
import org.jboss.remoting.transport.socket.MicroSocketClientInvoker;
47
* @author <a href="ron.sigal@jboss.com">Ron Sigal</a>
48
* @version $Revision: 4742 $
50
* Copyright Jun 15, 2007
53
public class ConnectionValidatorConfigTestClient extends TestCase
55
public static int port;
57
private static Logger log = Logger.getLogger(ConnectionValidatorConfigTestClient.class);
58
private static boolean firstTime = true;
59
private static InvokerLocator serverLocator;
63
* Sets up target remoting server.
65
public void setUp() throws Exception
70
serverLocator = new InvokerLocator(ConnectionValidatorConfigTestServer.serverLocatorURI);
75
public void tearDown()
81
* Verifies that the default values are set correctly if a call is made to
82
* Client.addConnectionListener(ConnectionListener listener).
84
public void testDefaultConfig() throws Throwable
86
log.info("entering " + getName());
89
HashMap clientConfig = new HashMap();
90
addExtraClientConfig(clientConfig);
91
Client client = new Client(serverLocator, clientConfig);
93
log.info("client is connected");
96
assertEquals("abc", client.invoke("abc"));
98
// Add connection listener.
99
ConnectionListener listener = new TestConnectionListener();
100
client.addConnectionListener(listener);
103
Field field = Client.class.getDeclaredField("connectionValidator");
104
field.setAccessible(true);
105
ConnectionValidator validator = (ConnectionValidator) field.get(client);
106
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
107
field.setAccessible(true);
108
long pingPeriod = ((Long) field.get(validator)).longValue();
109
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
112
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
113
field.setAccessible(true);
114
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
115
field = AbstractInvoker.class.getDeclaredField("configuration");
116
field.setAccessible(true);
117
Map config = (Map) field.get(invoker);
118
Object o = config.get(ServerInvoker.TIMEOUT);
119
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
121
// Test ping retries.
122
assertTrue(invoker instanceof MicroSocketClientInvoker);
123
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
124
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
125
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
132
* Verifies that pingPeriod is set correctly if a call is made to
133
* Client.addConnectionListener(ConnectionListener listener, int pingPeriod).
135
public void testSetPingPeriod() throws Throwable
137
log.info("entering " + getName());
140
HashMap clientConfig = new HashMap();
141
addExtraClientConfig(clientConfig);
142
Client client = new Client(serverLocator, clientConfig);
144
log.info("client is connected");
147
assertEquals("abc", client.invoke("abc"));
149
// Add connection listener.
150
ConnectionListener listener = new TestConnectionListener();
151
client.addConnectionListener(listener, 3456);
154
Field field = Client.class.getDeclaredField("connectionValidator");
155
field.setAccessible(true);
156
ConnectionValidator validator = (ConnectionValidator) field.get(client);
157
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
158
field.setAccessible(true);
159
long pingPeriod = ((Long) field.get(validator)).longValue();
160
assertEquals(3456, pingPeriod);
163
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
164
field.setAccessible(true);
165
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
166
field = AbstractInvoker.class.getDeclaredField("configuration");
167
field.setAccessible(true);
168
Map config = (Map) field.get(invoker);
169
Object o = config.get(ServerInvoker.TIMEOUT);
170
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
172
// Test ping retries.
173
assertTrue(invoker instanceof MicroSocketClientInvoker);
174
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
175
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
176
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
183
* Verifies that pingPeriod is set correctly if it appears in Client
184
* configuration map but Client.addConnectionListener(ConnectionListener listener)
185
* puts default value in metadata map.
187
public void testSetPingPeriodByClientConfigUsingSingleArgMethod() throws Throwable
189
log.info("entering " + getName());
192
HashMap clientConfig = new HashMap();
193
addExtraClientConfig(clientConfig);
194
clientConfig.put(ConnectionValidator.VALIDATOR_PING_PERIOD, "3468");
195
Client client = new Client(serverLocator, clientConfig);
197
log.info("client is connected");
200
assertEquals("abc", client.invoke("abc"));
202
// Add connection listener.
203
ConnectionListener listener = new TestConnectionListener();
204
client.addConnectionListener(listener);
207
Field field = Client.class.getDeclaredField("connectionValidator");
208
field.setAccessible(true);
209
ConnectionValidator validator = (ConnectionValidator) field.get(client);
210
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
211
field.setAccessible(true);
212
long pingPeriod = ((Long) field.get(validator)).longValue();
213
assertEquals(3468, pingPeriod);
216
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
217
field.setAccessible(true);
218
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
219
field = AbstractInvoker.class.getDeclaredField("configuration");
220
field.setAccessible(true);
221
Map config = (Map) field.get(invoker);
222
Object o = config.get(ServerInvoker.TIMEOUT);
223
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
225
// Test ping retries.
226
assertTrue(invoker instanceof MicroSocketClientInvoker);
227
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
228
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
229
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
236
* Verifies that pingPeriod is set correctly if it appears in Client
239
public void testSetPingPeriodByClientConfig() throws Throwable
241
log.info("entering " + getName());
244
HashMap clientConfig = new HashMap();
245
addExtraClientConfig(clientConfig);
246
clientConfig.put(ConnectionValidator.VALIDATOR_PING_PERIOD, "3468");
247
Client client = new Client(serverLocator, clientConfig);
249
log.info("client is connected");
252
assertEquals("abc", client.invoke("abc"));
254
// Add connection listener.
255
Map metadata = new HashMap();
256
ConnectionListener listener = new TestConnectionListener();
257
client.addConnectionListener(listener, metadata);
260
Field field = Client.class.getDeclaredField("connectionValidator");
261
field.setAccessible(true);
262
ConnectionValidator validator = (ConnectionValidator) field.get(client);
263
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
264
field.setAccessible(true);
265
long pingPeriod = ((Long) field.get(validator)).longValue();
266
assertEquals(3468, pingPeriod);
269
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
270
field.setAccessible(true);
271
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
272
field = AbstractInvoker.class.getDeclaredField("configuration");
273
field.setAccessible(true);
274
Map config = (Map) field.get(invoker);
275
Object o = config.get(ServerInvoker.TIMEOUT);
276
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
278
// Test ping retries.
279
assertTrue(invoker instanceof MicroSocketClientInvoker);
280
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
281
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
282
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
289
* Verifies that pingPeriod is set correctly if a call is made to
290
* Client.addConnectionListener(ConnectionListener listener, Map metadata).
292
public void testSetPingPeriodByMetadata() throws Throwable
294
log.info("entering " + getName());
297
HashMap clientConfig = new HashMap();
298
addExtraClientConfig(clientConfig);
299
Client client = new Client(serverLocator, clientConfig);
301
log.info("client is connected");
304
assertEquals("abc", client.invoke("abc"));
306
// Add connection listener.
307
Map metadata = new HashMap();
308
metadata.put(ConnectionValidator.VALIDATOR_PING_PERIOD, "3467");
309
ConnectionListener listener = new TestConnectionListener();
310
client.addConnectionListener(listener, metadata);
313
Field field = Client.class.getDeclaredField("connectionValidator");
314
field.setAccessible(true);
315
ConnectionValidator validator = (ConnectionValidator) field.get(client);
316
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
317
field.setAccessible(true);
318
long pingPeriod = ((Long) field.get(validator)).longValue();
319
assertEquals(3467, pingPeriod);
322
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
323
field.setAccessible(true);
324
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
325
field = AbstractInvoker.class.getDeclaredField("configuration");
326
field.setAccessible(true);
327
Map config = (Map) field.get(invoker);
328
Object o = config.get(ServerInvoker.TIMEOUT);
329
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
331
// Test ping retries.
332
assertTrue(invoker instanceof MicroSocketClientInvoker);
333
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
334
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
335
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
342
* Verifies that pingPeriod is set correctly if it appears in both Client
343
* configuration map and metadata map.
345
public void testSetPingPeriodByClientConfigAndMetadata() throws Throwable
347
log.info("entering " + getName());
350
HashMap clientConfig = new HashMap();
351
addExtraClientConfig(clientConfig);
352
clientConfig.put(ConnectionValidator.VALIDATOR_PING_PERIOD, "3413");
353
Client client = new Client(serverLocator, clientConfig);
355
log.info("client is connected");
358
assertEquals("abc", client.invoke("abc"));
360
// Add connection listener.
361
Map metadata = new HashMap();
362
metadata.put(ConnectionValidator.VALIDATOR_PING_PERIOD, "3414");
363
ConnectionListener listener = new TestConnectionListener();
364
client.addConnectionListener(listener, metadata);
367
Field field = Client.class.getDeclaredField("connectionValidator");
368
field.setAccessible(true);
369
ConnectionValidator validator = (ConnectionValidator) field.get(client);
370
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
371
field.setAccessible(true);
372
long pingPeriod = ((Long) field.get(validator)).longValue();
373
assertEquals(3414, pingPeriod);
376
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
377
field.setAccessible(true);
378
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
379
field = AbstractInvoker.class.getDeclaredField("configuration");
380
field.setAccessible(true);
381
Map config = (Map) field.get(invoker);
382
Object o = config.get(ServerInvoker.TIMEOUT);
383
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
385
// Test ping retries.
386
assertTrue(invoker instanceof MicroSocketClientInvoker);
387
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
388
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
389
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
396
* Verifies that timeout is set correctly if it is set in Client
399
public void testSetTimeoutByClientConfig() throws Throwable
401
log.info("entering " + getName());
404
HashMap clientConfig = new HashMap();
405
addExtraClientConfig(clientConfig);
406
clientConfig.put(ConnectionValidator.VALIDATOR_PING_TIMEOUT, "3546");
407
Client client = new Client(serverLocator, clientConfig);
409
log.info("client is connected");
412
assertEquals("abc", client.invoke("abc"));
414
// Add connection listener.
415
Map metadata = new HashMap();
416
ConnectionListener listener = new TestConnectionListener();
417
client.addConnectionListener(listener, metadata);
420
Field field = Client.class.getDeclaredField("connectionValidator");
421
field.setAccessible(true);
422
ConnectionValidator validator = (ConnectionValidator) field.get(client);
423
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
424
field.setAccessible(true);
425
long pingPeriod = ((Long) field.get(validator)).longValue();
426
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
429
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
430
field.setAccessible(true);
431
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
432
field = AbstractInvoker.class.getDeclaredField("configuration");
433
field.setAccessible(true);
434
Map config = (Map) field.get(invoker);
435
Object o = config.get(ServerInvoker.TIMEOUT);
436
assertEquals("3546", o);
438
// Test ping retries.
439
assertTrue(invoker instanceof MicroSocketClientInvoker);
440
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
441
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
442
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
449
* Verifies that "timeout" in Client configuration map and metadata is ignored.
451
public void testDefaultTimeoutWithStandardTimeoutInClientConfig() throws Throwable
453
log.info("entering " + getName());
456
HashMap clientConfig = new HashMap();
457
addExtraClientConfig(clientConfig);
458
clientConfig.put(ServerInvoker.TIMEOUT, ConnectionValidator.DEFAULT_PING_TIMEOUT + "0");
459
Client client = new Client(serverLocator, clientConfig);
461
log.info("client is connected");
464
assertEquals("abc", client.invoke("abc"));
466
// Add connection listener.
467
Map metadata = new HashMap();
468
metadata.put(ServerInvoker.TIMEOUT, ConnectionValidator.DEFAULT_PING_TIMEOUT + "1");
469
ConnectionListener listener = new TestConnectionListener();
470
client.addConnectionListener(listener, metadata);
473
Field field = Client.class.getDeclaredField("connectionValidator");
474
field.setAccessible(true);
475
ConnectionValidator validator = (ConnectionValidator) field.get(client);
476
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
477
field.setAccessible(true);
478
long pingPeriod = ((Long) field.get(validator)).longValue();
479
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
482
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
483
field.setAccessible(true);
484
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
485
field = AbstractInvoker.class.getDeclaredField("configuration");
486
field.setAccessible(true);
487
Map config = (Map) field.get(invoker);
488
Object o = config.get(ServerInvoker.TIMEOUT);
489
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
491
// Test ping retries.
492
assertTrue(invoker instanceof MicroSocketClientInvoker);
493
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
494
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
495
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
502
* Verifies that timeout is set correctly if a call is made to
503
* Client.addConnectionListener(ConnectionListener listener, Map metadata).
505
public void testSetTimeoutByMetadata() throws Throwable
507
log.info("entering " + getName());
510
HashMap clientConfig = new HashMap();
511
addExtraClientConfig(clientConfig);
512
Client client = new Client(serverLocator, clientConfig);
514
log.info("client is connected");
517
assertEquals("abc", client.invoke("abc"));
519
// Add connection listener.
520
Map metadata = new HashMap();
521
metadata.put(ConnectionValidator.VALIDATOR_PING_TIMEOUT, "3478");
522
ConnectionListener listener = new TestConnectionListener();
523
client.addConnectionListener(listener, metadata);
526
Field field = Client.class.getDeclaredField("connectionValidator");
527
field.setAccessible(true);
528
ConnectionValidator validator = (ConnectionValidator) field.get(client);
529
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
530
field.setAccessible(true);
531
long pingPeriod = ((Long) field.get(validator)).longValue();
532
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
535
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
536
field.setAccessible(true);
537
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
538
field = AbstractInvoker.class.getDeclaredField("configuration");
539
field.setAccessible(true);
540
Map config = (Map) field.get(invoker);
541
Object o = config.get(ServerInvoker.TIMEOUT);
542
assertEquals("3478", o);
544
// Test ping retries.
545
assertTrue(invoker instanceof MicroSocketClientInvoker);
546
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
547
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
548
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
555
* Verifies that timeout is set correctly if "validatorPingTimeout" appears in
556
* both Client configuration map and metadata map.
558
public void testSetTimeoutByClientConfigAndMetadata() throws Throwable
560
log.info("entering " + getName());
563
HashMap clientConfig = new HashMap();
564
addExtraClientConfig(clientConfig);
565
clientConfig.put(ConnectionValidator.VALIDATOR_PING_TIMEOUT, "3167");
566
Client client = new Client(serverLocator, clientConfig);
568
log.info("client is connected");
571
assertEquals("abc", client.invoke("abc"));
573
// Add connection listener.
574
Map metadata = new HashMap();
575
metadata.put(ConnectionValidator.VALIDATOR_PING_TIMEOUT, "3168");
576
ConnectionListener listener = new TestConnectionListener();
577
client.addConnectionListener(listener, metadata);
580
Field field = Client.class.getDeclaredField("connectionValidator");
581
field.setAccessible(true);
582
ConnectionValidator validator = (ConnectionValidator) field.get(client);
583
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
584
field.setAccessible(true);
585
long pingPeriod = ((Long) field.get(validator)).longValue();
586
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
589
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
590
field.setAccessible(true);
591
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
592
field = AbstractInvoker.class.getDeclaredField("configuration");
593
field.setAccessible(true);
594
Map config = (Map) field.get(invoker);
595
Object o = config.get(ServerInvoker.TIMEOUT);
596
assertEquals("3168", o);
598
// Test ping retries.
599
assertTrue(invoker instanceof MicroSocketClientInvoker);
600
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
601
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
602
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
609
* Verifies that number of ping retries is set correctly if it appears in
610
* Client configuratin map.
612
public void testSetPingRetriesClientConfig() throws Throwable
614
log.info("entering " + getName());
617
HashMap clientConfig = new HashMap();
618
clientConfig.put("NumberOfCallRetries", "13");
619
addExtraClientConfig(clientConfig);
620
Client client = new Client(serverLocator, clientConfig);
622
log.info("client is connected");
625
assertEquals("abc", client.invoke("abc"));
627
// Add connection listener.
628
Map metadata = new HashMap();
629
ConnectionListener listener = new TestConnectionListener();
630
client.addConnectionListener(listener, metadata);
633
Field field = Client.class.getDeclaredField("connectionValidator");
634
field.setAccessible(true);
635
ConnectionValidator validator = (ConnectionValidator) field.get(client);
636
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
637
field.setAccessible(true);
638
long pingPeriod = ((Long) field.get(validator)).longValue();
639
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
642
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
643
field.setAccessible(true);
644
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
645
field = AbstractInvoker.class.getDeclaredField("configuration");
646
field.setAccessible(true);
647
Map config = (Map) field.get(invoker);
648
Object o = config.get(ServerInvoker.TIMEOUT);
649
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
651
// Test ping retries.
652
assertTrue(invoker instanceof MicroSocketClientInvoker);
653
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
654
assertEquals(13, socketInvoker.getNumberOfCallRetries());
661
* Verifies that number of ping retries is set correctly if a call is made to
662
* Client.addConnectionListener(ConnectionListener listener, Map metadata).
664
public void testSetPingRetriesByMetadata() throws Throwable
666
log.info("entering " + getName());
669
HashMap clientConfig = new HashMap();
670
addExtraClientConfig(clientConfig);
671
Client client = new Client(serverLocator, clientConfig);
673
log.info("client is connected");
676
assertEquals("abc", client.invoke("abc"));
678
// Add connection listener.
679
Map metadata = new HashMap();
680
metadata.put("NumberOfCallRetries", "7");
681
ConnectionListener listener = new TestConnectionListener();
682
client.addConnectionListener(listener, metadata);
685
Field field = Client.class.getDeclaredField("connectionValidator");
686
field.setAccessible(true);
687
ConnectionValidator validator = (ConnectionValidator) field.get(client);
688
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
689
field.setAccessible(true);
690
long pingPeriod = ((Long) field.get(validator)).longValue();
691
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
694
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
695
field.setAccessible(true);
696
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
697
field = AbstractInvoker.class.getDeclaredField("configuration");
698
field.setAccessible(true);
699
Map config = (Map) field.get(invoker);
700
Object o = config.get(ServerInvoker.TIMEOUT);
701
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
703
// Test ping retries.
704
assertTrue(invoker instanceof MicroSocketClientInvoker);
705
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
706
assertEquals(7, socketInvoker.getNumberOfCallRetries());
713
* Verifies that number of ping retries is set correctly if it appears in both
714
* Client configuration map and metadata.
716
public void testSetPingRetriesByClientConfigAndMetadata() throws Throwable
718
log.info("entering " + getName());
721
HashMap clientConfig = new HashMap();
722
clientConfig.put("NumberOfCallRetries", "17");
723
addExtraClientConfig(clientConfig);
724
Client client = new Client(serverLocator, clientConfig);
726
log.info("client is connected");
729
assertEquals("abc", client.invoke("abc"));
731
// Add connection listener.
732
Map metadata = new HashMap();
733
metadata.put("NumberOfCallRetries", "19");
734
ConnectionListener listener = new TestConnectionListener();
735
client.addConnectionListener(listener, metadata);
738
Field field = Client.class.getDeclaredField("connectionValidator");
739
field.setAccessible(true);
740
ConnectionValidator validator = (ConnectionValidator) field.get(client);
741
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
742
field.setAccessible(true);
743
long pingPeriod = ((Long) field.get(validator)).longValue();
744
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
747
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
748
field.setAccessible(true);
749
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
750
field = AbstractInvoker.class.getDeclaredField("configuration");
751
field.setAccessible(true);
752
Map config = (Map) field.get(invoker);
753
Object o = config.get(ServerInvoker.TIMEOUT);
754
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
756
// Test ping retries.
757
assertTrue(invoker instanceof MicroSocketClientInvoker);
758
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
759
assertEquals(19, socketInvoker.getNumberOfCallRetries());
766
* Verifies that number of connection retries is set correctly if it appears
767
* in Client configuration map.
769
public void testSetConnectionRetriesByClientConfig() throws Throwable
771
log.info("entering " + getName());
774
HashMap clientConfig = new HashMap();
775
clientConfig.put("NumberOfRetries", "21");
776
addExtraClientConfig(clientConfig);
777
Client client = new Client(serverLocator, clientConfig);
779
log.info("client is connected");
782
assertEquals("abc", client.invoke("abc"));
784
// Add connection listener.
785
Map metadata = new HashMap();
786
ConnectionListener listener = new TestConnectionListener();
787
client.addConnectionListener(listener, metadata);
790
Field field = Client.class.getDeclaredField("connectionValidator");
791
field.setAccessible(true);
792
ConnectionValidator validator = (ConnectionValidator) field.get(client);
793
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
794
field.setAccessible(true);
795
long pingPeriod = ((Long) field.get(validator)).longValue();
796
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
799
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
800
field.setAccessible(true);
801
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
802
field = AbstractInvoker.class.getDeclaredField("configuration");
803
field.setAccessible(true);
804
Map config = (Map) field.get(invoker);
805
Object o = config.get(ServerInvoker.TIMEOUT);
806
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
808
// Test ping retries.
809
assertTrue(invoker instanceof MicroSocketClientInvoker);
810
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
811
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
812
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
819
* Verifies that number of connection retries is set correctly if a call is made to
820
* Client.addConnectionListener(ConnectionListener listener, Map metadata).
822
public void testSetConnectionRetriesByMetadata() throws Throwable
824
log.info("entering " + getName());
827
HashMap clientConfig = new HashMap();
828
addExtraClientConfig(clientConfig);
829
Client client = new Client(serverLocator, clientConfig);
831
log.info("client is connected");
834
assertEquals("abc", client.invoke("abc"));
836
// Add connection listener.
837
Map metadata = new HashMap();
838
metadata.put("NumberOfRetries", "27");
839
ConnectionListener listener = new TestConnectionListener();
840
client.addConnectionListener(listener, metadata);
843
Field field = Client.class.getDeclaredField("connectionValidator");
844
field.setAccessible(true);
845
ConnectionValidator validator = (ConnectionValidator) field.get(client);
846
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
847
field.setAccessible(true);
848
long pingPeriod = ((Long) field.get(validator)).longValue();
849
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
852
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
853
field.setAccessible(true);
854
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
855
field = AbstractInvoker.class.getDeclaredField("configuration");
856
field.setAccessible(true);
857
Map config = (Map) field.get(invoker);
858
Object o = config.get(ServerInvoker.TIMEOUT);
859
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
861
// Test ping retries.
862
assertTrue(invoker instanceof MicroSocketClientInvoker);
863
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
864
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
865
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
872
* Verifies that number of connection retries is set correctly if it appears
873
* in Client configuration map.
875
public void testSetConnectionRetriesByClientConfigAndMetadata() throws Throwable
877
log.info("entering " + getName());
880
HashMap clientConfig = new HashMap();
881
clientConfig.put("NumberOfRetries", "31");
882
addExtraClientConfig(clientConfig);
883
Client client = new Client(serverLocator, clientConfig);
885
log.info("client is connected");
888
assertEquals("abc", client.invoke("abc"));
890
// Add connection listener.
891
Map metadata = new HashMap();
892
metadata.put("NumberOfRetries", "33");
893
ConnectionListener listener = new TestConnectionListener();
894
client.addConnectionListener(listener, metadata);
897
Field field = Client.class.getDeclaredField("connectionValidator");
898
field.setAccessible(true);
899
ConnectionValidator validator = (ConnectionValidator) field.get(client);
900
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
901
field.setAccessible(true);
902
long pingPeriod = ((Long) field.get(validator)).longValue();
903
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
906
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
907
field.setAccessible(true);
908
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
909
field = AbstractInvoker.class.getDeclaredField("configuration");
910
field.setAccessible(true);
911
Map config = (Map) field.get(invoker);
912
Object o = config.get(ServerInvoker.TIMEOUT);
913
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
915
// Test ping retries.
916
assertTrue(invoker instanceof MicroSocketClientInvoker);
917
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
918
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
919
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
926
* Verifies that other parameters may be set by passing in metadata map.
928
public void testOtherParamsByMetadata() throws Throwable
930
log.info("entering " + getName());
933
HashMap clientConfig = new HashMap();
934
addExtraClientConfig(clientConfig);
935
Client client = new Client(serverLocator, clientConfig);
937
log.info("client is connected");
940
assertEquals("abc", client.invoke("abc"));
942
// Add connection listener.
943
Map metadata = new HashMap();
944
metadata.put("ReuseAddress", "false");
945
ConnectionListener listener = new TestConnectionListener();
946
client.addConnectionListener(listener, metadata);
949
Field field = Client.class.getDeclaredField("connectionValidator");
950
field.setAccessible(true);
951
ConnectionValidator validator = (ConnectionValidator) field.get(client);
952
field = ConnectionValidator.class.getDeclaredField("pingPeriod");
953
field.setAccessible(true);
954
long pingPeriod = ((Long) field.get(validator)).longValue();
955
assertEquals(ConnectionValidator.DEFAULT_PING_PERIOD, pingPeriod);
958
field = ConnectionValidator.class.getDeclaredField("clientInvoker");
959
field.setAccessible(true);
960
AbstractInvoker invoker = (AbstractInvoker) field.get(validator);
961
field = AbstractInvoker.class.getDeclaredField("configuration");
962
field.setAccessible(true);
963
Map config = (Map) field.get(invoker);
964
Object o = config.get(ServerInvoker.TIMEOUT);
965
assertEquals(ConnectionValidator.DEFAULT_PING_TIMEOUT, o);
967
// Test ping retries.
968
assertTrue(invoker instanceof MicroSocketClientInvoker);
969
MicroSocketClientInvoker socketInvoker = (MicroSocketClientInvoker) invoker;
970
int defaultPingRetries = Integer.parseInt(ConnectionValidator.DEFAULT_NUMBER_OF_PING_RETRIES);
971
assertEquals(defaultPingRetries, socketInvoker.getNumberOfCallRetries());
973
// Test ReuseAddress.
974
assertFalse(socketInvoker.getReuseAddress());
980
protected String getTransport()
986
protected void addExtraClientConfig(Map config) {}
987
protected void addExtraServerConfig(Map config) {}
990
static class TestInvocationHandler implements ServerInvocationHandler
992
public void addListener(InvokerCallbackHandler callbackHandler) {}
993
public Object invoke(final InvocationRequest invocation) {return invocation.getParameter();}
994
public void removeListener(InvokerCallbackHandler callbackHandler) {}
995
public void setMBeanServer(MBeanServer server) {}
996
public void setInvoker(ServerInvoker invoker) {}
999
static class TestConnectionListener implements ConnectionListener
1001
public void handleConnectionException(Throwable throwable, Client client) {}
b'\\ No newline at end of file'