Skip to content

Commit cb2e509

Browse files
committed
test(xds): Add trailing dot test for findVirtualHostForHostName in RoutingUtilsTest
1 parent 4adb94d commit cb2e509

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

xds/src/test/java/io/grpc/xds/RoutingUtilsTest.java

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,54 @@ public void findVirtualHostForHostName_asteriskMatchAnyDomain() {
8888
.isEqualTo(vHost1);
8989
}
9090

91+
@Test
92+
public void findVirtualHostForHostName_trailingDot() {
93+
// FQDN (trailing dot) is semantically equivalent to the relative form
94+
// per RFC 1034 Section 3.1.
95+
List<Route> routes = Collections.emptyList();
96+
VirtualHost vHost1 = VirtualHost.create("virtualhost01.googleapis.com",
97+
Collections.singletonList("a.googleapis.com"), routes,
98+
ImmutableMap.of());
99+
VirtualHost vHost2 = VirtualHost.create("virtualhost02.googleapis.com",
100+
Collections.singletonList("*.googleapis.com"), routes,
101+
ImmutableMap.of());
102+
VirtualHost vHost3 = VirtualHost.create("virtualhost03.googleapis.com",
103+
Collections.singletonList("*"), routes,
104+
ImmutableMap.of());
105+
List<VirtualHost> virtualHosts = Arrays.asList(vHost1, vHost2, vHost3);
106+
107+
// Trailing dot in hostName, exact match.
108+
assertThat(RoutingUtils.findVirtualHostForHostName(
109+
virtualHosts, "a.googleapis.com.")).isEqualTo(vHost1);
110+
// Trailing dot in hostName, wildcard match.
111+
assertThat(RoutingUtils.findVirtualHostForHostName(
112+
virtualHosts, "b.googleapis.com.")).isEqualTo(vHost2);
113+
114+
// Trailing dot in domain pattern, exact match.
115+
VirtualHost vHost4 = VirtualHost.create("virtualhost04.googleapis.com",
116+
Collections.singletonList("a.googleapis.com."), routes,
117+
ImmutableMap.of());
118+
List<VirtualHost> virtualHosts2 =
119+
Arrays.asList(vHost4, vHost2, vHost3);
120+
assertThat(RoutingUtils.findVirtualHostForHostName(
121+
virtualHosts2, "a.googleapis.com")).isEqualTo(vHost4);
122+
123+
// Trailing dot in both hostName and domain pattern.
124+
assertThat(RoutingUtils.findVirtualHostForHostName(
125+
virtualHosts2, "a.googleapis.com.")).isEqualTo(vHost4);
126+
127+
// Trailing dot in domain pattern, wildcard match.
128+
VirtualHost vHost5 = VirtualHost.create("virtualhost05.googleapis.com",
129+
Collections.singletonList("*.googleapis.com."), routes,
130+
ImmutableMap.of());
131+
List<VirtualHost> virtualHosts3 =
132+
Arrays.asList(vHost5, vHost3);
133+
assertThat(RoutingUtils.findVirtualHostForHostName(
134+
virtualHosts3, "b.googleapis.com")).isEqualTo(vHost5);
135+
assertThat(RoutingUtils.findVirtualHostForHostName(
136+
virtualHosts3, "b.googleapis.com.")).isEqualTo(vHost5);
137+
}
138+
91139
@Test
92140
public void routeMatching_pathOnly() {
93141
Metadata headers = new Metadata();

0 commit comments

Comments
 (0)