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());
     }
 }

Reply via email to