Skip to content

Commit dcb9a4e

Browse files
shivaspeaksAgraVator
authored andcommitted
rls: verify maxAge is clamped if staleAge is not set (grpc#12647)
1 parent 56e32fd commit dcb9a4e

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

rls/src/test/java/io/grpc/rls/RlsProtoConvertersTest.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)