You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@dubbo.apache.org by co...@apache.org on 2020/04/17 00:47:34 UTC

[dubbo-benchmark] 08/16: Support -f output to file

This is an automated email from the ASF dual-hosted git repository.

codingsinger pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-benchmark.git

commit 5aaf493e5453cd99f3d4af30b51f1f1cfb25257d
Author: zonghaishang <yi...@apache.org>
AuthorDate: Mon Sep 17 13:13:28 2018 +0800

    Support -f output to file
---
 README.md                                          |  4 +--
 benchmark.sh                                       | 32 ++++++++++++++--------
 .../java/org/apache/dubbo/benchmark/Client.java    | 22 +++++++++++----
 3 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/README.md b/README.md
index b91ade0..8d9d2b6 100644
--- a/README.md
+++ b/README.md
@@ -28,8 +28,8 @@ Clone this project onto your desktop, then
 ./benchmark.sh dubbo-kryo-client
 ```
 
-## Specify hostname and port for service
+## Specify hostname, port and output file for service
 
 ```bash
-./benchmark.sh -s [hostname|ip address] -p port
+./benchmark.sh -s [hostname|ip address] -p port -f output
 ```
\ No newline at end of file
diff --git a/benchmark.sh b/benchmark.sh
index e4b1c3c..af5f2ff 100755
--- a/benchmark.sh
+++ b/benchmark.sh
@@ -1,7 +1,13 @@
 #!/usr/bin/env bash
 
 usage() {
-    echo "Usage: ${PROGRAM_NAME} -m {profiling|benchmark} -s hostname -p port dirname"
+    echo "Usage: ${PROGRAM_NAME} command dirname"
+    echo "command: [m|s|p|f]"
+    echo "         -m [profiling|benchmark], specify benchmark mode"
+    echo "         -s hostname, host name"
+    echo "         -p port, port number"
+    echo "         -f output file path"
+    echo "dirname: test module name"
 }
 
 build() {
@@ -18,10 +24,10 @@ java_options() {
     JAVA_OPTIONS="-server -Xmx1g -Xms1g -XX:MaxDirectMemorySize=1g -XX:+UseG1GC"
     if [ "x${MODE}" = "xprofiling" ]; then
         JAVA_OPTIONS="${JAVA_OPTIONS} \
--XX:+UnlockCommercialFeatures \
--XX:+FlightRecorder \
--XX:StartFlightRecording=duration=30s,filename=${PROJECT_DIR}.jfr \
--XX:FlightRecorderOptions=stackdepth=256"
+            -XX:+UnlockCommercialFeatures \
+            -XX:+FlightRecorder \
+            -XX:StartFlightRecording=duration=30s,filename=${PROJECT_DIR}.jfr \
+            -XX:FlightRecorderOptions=stackdepth=256"
     fi
 }
 
@@ -30,7 +36,7 @@ run() {
         JAR=`find ${PROJECT_DIR}/target/*.jar | head -n 1`
         echo
         echo "RUN ${PROJECT_DIR} IN ${MODE:-benchmark} MODE"
-        CMD="java ${JAVA_OPTIONS} -Dserver.host=${SERVER} -Dserver.port=${PORT} -jar ${JAR}"
+        CMD="java ${JAVA_OPTIONS} -Dserver.host=${SERVER} -Dserver.port=${PORT} -Dbenchmark.output=${OUTPUT} -jar ${JAR}"
         echo "command is: ${CMD}"
         echo
         ${CMD}
@@ -41,14 +47,11 @@ PROGRAM_NAME=$0
 MODE="benchmark"
 SERVER="localhost"
 PORT="8080"
+OUTPUT=""
 OPTIND=1
 
-while getopts "h?m:s:p:" opt; do
+while getopts "m:s:p:f:" opt; do
     case "$opt" in
-        h|\?)
-            usage
-            exit 0
-            ;;
         m)
             MODE=${OPTARG}
             ;;
@@ -58,6 +61,13 @@ while getopts "h?m:s:p:" opt; do
         p)
             PORT=${OPTARG}
             ;;
+        f)
+            OUTPUT=${OPTARG}
+            ;;
+        ?)
+            usage
+            exit 0
+            ;;
     esac
 done
 
diff --git a/client-base/src/main/java/org/apache/dubbo/benchmark/Client.java b/client-base/src/main/java/org/apache/dubbo/benchmark/Client.java
index e6f9051..8b52142 100644
--- a/client-base/src/main/java/org/apache/dubbo/benchmark/Client.java
+++ b/client-base/src/main/java/org/apache/dubbo/benchmark/Client.java
@@ -1,6 +1,7 @@
 package org.apache.dubbo.benchmark;
 
 import com.alibaba.dubbo.config.ProtocolConfig;
+
 import org.apache.dubbo.benchmark.bean.Page;
 import org.apache.dubbo.benchmark.bean.User;
 import org.apache.dubbo.benchmark.rpc.AbstractClient;
@@ -12,8 +13,8 @@ import org.openjdk.jmh.annotations.OutputTimeUnit;
 import org.openjdk.jmh.annotations.Scope;
 import org.openjdk.jmh.annotations.State;
 import org.openjdk.jmh.annotations.TearDown;
-import org.openjdk.jmh.results.format.ResultFormatType;
 import org.openjdk.jmh.runner.Runner;
+import org.openjdk.jmh.runner.options.ChainedOptionsBuilder;
 import org.openjdk.jmh.runner.options.Options;
 import org.openjdk.jmh.runner.options.OptionsBuilder;
 import org.openjdk.jmh.runner.options.TimeValue;
@@ -42,8 +43,8 @@ public class Client extends AbstractClient {
 
     @TearDown
     public void close() throws IOException {
-        context.close();
         ProtocolConfig.destroyAll();
+        context.close();
     }
 
     @Benchmark
@@ -79,17 +80,26 @@ public class Client extends AbstractClient {
     }
 
     public static void main(String[] args) throws Exception {
-        Options opt = new OptionsBuilder()
+        Options opt;
+        ChainedOptionsBuilder optBuilder = new OptionsBuilder()
                 .include(Client.class.getSimpleName())
                 .warmupIterations(3)
                 .warmupTime(TimeValue.seconds(10))
                 .measurementIterations(3)
                 .measurementTime(TimeValue.seconds(10))
                 .threads(CONCURRENCY)
-//                .resultFormat(ResultFormatType.JSON)
-                .forks(1)
-                .build();
+                .forks(1);
+
+        opt = doOptions(optBuilder).build();
 
         new Runner(opt).run();
     }
+
+    private static ChainedOptionsBuilder doOptions(ChainedOptionsBuilder optBuilder) {
+        String output = System.getProperty("benchmark.output");
+        if (output != null && !output.trim().isEmpty()) {
+            optBuilder.output(output);
+        }
+        return optBuilder;
+    }
 }