rls: request factory prepends leading '/' (#7141)

This commit is contained in:
Jihun Cho 2020-06-18 17:12:19 -07:00 committed by GitHub
parent 613439c97e
commit 8ab01c1fe6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 11 additions and 11 deletions

View File

@ -41,7 +41,7 @@ final class RlsRequestFactory {
private final String target;
/**
* schema: Path(serviceName/methodName or serviceName/*), rls request headerName, header fields.
* schema: Path(/serviceName/methodName or /serviceName/*), rls request headerName, header fields.
*/
private final Table<String, String, NameMatcher> keyBuilderTable;
@ -60,7 +60,7 @@ final class RlsRequestFactory {
String method =
name.getMethod() == null || name.getMethod().isEmpty()
? "*" : name.getMethod();
String path = name.getService() + "/" + method;
String path = "/" + name.getService() + "/" + method;
table.put(path, nameMatcher.getKey(), nameMatcher);
}
}
@ -73,11 +73,11 @@ final class RlsRequestFactory {
RouteLookupRequest create(String service, String method, Metadata metadata) {
checkNotNull(service, "service");
checkNotNull(method, "method");
String path = service + "/" + method;
String path = "/" + service + "/" + method;
Map<String, NameMatcher> keyBuilder = keyBuilderTable.row(path);
// if no matching keyBuilder found, fall back to wildcard match (ServiceName/*)
if (keyBuilder.isEmpty()) {
keyBuilder = keyBuilderTable.row(service + "/*");
keyBuilder = keyBuilderTable.row("/" + service + "/*");
}
Map<String, String> rlsRequestHeaders = createRequestHeaders(metadata, keyBuilder);
return new RouteLookupRequest(target, path, "grpc", rlsRequestHeaders);

View File

@ -140,10 +140,10 @@ public class RlsLoadBalancerTest {
fakeRlsServerImpl.setLookupTable(
ImmutableMap.of(
new RouteLookupRequest(
"localhost:8972", "com.google/Search", "grpc", ImmutableMap.<String, String>of()),
"localhost:8972", "/com.google/Search", "grpc", ImmutableMap.<String, String>of()),
new RouteLookupResponse(ImmutableList.of("wilderness"), "where are you?"),
new RouteLookupRequest(
"localhost:8972", "com.google/Rescue", "grpc", ImmutableMap.<String, String>of()),
"localhost:8972", "/com.google/Rescue", "grpc", ImmutableMap.<String, String>of()),
new RouteLookupResponse(ImmutableList.of("civilization"), "you are safe")));
RlsLoadBalancerProvider provider = new RlsLoadBalancerProvider();

View File

@ -77,7 +77,7 @@ public class RlsRequestFactoryTest {
RouteLookupRequest request = factory.create("com.google.service1", "Create", metadata);
assertThat(request.getTargetType()).isEqualTo("grpc");
assertThat(request.getPath()).isEqualTo("com.google.service1/Create");
assertThat(request.getPath()).isEqualTo("/com.google.service1/Create");
assertThat(request.getServer()).isEqualTo("foo.google.com");
assertThat(request.getKeyMap()).containsExactly("user", "test", "id", "123");
}
@ -106,7 +106,7 @@ public class RlsRequestFactoryTest {
RouteLookupRequest request = factory.create("com.google.service1" , "Update", metadata);
assertThat(request.getTargetType()).isEqualTo("grpc");
assertThat(request.getPath()).isEqualTo("com.google.service1/Update");
assertThat(request.getPath()).isEqualTo("/com.google.service1/Update");
assertThat(request.getServer()).isEqualTo("foo.google.com");
assertThat(request.getKeyMap()).containsExactly("user", "test", "password", "hunter2");
}
@ -121,7 +121,7 @@ public class RlsRequestFactoryTest {
RouteLookupRequest request = factory.create("com.google.service1", "Update", metadata);
assertThat(request.getTargetType()).isEqualTo("grpc");
assertThat(request.getPath()).isEqualTo("com.google.service1/Update");
assertThat(request.getPath()).isEqualTo("/com.google.service1/Update");
assertThat(request.getServer()).isEqualTo("foo.google.com");
assertThat(request.getKeyMap()).containsExactly("user", "test");
}
@ -136,7 +136,7 @@ public class RlsRequestFactoryTest {
RouteLookupRequest request = factory.create("abc.def.service999", "Update", metadata);
assertThat(request.getTargetType()).isEqualTo("grpc");
assertThat(request.getPath()).isEqualTo("abc.def.service999/Update");
assertThat(request.getPath()).isEqualTo("/abc.def.service999/Update");
assertThat(request.getServer()).isEqualTo("foo.google.com");
assertThat(request.getKeyMap()).isEmpty();
}
@ -151,7 +151,7 @@ public class RlsRequestFactoryTest {
RouteLookupRequest request = factory.create("com.google.service3", "Update", metadata);
assertThat(request.getTargetType()).isEqualTo("grpc");
assertThat(request.getPath()).isEqualTo("com.google.service3/Update");
assertThat(request.getPath()).isEqualTo("/com.google.service3/Update");
assertThat(request.getServer()).isEqualTo("foo.google.com");
assertThat(request.getKeyMap()).containsExactly("user", "test");
}