mirror of https://github.com/grpc/grpc-java.git
rls: request factory prepends leading '/' (#7141)
This commit is contained in:
parent
613439c97e
commit
8ab01c1fe6
|
|
@ -41,7 +41,7 @@ final class RlsRequestFactory {
|
||||||
|
|
||||||
private final String target;
|
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;
|
private final Table<String, String, NameMatcher> keyBuilderTable;
|
||||||
|
|
||||||
|
|
@ -60,7 +60,7 @@ final class RlsRequestFactory {
|
||||||
String method =
|
String method =
|
||||||
name.getMethod() == null || name.getMethod().isEmpty()
|
name.getMethod() == null || name.getMethod().isEmpty()
|
||||||
? "*" : name.getMethod();
|
? "*" : name.getMethod();
|
||||||
String path = name.getService() + "/" + method;
|
String path = "/" + name.getService() + "/" + method;
|
||||||
table.put(path, nameMatcher.getKey(), nameMatcher);
|
table.put(path, nameMatcher.getKey(), nameMatcher);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -73,11 +73,11 @@ final class RlsRequestFactory {
|
||||||
RouteLookupRequest create(String service, String method, Metadata metadata) {
|
RouteLookupRequest create(String service, String method, Metadata metadata) {
|
||||||
checkNotNull(service, "service");
|
checkNotNull(service, "service");
|
||||||
checkNotNull(method, "method");
|
checkNotNull(method, "method");
|
||||||
String path = service + "/" + method;
|
String path = "/" + service + "/" + method;
|
||||||
Map<String, NameMatcher> keyBuilder = keyBuilderTable.row(path);
|
Map<String, NameMatcher> keyBuilder = keyBuilderTable.row(path);
|
||||||
// if no matching keyBuilder found, fall back to wildcard match (ServiceName/*)
|
// if no matching keyBuilder found, fall back to wildcard match (ServiceName/*)
|
||||||
if (keyBuilder.isEmpty()) {
|
if (keyBuilder.isEmpty()) {
|
||||||
keyBuilder = keyBuilderTable.row(service + "/*");
|
keyBuilder = keyBuilderTable.row("/" + service + "/*");
|
||||||
}
|
}
|
||||||
Map<String, String> rlsRequestHeaders = createRequestHeaders(metadata, keyBuilder);
|
Map<String, String> rlsRequestHeaders = createRequestHeaders(metadata, keyBuilder);
|
||||||
return new RouteLookupRequest(target, path, "grpc", rlsRequestHeaders);
|
return new RouteLookupRequest(target, path, "grpc", rlsRequestHeaders);
|
||||||
|
|
|
||||||
|
|
@ -140,10 +140,10 @@ public class RlsLoadBalancerTest {
|
||||||
fakeRlsServerImpl.setLookupTable(
|
fakeRlsServerImpl.setLookupTable(
|
||||||
ImmutableMap.of(
|
ImmutableMap.of(
|
||||||
new RouteLookupRequest(
|
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 RouteLookupResponse(ImmutableList.of("wilderness"), "where are you?"),
|
||||||
new RouteLookupRequest(
|
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")));
|
new RouteLookupResponse(ImmutableList.of("civilization"), "you are safe")));
|
||||||
|
|
||||||
RlsLoadBalancerProvider provider = new RlsLoadBalancerProvider();
|
RlsLoadBalancerProvider provider = new RlsLoadBalancerProvider();
|
||||||
|
|
|
||||||
|
|
@ -77,7 +77,7 @@ public class RlsRequestFactoryTest {
|
||||||
|
|
||||||
RouteLookupRequest request = factory.create("com.google.service1", "Create", metadata);
|
RouteLookupRequest request = factory.create("com.google.service1", "Create", metadata);
|
||||||
assertThat(request.getTargetType()).isEqualTo("grpc");
|
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.getServer()).isEqualTo("foo.google.com");
|
||||||
assertThat(request.getKeyMap()).containsExactly("user", "test", "id", "123");
|
assertThat(request.getKeyMap()).containsExactly("user", "test", "id", "123");
|
||||||
}
|
}
|
||||||
|
|
@ -106,7 +106,7 @@ public class RlsRequestFactoryTest {
|
||||||
RouteLookupRequest request = factory.create("com.google.service1" , "Update", metadata);
|
RouteLookupRequest request = factory.create("com.google.service1" , "Update", metadata);
|
||||||
|
|
||||||
assertThat(request.getTargetType()).isEqualTo("grpc");
|
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.getServer()).isEqualTo("foo.google.com");
|
||||||
assertThat(request.getKeyMap()).containsExactly("user", "test", "password", "hunter2");
|
assertThat(request.getKeyMap()).containsExactly("user", "test", "password", "hunter2");
|
||||||
}
|
}
|
||||||
|
|
@ -121,7 +121,7 @@ public class RlsRequestFactoryTest {
|
||||||
RouteLookupRequest request = factory.create("com.google.service1", "Update", metadata);
|
RouteLookupRequest request = factory.create("com.google.service1", "Update", metadata);
|
||||||
|
|
||||||
assertThat(request.getTargetType()).isEqualTo("grpc");
|
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.getServer()).isEqualTo("foo.google.com");
|
||||||
assertThat(request.getKeyMap()).containsExactly("user", "test");
|
assertThat(request.getKeyMap()).containsExactly("user", "test");
|
||||||
}
|
}
|
||||||
|
|
@ -136,7 +136,7 @@ public class RlsRequestFactoryTest {
|
||||||
RouteLookupRequest request = factory.create("abc.def.service999", "Update", metadata);
|
RouteLookupRequest request = factory.create("abc.def.service999", "Update", metadata);
|
||||||
|
|
||||||
assertThat(request.getTargetType()).isEqualTo("grpc");
|
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.getServer()).isEqualTo("foo.google.com");
|
||||||
assertThat(request.getKeyMap()).isEmpty();
|
assertThat(request.getKeyMap()).isEmpty();
|
||||||
}
|
}
|
||||||
|
|
@ -151,7 +151,7 @@ public class RlsRequestFactoryTest {
|
||||||
RouteLookupRequest request = factory.create("com.google.service3", "Update", metadata);
|
RouteLookupRequest request = factory.create("com.google.service3", "Update", metadata);
|
||||||
|
|
||||||
assertThat(request.getTargetType()).isEqualTo("grpc");
|
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.getServer()).isEqualTo("foo.google.com");
|
||||||
assertThat(request.getKeyMap()).containsExactly("user", "test");
|
assertThat(request.getKeyMap()).containsExactly("user", "test");
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue