This is an automated email from the ASF dual-hosted git repository.
sijie 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 ee2f419 Use loopback network interface for testcases.
ee2f419 is described below
commit ee2f419b77564cca2bfbf8efed2b0f4c4615d542
Author: cguttapalem <[email protected]>
AuthorDate: Fri Feb 2 16:34:12 2018 -0800
Use loopback network interface for testcases.
Descriptions of the changes in this PR:
- tests would be more reliable irrespective of the environment (and
availability of network connection), if the loopback address is used in
testsuites.
- unless loopback address is set explicitly, in my env (while on company's
VPN),
UpdateCookieCmdTest is failing most of the times.
- currently allowLoopback is set to true in BookKeeperClusterTestCase,
but it doesn't make Bookies to use loopback interface address.
- loopback network interface should be set explicitly as
listening interface to use loopback address.
Note:
1) will create Issue for this depending on the PR feedback.
2) in other places (where setAllowLoopback is set) also loopback interface
needs to be set
Author: cguttapalem <[email protected]>
Reviewers: Samuel Just <[email protected]>, Jia Zhai <None>, Sijie Guo
<[email protected]>
This closes #1097 from reddycharan/loopbackaddress
---
.../bookie/BookieInitializationTest.java | 11 +++---
.../bookie/storage/ldb/ConversionRollbackTest.java | 4 +--
.../bookie/storage/ldb/ConversionTest.java | 4 +--
.../bookie/storage/ldb/DbLedgerStorageTest.java | 7 ++--
.../storage/ldb/DbLedgerStorageWriteCacheTest.java | 4 +--
.../storage/ldb/LocationsIndexRebuildTest.java | 4 +--
.../bookkeeper/client/UpdateLedgerCmdTest.java | 1 -
.../bookkeeper/conf/TestBKConfiguration.java | 40 +++++++++++++++++++++-
.../bookkeeper/test/BookKeeperClusterTestCase.java | 6 +++-
9 files changed, 61 insertions(+), 20 deletions(-)
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
index dbfb9ab..36406ce 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/BookieInitializationTest.java
@@ -155,7 +155,7 @@ public class BookieInitializationTest extends
BookKeeperClusterTestCase {
final ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setJournalDirName(tmpDir.getPath())
.setLedgerDirNames(new String[] { tmpDir.getPath() })
- .setZkServers(null);
+ .setZkServers(null).setListeningInterface(null);
final String bkRegPath = conf.getZkAvailableBookiesPath() + "/"
+ InetAddress.getLocalHost().getHostAddress() + ":"
@@ -188,7 +188,7 @@ public class BookieInitializationTest extends
BookKeeperClusterTestCase {
final ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setJournalDirName(tmpDir.getPath())
.setLedgerDirNames(new String[] { tmpDir.getPath() })
- .setZkServers(null);
+ .setZkServers(null).setListeningInterface(null);
final String bkRegPath = conf.getZkAvailableBookiesPath() + "/"
+ InetAddress.getLocalHost().getHostAddress() + ":"
@@ -250,7 +250,7 @@ public class BookieInitializationTest extends
BookKeeperClusterTestCase {
final ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration().setZkServers(null)
.setJournalDirName(tmpDir.getPath()).setLedgerDirNames(new
String[] { tmpDir.getPath() })
- .setUseHostNameAsBookieID(true);
+ .setUseHostNameAsBookieID(true).setListeningInterface(null);
final String bkRegPath = conf.getZkAvailableBookiesPath() + "/"
+ InetAddress.getLocalHost().getCanonicalHostName() + ":" +
conf.getBookiePort();
@@ -271,7 +271,7 @@ public class BookieInitializationTest extends
BookKeeperClusterTestCase {
final ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration().setZkServers(null)
.setJournalDirName(tmpDir.getPath()).setLedgerDirNames(new
String[] { tmpDir.getPath() })
- .setUseHostNameAsBookieID(true).setUseShortHostName(true);
+
.setUseHostNameAsBookieID(true).setUseShortHostName(true).setListeningInterface(null);
final String bkRegPath = conf.getZkAvailableBookiesPath() + "/"
+
(InetAddress.getLocalHost().getCanonicalHostName().split("\\.", 2)[0]) + ":" +
conf.getBookiePort();
@@ -298,7 +298,8 @@ public class BookieInitializationTest extends
BookKeeperClusterTestCase {
final ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setJournalDirName(tmpDir.getPath())
.setLedgerDirNames(new String[] { tmpDir.getPath() })
- .setZkServers(zkUtil.getZooKeeperConnectString());
+ .setZkServers(zkUtil.getZooKeeperConnectString())
+ .setListeningInterface(null);
String bkRegPath = conf.getZkAvailableBookiesPath() + "/"
+ InetAddress.getLocalHost().getHostAddress() + ":"
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionRollbackTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionRollbackTest.java
index 75e061a..e3cec7c 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionRollbackTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionRollbackTest.java
@@ -40,6 +40,7 @@ import org.apache.bookkeeper.bookie.Checkpointer;
import org.apache.bookkeeper.bookie.InterleavedLedgerStorage;
import org.apache.bookkeeper.bookie.LedgerDirsManager;
import org.apache.bookkeeper.conf.ServerConfiguration;
+import org.apache.bookkeeper.conf.TestBKConfiguration;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.util.DiskChecker;
import org.apache.commons.io.FileUtils;
@@ -81,9 +82,8 @@ public class ConversionRollbackTest {
log.info("Using temp directory: {}", tmpDir);
- ServerConfiguration conf = new ServerConfiguration();
+ ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setLedgerDirNames(new String[] { tmpDir.toString() });
- conf.setAllowLoopback(true);
LedgerDirsManager ledgerDirsManager = new LedgerDirsManager(conf,
conf.getLedgerDirs(),
new DiskChecker(conf.getDiskUsageThreshold(),
conf.getDiskUsageWarnThreshold()));
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionTest.java
index 1816945..dbc3c97 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/ConversionTest.java
@@ -39,6 +39,7 @@ import org.apache.bookkeeper.bookie.Checkpointer;
import org.apache.bookkeeper.bookie.InterleavedLedgerStorage;
import org.apache.bookkeeper.bookie.LedgerDirsManager;
import org.apache.bookkeeper.conf.ServerConfiguration;
+import org.apache.bookkeeper.conf.TestBKConfiguration;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.util.DiskChecker;
import org.apache.commons.io.FileUtils;
@@ -78,9 +79,8 @@ public class ConversionTest {
System.out.println(tmpDir);
- ServerConfiguration conf = new ServerConfiguration();
+ ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setLedgerDirNames(new String[] { tmpDir.toString() });
- conf.setAllowLoopback(true);
LedgerDirsManager ledgerDirsManager = new LedgerDirsManager(conf,
conf.getLedgerDirs(),
new DiskChecker(conf.getDiskUsageThreshold(),
conf.getDiskUsageWarnThreshold()));
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
index 1e91c2c..4b61a65 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageTest.java
@@ -40,6 +40,7 @@ import org.apache.bookkeeper.bookie.BookieException;
import org.apache.bookkeeper.bookie.EntryLocation;
import org.apache.bookkeeper.bookie.EntryLogger;
import org.apache.bookkeeper.conf.ServerConfiguration;
+import org.apache.bookkeeper.conf.TestBKConfiguration;
import org.apache.bookkeeper.proto.BookieProtocol;
import org.junit.After;
import org.junit.Before;
@@ -62,9 +63,8 @@ public class DbLedgerStorageTest {
Bookie.checkDirectoryStructure(curDir);
int gcWaitTime = 1000;
- ServerConfiguration conf = new ServerConfiguration();
+ ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setGcWaitTime(gcWaitTime);
- conf.setAllowLoopback(true);
conf.setLedgerStorageClass(DbLedgerStorage.class.getName());
conf.setLedgerDirNames(new String[] { tmpDir.toString() });
Bookie bookie = new Bookie(conf);
@@ -229,9 +229,8 @@ public class DbLedgerStorageTest {
@Test
public void doubleDirectoryError() throws Exception {
int gcWaitTime = 1000;
- ServerConfiguration conf = new ServerConfiguration();
+ ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setGcWaitTime(gcWaitTime);
- conf.setAllowLoopback(true);
conf.setLedgerStorageClass(DbLedgerStorage.class.getName());
conf.setLedgerDirNames(new String[] { "dir1", "dir2" });
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageWriteCacheTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageWriteCacheTest.java
index 0d3f5bb..c2281a7 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageWriteCacheTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/DbLedgerStorageWriteCacheTest.java
@@ -31,6 +31,7 @@ import java.io.IOException;
import org.apache.bookkeeper.bookie.Bookie;
import org.apache.bookkeeper.conf.ServerConfiguration;
+import org.apache.bookkeeper.conf.TestBKConfiguration;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -79,9 +80,8 @@ public class DbLedgerStorageWriteCacheTest {
Bookie.checkDirectoryStructure(curDir);
int gcWaitTime = 1000;
- ServerConfiguration conf = new ServerConfiguration();
+ ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setGcWaitTime(gcWaitTime);
- conf.setAllowLoopback(true);
conf.setLedgerStorageClass(MockedDbLedgerStorage.class.getName());
conf.setProperty(DbLedgerStorage.WRITE_CACHE_MAX_SIZE_MB, 1);
conf.setLedgerDirNames(new String[] { tmpDir.toString() });
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/LocationsIndexRebuildTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/LocationsIndexRebuildTest.java
index c1f7e39..9919dce 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/LocationsIndexRebuildTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/bookie/storage/ldb/LocationsIndexRebuildTest.java
@@ -39,6 +39,7 @@ import
org.apache.bookkeeper.bookie.CheckpointSource.Checkpoint;
import org.apache.bookkeeper.bookie.Checkpointer;
import org.apache.bookkeeper.bookie.LedgerDirsManager;
import org.apache.bookkeeper.conf.ServerConfiguration;
+import org.apache.bookkeeper.conf.TestBKConfiguration;
import org.apache.bookkeeper.stats.NullStatsLogger;
import org.apache.bookkeeper.util.DiskChecker;
import org.apache.commons.io.FileUtils;
@@ -78,10 +79,9 @@ public class LocationsIndexRebuildTest {
System.out.println(tmpDir);
- ServerConfiguration conf = new ServerConfiguration();
+ ServerConfiguration conf =
TestBKConfiguration.newServerConfiguration();
conf.setLedgerDirNames(new String[] { tmpDir.toString() });
conf.setLedgerStorageClass(DbLedgerStorage.class.getName());
- conf.setAllowLoopback(true);
LedgerDirsManager ledgerDirsManager = new LedgerDirsManager(conf,
conf.getLedgerDirs(),
new DiskChecker(conf.getDiskUsageThreshold(),
conf.getDiskUsageWarnThreshold()));
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/UpdateLedgerCmdTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/UpdateLedgerCmdTest.java
index 14c4b61..d773bda 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/UpdateLedgerCmdTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/client/UpdateLedgerCmdTest.java
@@ -53,7 +53,6 @@ public class UpdateLedgerCmdTest extends
BookKeeperClusterTestCase {
public UpdateLedgerCmdTest() {
super(3);
- baseConf.setAllowLoopback(true);
baseConf.setGcWaitTime(100000);
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/conf/TestBKConfiguration.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/conf/TestBKConfiguration.java
index 961cecc..aba12a7 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/conf/TestBKConfiguration.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/conf/TestBKConfiguration.java
@@ -21,23 +21,61 @@
package org.apache.bookkeeper.conf;
+import java.net.NetworkInterface;
+import java.net.SocketException;
+import java.util.Collections;
+import java.util.Enumeration;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
/**
* Test the BK configuration object.
*/
public class TestBKConfiguration {
+ static final Logger LOG =
LoggerFactory.getLogger(TestBKConfiguration.class);
+
+ /**
+ * Loopback interface is set as the listening interface and allowloopback
is
+ * set to true in this server config.
+ *
+ * <p>If the caller doesn't want loopback address, then listeningInterface
+ * should be set back to null.
+ */
public static ServerConfiguration newServerConfiguration() {
ServerConfiguration confReturn = new ServerConfiguration();
confReturn.setJournalFlushWhenQueueEmpty(true);
// enable journal format version
confReturn.setJournalFormatVersionToWrite(5);
- confReturn.setAllowLoopback(true);
confReturn.setAllowEphemeralPorts(true);
confReturn.setBookiePort(0);
confReturn.setGcWaitTime(1000);
confReturn.setDiskUsageThreshold(0.999f);
confReturn.setDiskUsageWarnThreshold(0.99f);
+ setLoopbackInterfaceAndAllowLoopback(confReturn);
return confReturn;
}
+ private static String getLoopbackInterfaceName() {
+ try {
+ Enumeration<NetworkInterface> nifs =
NetworkInterface.getNetworkInterfaces();
+ for (NetworkInterface nif : Collections.list(nifs)) {
+ if (nif.isLoopback()) {
+ return nif.getName();
+ }
+ }
+ } catch (SocketException se) {
+ LOG.warn("Exception while figuring out loopback interface. Will
use null.", se);
+ return null;
+ }
+ LOG.warn("Unable to deduce loopback interface. Will use null");
+ return null;
+ }
+
+ public static ServerConfiguration
setLoopbackInterfaceAndAllowLoopback(ServerConfiguration serverConf) {
+ serverConf.setListeningInterface(getLoopbackInterfaceName());
+ serverConf.setAllowLoopback(true);
+ return serverConf;
+ }
}
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
index 526a4c7..6365c15 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookKeeperClusterTestCase.java
@@ -85,6 +85,11 @@ public abstract class BookKeeperClusterTestCase {
protected int numBookies;
protected BookKeeperTestClient bkc;
+ /*
+ * Loopback interface is set as the listening interface and allowloopback
is
+ * set to true in this server config. So bookies in this test process would
+ * bind to loopback address.
+ */
protected final ServerConfiguration baseConf =
TestBKConfiguration.newServerConfiguration();
protected final ClientConfiguration baseClientConf = new
ClientConfiguration();
@@ -99,7 +104,6 @@ public abstract class BookKeeperClusterTestCase {
public BookKeeperClusterTestCase(int numBookies, int testTimeoutSecs) {
this.numBookies = numBookies;
this.globalTimeout = Timeout.seconds(testTimeoutSecs);
- baseConf.setAllowLoopback(true);
}
@Before
--
To stop receiving notification emails like this one, please contact
[email protected].