@@ -279,6 +279,56 @@ private static void _testChainedStatisticsCollector(StatisticsCollector cHandler
279
279
assertSame (cHandler , o .getStatisticsCollector (), "chained statistics collector" );
280
280
}
281
281
282
+ @ Test
283
+ public void testDurationProperties () {
284
+ // test millis
285
+ Properties props = new Properties ();
286
+ props .setProperty (Options .PROP_RECONNECT_WAIT , "" + (15 * MINUTE ));
287
+ props .setProperty (Options .PROP_RECONNECT_JITTER , "" + (2 * DAY + 3 * HOUR + 4 * MINUTE ));
288
+ props .setProperty (Options .PROP_RECONNECT_JITTER_TLS , "" + DAY );
289
+ props .setProperty (Options .PROP_CONNECTION_TIMEOUT , "42000" );
290
+ props .setProperty (Options .PROP_SOCKET_WRITE_TIMEOUT , "42123" );
291
+ props .setProperty (Options .PROP_PING_INTERVAL , "20345" );
292
+ props .setProperty (Options .PROP_CLEANUP_INTERVAL , "" + (10 * HOUR ));
293
+ _testDurationProperties (new Options .Builder (props ).build ());
294
+
295
+ // test duration strings
296
+ props = new Properties ();
297
+ props .setProperty (Options .PROP_RECONNECT_WAIT , "PT15M" );
298
+ props .setProperty (Options .PROP_RECONNECT_JITTER , "P2DT3H4M" );
299
+ props .setProperty (Options .PROP_RECONNECT_JITTER_TLS , "P1D" );
300
+ props .setProperty (Options .PROP_CONNECTION_TIMEOUT , "PT42S" );
301
+ props .setProperty (Options .PROP_SOCKET_WRITE_TIMEOUT , "PT42.123S" );
302
+ props .setProperty (Options .PROP_PING_INTERVAL , "PT20.345S" );
303
+ props .setProperty (Options .PROP_CLEANUP_INTERVAL , "PT10H" );
304
+ _testDurationProperties (new Options .Builder (props ).build ());
305
+
306
+ // test negative value gives default
307
+ props = new Properties ();
308
+ props .setProperty (Options .PROP_RECONNECT_WAIT , "-1" );
309
+ Options o = new Options .Builder (props ).build ();
310
+ assertEquals (2000 , o .getReconnectWait ().toMillis ());
311
+
312
+ // test parse error
313
+ Properties px1 = new Properties ();
314
+ px1 .setProperty (Options .PROP_RECONNECT_WAIT , "A" );
315
+ assertThrows (NumberFormatException .class , () -> new Options .Builder (px1 ).build ());
316
+ }
317
+
318
+ private static final long MINUTE = 1000 * 60 ;
319
+ private static final long HOUR = MINUTE * 60 ;
320
+ private static final long DAY = HOUR * 24 ;
321
+
322
+ private static void _testDurationProperties (Options o ) {
323
+ assertEquals (15 * MINUTE , o .getReconnectWait ().toMillis ());
324
+ assertEquals (2 * DAY + 3 * HOUR + 4 * MINUTE , o .getReconnectJitter ().toMillis ());
325
+ assertEquals (DAY , o .getReconnectJitterTls ().toMillis ());
326
+ assertEquals (42000 , o .getConnectionTimeout ().toMillis ());
327
+ assertEquals (42123 , o .getSocketWriteTimeout ().toMillis ());
328
+ assertEquals (20345 , o .getPingInterval ().toMillis ());
329
+ assertEquals (10 * HOUR , o .getRequestCleanupInterval ().toMillis ());
330
+ }
331
+
282
332
@ Test
283
333
public void testPropertiesBooleanBuilder () {
284
334
Properties props = new Properties ();
0 commit comments