You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zookeeper.apache.org by fp...@apache.org on 2012/04/03 18:02:44 UTC

svn commit: r1309007 - in /zookeeper/bookkeeper/trunk: CHANGES.txt bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java bookkeeper-benchmark/src/test/java/org/apache/bookkeeper/benchmark/TestBenchmark.java

Author: fpj
Date: Tue Apr  3 16:02:44 2012
New Revision: 1309007

URL: http://svn.apache.org/viewvc?rev=1309007&view=rev
Log:
BOOKKEEPER-207: BenchBookie doesn't run correctly (ivank via fpj)


Modified:
    zookeeper/bookkeeper/trunk/CHANGES.txt
    zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java
    zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/test/java/org/apache/bookkeeper/benchmark/TestBenchmark.java

Modified: zookeeper/bookkeeper/trunk/CHANGES.txt
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/CHANGES.txt?rev=1309007&r1=1309006&r2=1309007&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/CHANGES.txt (original)
+++ zookeeper/bookkeeper/trunk/CHANGES.txt Tue Apr  3 16:02:44 2012
@@ -88,6 +88,10 @@ Trunk (unreleased changes)
 
         BOOKKEEPER-163: Prevent incorrect NoSuchLedgerException for readLastConfirmed. (ivank via sijie)
 
+      bookkeeper-benchmark/
+	
+	BOOKKEEPER-207: BenchBookie doesn't run correctly (ivank via fpj)
+
     IMPROVEMENTS:
 
       bookkeeper-server/

Modified: zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java?rev=1309007&r1=1309006&r2=1309007&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/main/java/org/apache/bookkeeper/benchmark/BenchBookie.java Tue Apr  3 16:02:44 2012
@@ -22,10 +22,17 @@ package org.apache.bookkeeper.benchmark;
 import java.net.InetSocketAddress;
 import java.util.concurrent.Executors;
 
+import java.io.IOException;
+
+import org.apache.zookeeper.KeeperException;
+
 import org.apache.bookkeeper.proto.BookieClient;
 import org.apache.bookkeeper.proto.BookieProtocol;
 import org.apache.bookkeeper.proto.BookkeeperInternalCallbacks.WriteCallback;
 import org.apache.bookkeeper.util.OrderedSafeExecutor;
+import org.apache.bookkeeper.client.BookKeeper;
+import org.apache.bookkeeper.client.BKException;
+import org.apache.bookkeeper.client.LedgerHandle;
 import org.apache.bookkeeper.conf.ClientConfiguration;
 import org.jboss.netty.buffer.ChannelBuffer;
 import org.jboss.netty.buffer.ChannelBuffers;
@@ -89,15 +96,33 @@ public class BenchBookie {
         }
     }
 
+    private static long getValidLedgerId(String zkServers)
+            throws IOException, BKException, KeeperException, InterruptedException {
+        BookKeeper bkc = null;
+        LedgerHandle lh = null;
+        long id = 0;
+        try {
+            bkc =new BookKeeper(zkServers);
+            lh = bkc.createLedger(1, 1, BookKeeper.DigestType.CRC32,
+                                  new byte[20]);
+            id = lh.getId();
+            return id;
+        } finally {
+            if (lh != null) { lh.close(); }
+            if (bkc != null) { bkc.close(); }
+        }
+    }
     /**
      * @param args
      * @throws InterruptedException
      */
-    public static void main(String[] args) throws InterruptedException, ParseException {
+    public static void main(String[] args)
+            throws InterruptedException, ParseException, IOException,
+            BKException, KeeperException {
         Options options = new Options();
         options.addOption("host", true, "Hostname or IP of bookie to benchmark");
         options.addOption("port", true, "Port of bookie to benchmark (default 3181)");
-        options.addOption("ledger", true, "Ledger Id to write to (default 1)");
+        options.addOption("zookeeper", true, "Zookeeper ensemble, default \"localhost:2181\"");
         options.addOption("help", false, "This message");
 
         CommandLineParser parser = new PosixParser();
@@ -111,7 +136,9 @@ public class BenchBookie {
 
         String addr = cmd.getOptionValue("host");
         int port = Integer.valueOf(cmd.getOptionValue("port", "3181"));
-        int ledger = Integer.valueOf(cmd.getOptionValue("ledger", "1"));
+        String servers = cmd.getOptionValue("zookeeper", "localhost:2181");
+
+
 
         ClientSocketChannelFactory channelFactory
             = new NioClientSocketChannelFactory(Executors.newCachedThreadPool(), Executors
@@ -124,6 +151,8 @@ public class BenchBookie {
 
         ThroughputCallback tc = new ThroughputCallback();
         int warmUpCount = 999;
+
+        long ledger = getValidLedgerId(servers);
         for(long entry = 0; entry < warmUpCount; entry++) {
             ChannelBuffer toSend = ChannelBuffers.buffer(128);
             toSend.resetReaderIndex();
@@ -131,12 +160,13 @@ public class BenchBookie {
             toSend.writeLong(ledger);
             toSend.writeLong(entry);
             toSend.writerIndex(toSend.capacity());
-            bc.addEntry(new InetSocketAddress(addr, port), ledger, new byte[20], 
+            bc.addEntry(new InetSocketAddress(addr, port), ledger, new byte[20],
                         entry, toSend, tc, null, BookieProtocol.FLAG_NONE);
         }
         LOG.info("Waiting for warmup");
         tc.waitFor(warmUpCount);
 
+        ledger = getValidLedgerId(servers);
         LOG.info("Benchmarking latency");
         int entryCount = 5000;
         long startTime = System.nanoTime();
@@ -144,11 +174,11 @@ public class BenchBookie {
             ChannelBuffer toSend = ChannelBuffers.buffer(128);
             toSend.resetReaderIndex();
             toSend.resetWriterIndex();
-            toSend.writeLong(ledger+1);
+            toSend.writeLong(ledger);
             toSend.writeLong(entry);
             toSend.writerIndex(toSend.capacity());
             lc.resetComplete();
-            bc.addEntry(new InetSocketAddress(addr, port), ledger+1, new byte[20], 
+            bc.addEntry(new InetSocketAddress(addr, port), ledger, new byte[20],
                         entry, toSend, lc, null, BookieProtocol.FLAG_NONE);
             lc.waitForComplete();
         }
@@ -156,6 +186,8 @@ public class BenchBookie {
         LOG.info("Latency: " + (((double)(endTime-startTime))/((double)entryCount))/1000000.0);
 
         entryCount = 50000;
+
+        ledger = getValidLedgerId(servers);
         LOG.info("Benchmarking throughput");
         startTime = System.currentTimeMillis();
         tc = new ThroughputCallback();
@@ -163,10 +195,10 @@ public class BenchBookie {
             ChannelBuffer toSend = ChannelBuffers.buffer(128);
             toSend.resetReaderIndex();
             toSend.resetWriterIndex();
-            toSend.writeLong(ledger+2);
+            toSend.writeLong(ledger);
             toSend.writeLong(entry);
             toSend.writerIndex(toSend.capacity());
-            bc.addEntry(new InetSocketAddress(addr, port), ledger+2, new byte[20], 
+            bc.addEntry(new InetSocketAddress(addr, port), ledger, new byte[20],
                         entry, toSend, tc, null, BookieProtocol.FLAG_NONE);
         }
         tc.waitFor(entryCount);

Modified: zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/test/java/org/apache/bookkeeper/benchmark/TestBenchmark.java
URL: http://svn.apache.org/viewvc/zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/test/java/org/apache/bookkeeper/benchmark/TestBenchmark.java?rev=1309007&r1=1309006&r2=1309007&view=diff
==============================================================================
--- zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/test/java/org/apache/bookkeeper/benchmark/TestBenchmark.java (original)
+++ zookeeper/bookkeeper/trunk/bookkeeper-benchmark/src/test/java/org/apache/bookkeeper/benchmark/TestBenchmark.java Tue Apr  3 16:02:44 2012
@@ -126,7 +126,7 @@ public class TestBenchmark {
         BenchBookie.main(new String[] {
                 "--host", parts[0],
                 "--port", parts[1],
-                "--ledger", "12345"
+                "--zookeeper", zkString
                 });
     }