|
16 | 16 |
|
17 | 17 | package com.google.cloud.spanner.connection; |
18 | 18 |
|
| 19 | +import static com.google.cloud.spanner.connection.ConnectionOptions.Builder.EXTERNAL_HOST_PATTERN; |
19 | 20 | import static com.google.cloud.spanner.connection.ConnectionOptions.Builder.SPANNER_URI_PATTERN; |
20 | 21 | import static com.google.cloud.spanner.connection.ConnectionOptions.DEFAULT_ENDPOINT; |
21 | 22 | import static com.google.cloud.spanner.connection.ConnectionOptions.determineHost; |
@@ -1211,4 +1212,40 @@ public void testEnableApiTracing() { |
1211 | 1212 | .build() |
1212 | 1213 | .isEnableApiTracing()); |
1213 | 1214 | } |
| 1215 | + |
| 1216 | + @Test |
| 1217 | + public void testExternalHostPatterns() { |
| 1218 | + Matcher matcherWithoutInstance = |
| 1219 | + EXTERNAL_HOST_PATTERN.matcher("cloudspanner://localhost:15000/databases/test-db"); |
| 1220 | + assertTrue(matcherWithoutInstance.matches()); |
| 1221 | + assertNull(matcherWithoutInstance.group("INSTANCEGROUP")); |
| 1222 | + assertEquals("test-db", matcherWithoutInstance.group("DATABASEGROUP")); |
| 1223 | + Matcher matcherWithProperty = |
| 1224 | + EXTERNAL_HOST_PATTERN.matcher( |
| 1225 | + "cloudspanner://localhost:15000/instances/default/databases/singers-db?usePlainText=true"); |
| 1226 | + assertTrue(matcherWithProperty.matches()); |
| 1227 | + assertEquals("default", matcherWithProperty.group("INSTANCEGROUP")); |
| 1228 | + assertEquals("singers-db", matcherWithProperty.group("DATABASEGROUP")); |
| 1229 | + Matcher matcherWithoutPort = |
| 1230 | + EXTERNAL_HOST_PATTERN.matcher( |
| 1231 | + "cloudspanner://localhost/instances/default/databases/test-db"); |
| 1232 | + assertTrue(matcherWithoutPort.matches()); |
| 1233 | + assertEquals("default", matcherWithoutPort.group("INSTANCEGROUP")); |
| 1234 | + assertEquals("test-db", matcherWithoutPort.group("DATABASEGROUP")); |
| 1235 | + assertEquals( |
| 1236 | + "http://localhost:15000", |
| 1237 | + determineHost( |
| 1238 | + matcherWithoutPort, |
| 1239 | + DEFAULT_ENDPOINT, |
| 1240 | + /* autoConfigEmulator= */ true, |
| 1241 | + /* usePlainText= */ true, |
| 1242 | + ImmutableMap.of())); |
| 1243 | + Matcher matcherWithProject = |
| 1244 | + EXTERNAL_HOST_PATTERN.matcher( |
| 1245 | + "cloudspanner://localhost:15000/projects/default/instances/default/databases/singers-db"); |
| 1246 | + assertFalse(matcherWithProject.matches()); |
| 1247 | + Matcher matcherWithoutHost = |
| 1248 | + EXTERNAL_HOST_PATTERN.matcher("cloudspanner:/instances/default/databases/singers-db"); |
| 1249 | + assertFalse(matcherWithoutHost.matches()); |
| 1250 | + } |
1214 | 1251 | } |
0 commit comments