|
17 | 17 | package io.grpc.xds; |
18 | 18 |
|
19 | 19 | import static com.google.common.truth.Truth.assertThat; |
20 | | -import static org.junit.Assert.assertThrows; |
21 | 20 | import static org.mockito.Mockito.mock; |
22 | 21 |
|
23 | 22 | import com.google.common.collect.ImmutableMap; |
@@ -89,170 +88,6 @@ public void findVirtualHostForHostName_asteriskMatchAnyDomain() { |
89 | 88 | .isEqualTo(vHost1); |
90 | 89 | } |
91 | 90 |
|
92 | | - @Test |
93 | | - public void findVirtualHostForHostName_trailingDot() { |
94 | | - // FQDN (trailing dot) is semantically equivalent to the relative form |
95 | | - // per RFC 1034 Section 3.1. |
96 | | - List<Route> routes = Collections.emptyList(); |
97 | | - VirtualHost vHost1 = VirtualHost.create("virtualhost01.googleapis.com", |
98 | | - Collections.singletonList("a.googleapis.com"), routes, |
99 | | - ImmutableMap.of()); |
100 | | - VirtualHost vHost2 = VirtualHost.create("virtualhost02.googleapis.com", |
101 | | - Collections.singletonList("*.googleapis.com"), routes, |
102 | | - ImmutableMap.of()); |
103 | | - VirtualHost vHost3 = VirtualHost.create("virtualhost03.googleapis.com", |
104 | | - Collections.singletonList("*"), routes, |
105 | | - ImmutableMap.of()); |
106 | | - List<VirtualHost> virtualHosts = Arrays.asList(vHost1, vHost2, vHost3); |
107 | | - |
108 | | - // Trailing dot in hostName, exact match. |
109 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
110 | | - virtualHosts, "a.googleapis.com.")).isEqualTo(vHost1); |
111 | | - // Trailing dot in hostName, wildcard match. |
112 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
113 | | - virtualHosts, "b.googleapis.com.")).isEqualTo(vHost2); |
114 | | - |
115 | | - // Trailing dot in domain pattern, exact match. |
116 | | - VirtualHost vHost4 = VirtualHost.create("virtualhost04.googleapis.com", |
117 | | - Collections.singletonList("a.googleapis.com."), routes, |
118 | | - ImmutableMap.of()); |
119 | | - List<VirtualHost> virtualHosts2 = |
120 | | - Arrays.asList(vHost4, vHost2, vHost3); |
121 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
122 | | - virtualHosts2, "a.googleapis.com")).isEqualTo(vHost4); |
123 | | - |
124 | | - // Trailing dot in both hostName and domain pattern. |
125 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
126 | | - virtualHosts2, "a.googleapis.com.")).isEqualTo(vHost4); |
127 | | - |
128 | | - // Trailing dot in domain pattern, wildcard match. |
129 | | - VirtualHost vHost5 = VirtualHost.create("virtualhost05.googleapis.com", |
130 | | - Collections.singletonList("*.googleapis.com."), routes, |
131 | | - ImmutableMap.of()); |
132 | | - List<VirtualHost> virtualHosts3 = |
133 | | - Arrays.asList(vHost5, vHost3); |
134 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
135 | | - virtualHosts3, "b.googleapis.com")).isEqualTo(vHost5); |
136 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
137 | | - virtualHosts3, "b.googleapis.com.")).isEqualTo(vHost5); |
138 | | - } |
139 | | - |
140 | | - @Test |
141 | | - public void findVirtualHostForHostName_exactMatch() { |
142 | | - List<Route> routes = Collections.emptyList(); |
143 | | - VirtualHost vHostFoo = VirtualHost.create("vhost-foo", |
144 | | - Collections.singletonList("foo.googleapis.com"), routes, |
145 | | - ImmutableMap.of()); |
146 | | - VirtualHost vHostBar = VirtualHost.create("vhost-bar", |
147 | | - Collections.singletonList("bar.googleapis.com"), routes, |
148 | | - ImmutableMap.of()); |
149 | | - List<VirtualHost> virtualHosts = |
150 | | - Arrays.asList(vHostFoo, vHostBar); |
151 | | - |
152 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
153 | | - virtualHosts, "foo.googleapis.com")).isEqualTo(vHostFoo); |
154 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
155 | | - virtualHosts, "bar.googleapis.com")).isEqualTo(vHostBar); |
156 | | - // No match returns null. |
157 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
158 | | - virtualHosts, "baz.googleapis.com")).isNull(); |
159 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
160 | | - virtualHosts, "foo.googleapis")).isNull(); |
161 | | - } |
162 | | - |
163 | | - @Test |
164 | | - public void findVirtualHostForHostName_invalidHostName() { |
165 | | - List<Route> routes = Collections.emptyList(); |
166 | | - VirtualHost vHost = VirtualHost.create("vhost", |
167 | | - Collections.singletonList("a.googleapis.com"), routes, |
168 | | - ImmutableMap.of()); |
169 | | - List<VirtualHost> virtualHosts = Collections.singletonList(vHost); |
170 | | - |
171 | | - // Empty hostName. |
172 | | - assertThrows(IllegalArgumentException.class, |
173 | | - () -> RoutingUtils.findVirtualHostForHostName( |
174 | | - virtualHosts, "")); |
175 | | - // HostName starting with dot. |
176 | | - assertThrows(IllegalArgumentException.class, |
177 | | - () -> RoutingUtils.findVirtualHostForHostName( |
178 | | - virtualHosts, ".a.googleapis.com")); |
179 | | - } |
180 | | - |
181 | | - @Test |
182 | | - public void findVirtualHostForHostName_invalidPattern() { |
183 | | - List<Route> routes = Collections.emptyList(); |
184 | | - // Empty domain pattern. |
185 | | - VirtualHost vHostEmpty = VirtualHost.create("vhost-empty", |
186 | | - Collections.singletonList(""), routes, |
187 | | - ImmutableMap.of()); |
188 | | - assertThrows(IllegalArgumentException.class, |
189 | | - () -> RoutingUtils.findVirtualHostForHostName( |
190 | | - Collections.singletonList(vHostEmpty), |
191 | | - "a.googleapis.com")); |
192 | | - // Domain pattern starting with dot. |
193 | | - VirtualHost vHostDot = VirtualHost.create("vhost-dot", |
194 | | - Collections.singletonList(".a.googleapis.com"), routes, |
195 | | - ImmutableMap.of()); |
196 | | - assertThrows(IllegalArgumentException.class, |
197 | | - () -> RoutingUtils.findVirtualHostForHostName( |
198 | | - Collections.singletonList(vHostDot), |
199 | | - "a.googleapis.com")); |
200 | | - } |
201 | | - |
202 | | - @Test |
203 | | - public void findVirtualHostForHostName_prefixWildcard() { |
204 | | - List<Route> routes = Collections.emptyList(); |
205 | | - VirtualHost vHostWild = VirtualHost.create("vhost-wild", |
206 | | - Collections.singletonList("*.foo.googleapis.com"), |
207 | | - routes, ImmutableMap.of()); |
208 | | - VirtualHost vHostOther = VirtualHost.create("vhost-other", |
209 | | - Collections.singletonList("other.googleapis.com"), |
210 | | - routes, ImmutableMap.of()); |
211 | | - List<VirtualHost> virtualHosts = |
212 | | - Arrays.asList(vHostWild, vHostOther); |
213 | | - |
214 | | - // Prefix wildcard matches. |
215 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
216 | | - virtualHosts, "bar.foo.googleapis.com")) |
217 | | - .isEqualTo(vHostWild); |
218 | | - // Base domain without subdomain does not match *.foo.googleapis.com. |
219 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
220 | | - virtualHosts, "foo.googleapis.com")).isNull(); |
221 | | - |
222 | | - // Longer prefix wildcard is preferred over shorter one. |
223 | | - VirtualHost vHostLong = VirtualHost.create("vhost-long", |
224 | | - Collections.singletonList("*.bar.foo.googleapis.com"), |
225 | | - routes, ImmutableMap.of()); |
226 | | - List<VirtualHost> virtualHosts2 = |
227 | | - Arrays.asList(vHostLong, vHostWild); |
228 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
229 | | - virtualHosts2, "baz.bar.foo.googleapis.com")) |
230 | | - .isEqualTo(vHostLong); |
231 | | - } |
232 | | - |
233 | | - @Test |
234 | | - public void findVirtualHostForHostName_postfixWildcard() { |
235 | | - List<Route> routes = Collections.emptyList(); |
236 | | - VirtualHost vHostWild = VirtualHost.create("vhost-wild", |
237 | | - Collections.singletonList("foo.*"), routes, |
238 | | - ImmutableMap.of()); |
239 | | - VirtualHost vHostOther = VirtualHost.create("vhost-other", |
240 | | - Collections.singletonList("bar.googleapis.com"), |
241 | | - routes, ImmutableMap.of()); |
242 | | - List<VirtualHost> virtualHosts = |
243 | | - Arrays.asList(vHostWild, vHostOther); |
244 | | - |
245 | | - // Postfix wildcard matches. |
246 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
247 | | - virtualHosts, "foo.googleapis.com")) |
248 | | - .isEqualTo(vHostWild); |
249 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
250 | | - virtualHosts, "foo.com")).isEqualTo(vHostWild); |
251 | | - // Different prefix does not match foo.*. |
252 | | - assertThat(RoutingUtils.findVirtualHostForHostName( |
253 | | - virtualHosts, "bar.foo.googleapis.com")).isNull(); |
254 | | - } |
255 | | - |
256 | 91 | @Test |
257 | 92 | public void routeMatching_pathOnly() { |
258 | 93 | Metadata headers = new Metadata(); |
|
0 commit comments