|
29 | 29 | import static org.junit.jupiter.api.Assertions.assertNotNull;
|
30 | 30 | import static org.junit.jupiter.api.Assertions.assertThrows;
|
31 | 31 | import static org.mockito.ArgumentMatchers.any;
|
| 32 | +import static org.mockito.BDDMockito.given; |
| 33 | +import static org.mockito.Mockito.doAnswer; |
32 | 34 | import static org.mockito.Mockito.mock;
|
33 | 35 | import static org.mockito.Mockito.never;
|
34 | 36 | import static org.mockito.Mockito.startsWith;
|
|
52 | 54 | import java.net.InetAddress;
|
53 | 55 | import java.net.UnknownHostException;
|
54 | 56 | import java.util.Arrays;
|
| 57 | +import java.util.Collections; |
55 | 58 | import java.util.HashMap;
|
56 | 59 | import java.util.List;
|
57 | 60 | import java.util.Map;
|
| 61 | +import java.util.concurrent.CompletableFuture; |
58 | 62 | import org.junit.jupiter.api.Test;
|
59 | 63 | import org.junit.jupiter.params.ParameterizedTest;
|
60 | 64 | import org.junit.jupiter.params.provider.ValueSource;
|
@@ -524,6 +528,43 @@ void shouldResolveToIP() throws UnknownHostException {
|
524 | 528 | assertEquals(new BoltServerAddress(A.host(), localhost.getHostAddress(), A.port()), addresses.get(0));
|
525 | 529 | }
|
526 | 530 |
|
| 531 | + @Test |
| 532 | + void shouldLogScopedIPV6AddressWithStringFormattingLogger() throws UnknownHostException { |
| 533 | + // GIVEN |
| 534 | + BoltServerAddress initialRouter = new BoltServerAddress("initialRouter", 7687); |
| 535 | + ClusterCompositionProvider compositionProvider = compositionProviderMock(Collections.emptyMap()); |
| 536 | + ServerAddressResolver resolver = resolverMock(initialRouter, initialRouter); |
| 537 | + DomainNameResolver domainNameResolver = mock(DomainNameResolver.class); |
| 538 | + InetAddress 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 | + RoutingTable table = routingTableMock(true); |
| 542 | + ConnectionPool pool = mock(ConnectionPool.class); |
| 543 | + CompletableFuture<Connection> failedAcquisition = new CompletableFuture<>(); |
| 544 | + failedAcquisition.completeExceptionally(new ServiceUnavailableException("not available")); |
| 545 | + given(pool.acquire(any())).willReturn(failedAcquisition); |
| 546 | + Logging logging = mock(Logging.class); |
| 547 | + Logger logger = mock(Logger.class); |
| 548 | + given(logging.getLog(any(Class.class))).willReturn(logger); |
| 549 | + doAnswer(invocationOnMock -> String.format(invocationOnMock.getArgument(0), invocationOnMock.getArgument(1))) |
| 550 | + .when(logger) |
| 551 | + .warn(any()); |
| 552 | + RoutingSettings settings = new RoutingSettings(1, 0, 0); |
| 553 | + RediscoveryImpl rediscovery = new RediscoveryImpl( |
| 554 | + initialRouter, |
| 555 | + settings, |
| 556 | + compositionProvider, |
| 557 | + GlobalEventExecutor.INSTANCE, |
| 558 | + resolver, |
| 559 | + logging, |
| 560 | + domainNameResolver); |
| 561 | + |
| 562 | + // WHEN & THEN |
| 563 | + assertThrows( |
| 564 | + ServiceUnavailableException.class, |
| 565 | + () -> await(rediscovery.lookupClusterComposition(table, pool, null, null))); |
| 566 | + } |
| 567 | + |
527 | 568 | private Rediscovery newRediscovery(
|
528 | 569 | BoltServerAddress initialRouter,
|
529 | 570 | ClusterCompositionProvider compositionProvider,
|
|
0 commit comments