|
28 | 28 | import static org.junit.jupiter.api.Assertions.assertNotNull;
|
29 | 29 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
30 | 30 | import static org.mockito.ArgumentMatchers.any;
|
| 31 | +import static org.mockito.BDDMockito.given; |
| 32 | +import static org.mockito.Mockito.doAnswer; |
31 | 33 | import static org.mockito.Mockito.mock;
|
32 | 34 | import static org.mockito.Mockito.never;
|
33 | 35 | import static org.mockito.Mockito.startsWith;
|
|
54 | 56 | import java.util.List;
|
55 | 57 | import java.util.Map;
|
56 | 58 | import java.util.Set;
|
| 59 | +import java.util.concurrent.CompletableFuture; |
57 | 60 | import org.junit.jupiter.api.Disabled;
|
58 | 61 | import org.junit.jupiter.api.Test;
|
59 | 62 | import org.junit.jupiter.params.ParameterizedTest;
|
@@ -525,6 +528,35 @@ void shouldFailImmediatelyOnUnsupportedFeatureException() {
|
525 | 528 | verify(table).forget(A);
|
526 | 529 | }
|
527 | 530 |
|
| 531 | + @Test |
| 532 | + void shouldLogScopedIPV6AddressWithStringFormattingLogger() throws UnknownHostException { |
| 533 | + // GIVEN |
| 534 | + var initialRouter = new BoltServerAddress("initialRouter", 7687); |
| 535 | + var compositionProvider = compositionProviderMock(Collections.emptyMap()); |
| 536 | + var resolver = resolverMock(initialRouter, initialRouter); |
| 537 | + var domainNameResolver = mock(DomainNameResolver.class); |
| 538 | + var address = mock(InetAddress.class); |
| 539 | + given(address.getHostAddress()).willReturn("fe80:0:0:0:ce66:1564:db8q:94b6%6"); |
| 540 | + given(domainNameResolver.resolve(initialRouter.host())).willReturn(new InetAddress[] {address}); |
| 541 | + var table = routingTableMock(true); |
| 542 | + var pool = mock(ConnectionPool.class); |
| 543 | + given(pool.acquire(any(), any())) |
| 544 | + .willReturn(CompletableFuture.failedFuture(new ServiceUnavailableException("not available"))); |
| 545 | + var logging = mock(Logging.class); |
| 546 | + var logger = mock(Logger.class); |
| 547 | + given(logging.getLog(any(Class.class))).willReturn(logger); |
| 548 | + doAnswer(invocationOnMock -> String.format(invocationOnMock.getArgument(0), invocationOnMock.getArgument(1))) |
| 549 | + .when(logger) |
| 550 | + .warn(any()); |
| 551 | + var rediscovery = |
| 552 | + new RediscoveryImpl(initialRouter, compositionProvider, resolver, logging, domainNameResolver); |
| 553 | + |
| 554 | + // WHEN & THEN |
| 555 | + assertThrows( |
| 556 | + ServiceUnavailableException.class, |
| 557 | + () -> await(rediscovery.lookupClusterComposition(table, pool, Collections.emptySet(), null, null))); |
| 558 | + } |
| 559 | + |
528 | 560 | private Rediscovery newRediscovery(
|
529 | 561 | BoltServerAddress initialRouter,
|
530 | 562 | ClusterCompositionProvider compositionProvider,
|
|
0 commit comments