@@ -530,6 +530,65 @@ public void convert_jsonRlsConfig_doNotClampMaxAgeIfStaleAgeIsSet() throws IOExc
530530 assertThat (converted ).isEqualTo (expectedConfig );
531531 }
532532
533+ @ Test
534+ public void convert_jsonRlsConfig_clampMaxAgeIfStaleAgeMissing () throws IOException {
535+ String jsonStr = "{\n "
536+ + " \" grpcKeybuilders\" : [\n "
537+ + " {\n "
538+ + " \" names\" : [\n "
539+ + " {\n "
540+ + " \" service\" : \" service1\" ,\n "
541+ + " \" method\" : \" create\" \n "
542+ + " }\n "
543+ + " ],\n "
544+ + " \" headers\" : [\n "
545+ + " {\n "
546+ + " \" key\" : \" user\" ,"
547+ + " \" names\" : [\" User\" , \" Parent\" ],\n "
548+ + " \" optional\" : true\n "
549+ + " },\n "
550+ + " {\n "
551+ + " \" key\" : \" id\" ,"
552+ + " \" names\" : [\" X-Google-Id\" ],\n "
553+ + " \" optional\" : true\n "
554+ + " }\n "
555+ + " ]\n "
556+ + " }\n "
557+ + " ],\n "
558+ + " \" lookupService\" : \" service1\" ,\n "
559+ + " \" lookupServiceTimeout\" : \" 2s\" ,\n "
560+ + " \" maxAge\" : \" 350s\" ,\n " // Exceeds 5m limit
561+ + " \" validTargets\" : [\" a valid target\" ],"
562+ + " \" cacheSizeBytes\" : \" 1000\" ,\n "
563+ + " \" defaultTarget\" : \" us_east_1.cloudbigtable.googleapis.com\" \n "
564+ + "}" ;
565+
566+ RouteLookupConfig expectedConfig =
567+ RouteLookupConfig .builder ()
568+ .grpcKeybuilders (ImmutableList .of (
569+ GrpcKeyBuilder .create (
570+ ImmutableList .of (Name .create ("service1" , "create" )),
571+ ImmutableList .of (
572+ NameMatcher .create ("user" , ImmutableList .of ("User" , "Parent" )),
573+ NameMatcher .create ("id" , ImmutableList .of ("X-Google-Id" ))),
574+ ExtraKeys .DEFAULT ,
575+ ImmutableMap .<String , String >of ())))
576+ .lookupService ("service1" )
577+ .lookupServiceTimeoutInNanos (TimeUnit .SECONDS .toNanos (2 ))
578+ // Should be clamped to 300s (5m) because staleAge is missing
579+ .maxAgeInNanos (TimeUnit .MINUTES .toNanos (5 ))
580+ .staleAgeInNanos (TimeUnit .MINUTES .toNanos (5 ))
581+ .cacheSizeBytes (1000 )
582+ .defaultTarget ("us_east_1.cloudbigtable.googleapis.com" )
583+ .build ();
584+
585+ RouteLookupConfigConverter converter = new RouteLookupConfigConverter ();
586+ @ SuppressWarnings ("unchecked" )
587+ Map <String , ?> parsedJson = (Map <String , ?>) JsonParser .parse (jsonStr );
588+ RouteLookupConfig converted = converter .convert (parsedJson );
589+ assertThat (converted ).isEqualTo (expectedConfig );
590+ }
591+
533592 @ Test
534593 public void convert_jsonRlsConfig_keyBuilderWithoutName () throws IOException {
535594 String jsonStr = "{\n "
0 commit comments