| 
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