This is an automated email from the ASF dual-hosted git repository.
hyunkun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/dubbo-benchmark.git
The following commit(s) were added to refs/heads/master by this push:
new 4fad6cb Add ci integration (#5)
4fad6cb is described below
commit 4fad6cba66d45385969c33472cac84de4040b9c3
Author: Huang YunKun <[email protected]>
AuthorDate: Thu Jul 18 22:51:31 2019 +0800
Add ci integration (#5)
* add args to change config for jmh
* add travis file
* skip default install
* kill server in background
* add travis status in readme
* add travis status in readme
---
.travis.yml | 12 +++++++++
README.md | 2 ++
benchmark.sh | 9 +++++--
client-base/pom.xml | 6 +++++
.../java/org/apache/dubbo/benchmark/Client.java | 30 +++++++++++++++++++---
5 files changed, 53 insertions(+), 6 deletions(-)
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..e287f3e
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,12 @@
+language: java
+
+jdk:
+ - openjdk8
+
+install: true
+
+script:
+ - mvn clean package -DskipTests=true -pl
benchmark-base,client-base,server-base
+ - ./benchmark.sh dubbo-kryo-server &
+ - sleep 20
+ - ./benchmark.sh -a "--warmupIterations=1 --warmupTime=1
--measurementIterations=1 --measurementTime=3" dubbo-kryo-client
\ No newline at end of file
diff --git a/README.md b/README.md
index 8d9d2b6..df209f7 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# Dubbo Benchmark
+[](https://travis-ci.org/apache/dubbo-benchmark)
+
This project focuses on benchmarking and profiling dubbo framework with the
combination of different serialization and transporter options. The code and
the idea behinds it is inspired by [RPC
Benchmark](https://github.com/hank-whu/rpc-benchmark).
## How To Run Benchmark
diff --git a/benchmark.sh b/benchmark.sh
index af5f2ff..4f83b75 100755
--- a/benchmark.sh
+++ b/benchmark.sh
@@ -7,6 +7,7 @@ usage() {
echo " -s hostname, host name"
echo " -p port, port number"
echo " -f output file path"
+ echo " -a other args"
echo "dirname: test module name"
}
@@ -36,7 +37,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} -Dbenchmark.output=${OUTPUT} -jar ${JAR}"
+ CMD="java ${JAVA_OPTIONS} -Dserver.host=${SERVER}
-Dserver.port=${PORT} -Dbenchmark.output=${OUTPUT} -jar ${JAR} ${OTHERARGS}"
echo "command is: ${CMD}"
echo
${CMD}
@@ -49,8 +50,9 @@ SERVER="localhost"
PORT="8080"
OUTPUT=""
OPTIND=1
+OTHERARGS=""
-while getopts "m:s:p:f:" opt; do
+while getopts "m:s:p:f:a:" opt; do
case "$opt" in
m)
MODE=${OPTARG}
@@ -64,6 +66,9 @@ while getopts "m:s:p:f:" opt; do
f)
OUTPUT=${OPTARG}
;;
+ a)
+ OTHERARGS=${OPTARG}
+ ;;
?)
usage
exit 0
diff --git a/client-base/pom.xml b/client-base/pom.xml
index d4adb21..9607e04 100644
--- a/client-base/pom.xml
+++ b/client-base/pom.xml
@@ -47,5 +47,11 @@
<groupId>org.openjdk.jmh</groupId>
<artifactId>jmh-generator-annprocess</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>commons-cli</groupId>
+ <artifactId>commons-cli</artifactId>
+ <version>1.4</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
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 bb57bd7..174abfb 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,5 +1,9 @@
package org.apache.dubbo.benchmark;
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.CommandLineParser;
+import org.apache.commons.cli.DefaultParser;
+import org.apache.commons.cli.Option;
import org.apache.dubbo.benchmark.bean.Page;
import org.apache.dubbo.benchmark.bean.User;
import org.apache.dubbo.benchmark.rpc.AbstractClient;
@@ -77,19 +81,37 @@ public class Client extends AbstractClient {
}
public static void main(String[] args) throws Exception {
+ System.out.println(args);
+ org.apache.commons.cli.Options options = new
org.apache.commons.cli.Options();
+
+
options.addOption(Option.builder().longOpt("warmupIterations").hasArg().build());
+
options.addOption(Option.builder().longOpt("warmupTime").hasArg().build());
+
options.addOption(Option.builder().longOpt("measurementIterations").hasArg().build());
+
options.addOption(Option.builder().longOpt("measurementTime").hasArg().build());
+
+ CommandLineParser parser = new DefaultParser();
+
+ CommandLine line = parser.parse(options, args);
+
+ int warmupIterations =
Integer.valueOf(line.getOptionValue("warmupIterations", "3"));
+ int warmupTime = Integer.valueOf(line.getOptionValue("warmupTime",
"10"));
+ int measurementIterations =
Integer.valueOf(line.getOptionValue("measurementIterations", "3"));
+ int measurementTime =
Integer.valueOf(line.getOptionValue("measurementTime", "10"));
+
Options opt;
ChainedOptionsBuilder optBuilder = new OptionsBuilder()
.include(Client.class.getSimpleName())
- .warmupIterations(3)
- .warmupTime(TimeValue.seconds(10))
- .measurementIterations(3)
- .measurementTime(TimeValue.seconds(10))
+ .warmupIterations(warmupIterations)
+ .warmupTime(TimeValue.seconds(warmupTime))
+ .measurementIterations(measurementIterations)
+ .measurementTime(TimeValue.seconds(measurementTime))
.threads(CONCURRENCY)
.forks(1);
opt = doOptions(optBuilder).build();
new Runner(opt).run();
+
}
private static ChainedOptionsBuilder doOptions(ChainedOptionsBuilder
optBuilder) {