This is an automated email from the ASF dual-hosted git repository.
shenwenbing pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/bookkeeper.git
The following commit(s) were added to refs/heads/master by this push:
new d08fcb7094 test: Use mock to eliminate BookieSocketAddressTest
dependency on local system configuration (#4711)
d08fcb7094 is described below
commit d08fcb7094f404aca5f0351feedd744d40ea2602
Author: JiangHaiting <[email protected]>
AuthorDate: Wed Mar 18 17:35:26 2026 +0800
test: Use mock to eliminate BookieSocketAddressTest dependency on local
system configuration (#4711)
- Replace direct network calls with Mockito mocks in BookieSocketAddressTest
- Add mockHostnameIPSetup helper method to simulate DNS.getDefaultIP
behavior
- Remove dependency on actual network configuration and loopback addresses
- Ensure consistent test behavior across different environments
- All 4 existing tests pass with the mock implementation
Co-authored-by: JiangHaiting <[email protected]>
Co-authored-by: Lari Hotari <[email protected]>
---
.../bookkeeper/bookie/BookieSocketAddressTest.java | 49 +++++++++++++++-------
1 file changed, 33 insertions(+), 16 deletions(-)
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieSocketAddressTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieSocketAddressTest.java
index 8962318486..4611a2f29c 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieSocketAddressTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieSocketAddressTest.java
@@ -22,14 +22,22 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
import com.google.common.net.InetAddresses;
-import java.net.InetAddress;
import java.net.UnknownHostException;
import org.apache.bookkeeper.conf.ServerConfiguration;
import org.apache.bookkeeper.net.BookieSocketAddress;
+import org.apache.bookkeeper.net.DNS;
import org.junit.Test;
+import org.mockito.MockedStatic;
+import org.mockito.Mockito;
public class BookieSocketAddressTest {
+ private MockedStatic<DNS> mockHostnameIPSetup(String mockHostAddress) {
+ MockedStatic<DNS> mockedDNS = Mockito.mockStatic(DNS.class);
+ mockedDNS.when(() ->
DNS.getDefaultIP("default")).thenReturn(mockHostAddress);
+ return mockedDNS;
+ }
+
private void testAdvertisedWithLoopbackAddress(String address) throws
UnknownHostException {
ServerConfiguration conf = new ServerConfiguration();
conf.setAdvertisedAddress(address);
@@ -49,29 +57,38 @@ public class BookieSocketAddressTest {
@Test
public void testAdvertisedWithNonLoopbackAddress() throws
UnknownHostException {
- String hostAddress = InetAddress.getLocalHost().getHostAddress();
- if (hostAddress == null) {
- throw new UnknownHostException("Host address is null");
+ // Mock to return a non-loopback address
+ try (MockedStatic<DNS> mockedDNS =
mockHostnameIPSetup("192.168.1.100")) {
+ ServerConfiguration conf = new ServerConfiguration();
+ conf.setAllowLoopback(false);
+ conf.setAdvertisedAddress("192.168.1.100");
+ BookieSocketAddress bookieAddress = getBookieAddress(conf);
+ assertThat(bookieAddress.getHostName()).isEqualTo("192.168.1.100");
}
- ServerConfiguration conf = new ServerConfiguration();
- conf.setAllowLoopback(false);
- conf.setAdvertisedAddress(hostAddress);
- BookieSocketAddress bookieAddress = getBookieAddress(conf);
- assertThat(bookieAddress.getHostName()).isEqualTo(hostAddress);
}
@Test
public void testBookieAddressIsIPAddressByDefault() throws
UnknownHostException {
- ServerConfiguration conf = new ServerConfiguration();
- BookieSocketAddress bookieAddress = getBookieAddress(conf);
-
assertThat(InetAddresses.isInetAddress(bookieAddress.getHostName())).isTrue();
+ // Mock to return a non-loopback address
+ try (MockedStatic<DNS> mockedDNS =
mockHostnameIPSetup("192.168.1.100")) {
+ ServerConfiguration conf = new ServerConfiguration();
+ // Do not allow loopback addresses
+ conf.setAllowLoopback(false);
+ BookieSocketAddress bookieAddress = getBookieAddress(conf);
+
assertThat(InetAddresses.isInetAddress(bookieAddress.getHostName())).isTrue();
+ }
}
@Test
public void testBookieAddressIsHostname() throws UnknownHostException {
- ServerConfiguration conf = new ServerConfiguration();
- conf.setUseHostNameAsBookieID(true);
- BookieSocketAddress bookieAddress = getBookieAddress(conf);
-
assertThat(InetAddresses.isInetAddress(bookieAddress.getHostName())).isFalse();
+ // Mock to return localhost address which can be resolved to a hostname
+ try (MockedStatic<DNS> mockedDNS = mockHostnameIPSetup("127.0.0.1")) {
+ ServerConfiguration conf = new ServerConfiguration();
+ conf.setUseHostNameAsBookieID(true);
+ // Allow loopback addresses since we're testing hostname resolution
+ conf.setAllowLoopback(true);
+ BookieSocketAddress bookieAddress = getBookieAddress(conf);
+
assertThat(InetAddresses.isInetAddress(bookieAddress.getHostName())).isFalse();
+ }
}
}