This is an automated email from the ASF dual-hosted git repository.
reddycharan 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 6820f89 Testcase for limitStatsLogging.
6820f89 is described below
commit 6820f890343e51a6b2b1c9544b90dc1c6ca40dea
Author: Charan Reddy Guttapalem <[email protected]>
AuthorDate: Mon Jun 10 14:57:11 2019 -0700
Testcase for limitStatsLogging.
Descriptions of the changes in this PR:
bd2b16e880d172d4761461fdbf85c1bd19b24e36 had introduced
'limitStatsLogging' feature, which would be used to limit statslogging,
where it is needed. eg - we would like to suppress logs from PCBC
in Auditor/ReplicationWorker process.
In this commit I'm adding testcases for this feature.
Reviewers: Enrico Olivelli <[email protected]>, Sijie Guo
<[email protected]>
This closes #2109 from reddycharan/testlimitstatslogging
---
.../bookkeeper/proto/PerChannelBookieClient.java | 12 ++++----
.../apache/bookkeeper/test/BookieClientTest.java | 34 +++++++++++++++++++---
2 files changed, 37 insertions(+), 9 deletions(-)
diff --git
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
index 2f1659f..c151426 100644
---
a/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
+++
b/bookkeeper-server/src/main/java/org/apache/bookkeeper/proto/PerChannelBookieClient.java
@@ -388,12 +388,8 @@ public class PerChannelBookieClient extends
ChannelInboundHandlerAdapter {
shFactory.init(NodeType.Client, conf, allocator);
}
- StringBuilder nameBuilder = new StringBuilder();
- nameBuilder.append(addr.getHostName().replace('.', '_').replace('-',
'_'))
- .append("_").append(addr.getPort());
-
this.statsLogger =
parentStatsLogger.scope(BookKeeperClientStats.CHANNEL_SCOPE)
- .scope(nameBuilder.toString());
+ .scope(buildStatsLoggerScopeName(addr));
readEntryOpLogger =
statsLogger.getOpStatsLogger(BookKeeperClientStats.CHANNEL_READ_OP);
addEntryOpLogger =
statsLogger.getOpStatsLogger(BookKeeperClientStats.CHANNEL_ADD_OP);
@@ -493,6 +489,12 @@ public class PerChannelBookieClient extends
ChannelInboundHandlerAdapter {
};
}
+ public static String buildStatsLoggerScopeName(BookieSocketAddress addr) {
+ StringBuilder nameBuilder = new StringBuilder();
+ nameBuilder.append(addr.getHostName().replace('.', '_').replace('-',
'_')).append("_").append(addr.getPort());
+ return nameBuilder.toString();
+ }
+
private void completeOperation(GenericCallback<PerChannelBookieClient> op,
int rc) {
//Thread.dumpStack();
closeLock.readLock().lock();
diff --git
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java
index d38a178..322ca6d 100644
---
a/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java
+++
b/bookkeeper-server/src/test/java/org/apache/bookkeeper/test/BookieClientTest.java
@@ -40,6 +40,7 @@ import java.util.concurrent.ScheduledExecutorService;
import org.apache.bookkeeper.client.BKException;
import org.apache.bookkeeper.client.BKException.Code;
+import org.apache.bookkeeper.client.BookKeeperClientStats;
import org.apache.bookkeeper.client.BookieInfoReader.BookieInfo;
import org.apache.bookkeeper.client.api.WriteFlag;
import org.apache.bookkeeper.common.util.OrderedExecutor;
@@ -55,7 +56,10 @@ import
org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.GetBookieInfoCall
import
org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.ReadEntryCallback;
import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.WriteCallback;
import org.apache.bookkeeper.proto.BookkeeperProtocol;
+import org.apache.bookkeeper.proto.PerChannelBookieClient;
import org.apache.bookkeeper.stats.NullStatsLogger;
+import org.apache.bookkeeper.test.TestStatsProvider.TestOpStatsLogger;
+import org.apache.bookkeeper.test.TestStatsProvider.TestStatsLogger;
import org.apache.bookkeeper.util.ByteBufList;
import org.apache.bookkeeper.util.IOUtils;
import org.junit.After;
@@ -269,10 +273,23 @@ public class BookieClientTest {
}
@Test
- public void testGetBookieInfo() throws IOException, InterruptedException {
+ public void testGetBookieInfoWithLimitStatsLogging() throws IOException,
InterruptedException {
+ testGetBookieInfo(true);
+ }
+
+ @Test
+ public void testGetBookieInfoWithoutLimitStatsLogging() throws
IOException, InterruptedException {
+ testGetBookieInfo(false);
+ }
+
+ public void testGetBookieInfo(boolean limitStatsLogging) throws
IOException, InterruptedException {
BookieSocketAddress addr = bs.getLocalAddress();
- BookieClient bc = new BookieClientImpl(new ClientConfiguration(), new
NioEventLoopGroup(),
- UnpooledByteBufAllocator.DEFAULT, executor, scheduler,
NullStatsLogger.INSTANCE);
+ ClientConfiguration clientConf = new ClientConfiguration();
+ clientConf.setLimitStatsLogging(limitStatsLogging);
+ TestStatsProvider statsProvider = new TestStatsProvider();
+ TestStatsLogger statsLogger = statsProvider.getStatsLogger("");
+ BookieClient bc = new BookieClientImpl(clientConf, new
NioEventLoopGroup(), UnpooledByteBufAllocator.DEFAULT,
+ executor, scheduler, statsLogger);
long flags =
BookkeeperProtocol.GetBookieInfoRequest.Flags.FREE_DISK_SPACE_VALUE
|
BookkeeperProtocol.GetBookieInfoRequest.Flags.TOTAL_DISK_CAPACITY_VALUE;
@@ -281,6 +298,7 @@ public class BookieClientTest {
long requested;
long freeDiskSpace, totalDiskCapacity;
CountDownLatch latch = new CountDownLatch(1);
+
CallbackObj(long requested) {
this.requested = requested;
this.rc = 0;
@@ -299,7 +317,7 @@ public class BookieClientTest {
obj.freeDiskSpace = bInfo.getFreeDiskSpace();
}
if ((obj.requested
- &
BookkeeperProtocol.GetBookieInfoRequest.Flags.TOTAL_DISK_CAPACITY_VALUE) != 0) {
+ &
BookkeeperProtocol.GetBookieInfoRequest.Flags.TOTAL_DISK_CAPACITY_VALUE) != 0) {
obj.totalDiskCapacity = bInfo.getTotalDiskSpace();
}
}
@@ -313,5 +331,13 @@ public class BookieClientTest {
assertTrue("GetBookieInfo failed with error " + obj.rc, obj.rc ==
Code.OK);
assertTrue("GetBookieInfo failed with error " + obj.rc,
obj.freeDiskSpace <= obj.totalDiskCapacity);
assertTrue("GetBookieInfo failed with error " + obj.rc,
obj.totalDiskCapacity > 0);
+
+ TestOpStatsLogger perChannelBookieClientScopeOfThisAddr =
(TestOpStatsLogger) statsLogger
+ .scope(BookKeeperClientStats.CHANNEL_SCOPE)
+ .scope(PerChannelBookieClient.buildStatsLoggerScopeName(addr))
+ .getOpStatsLogger(BookKeeperClientStats.GET_BOOKIE_INFO_OP);
+ int expectedBookieInfoSuccessCount = (limitStatsLogging) ? 0 : 1;
+ assertEquals("BookieInfoSuccessCount", expectedBookieInfoSuccessCount,
+ perChannelBookieClientScopeOfThisAddr.getSuccessCount());
}
}