From 74db588e426a3d8ad494342a61d7a5de211ba835 Mon Sep 17 00:00:00 2001 From: ruzell22 Date: Tue, 21 Nov 2023 10:03:03 +0800 Subject: [PATCH] test jmeter benchmarking Signed-off-by: ruzell22 --- .github/workflows/jmeter-benchmarking.yaml | 93 +++++++---- pom.xml | 172 +++++++++++++++++++++ project/build.properties | 1 + project/plugins.sbt | 1 + 4 files changed, 233 insertions(+), 34 deletions(-) create mode 100644 pom.xml create mode 100644 project/build.properties create mode 100644 project/plugins.sbt diff --git a/.github/workflows/jmeter-benchmarking.yaml b/.github/workflows/jmeter-benchmarking.yaml index bede762c2d..65499cf62d 100644 --- a/.github/workflows/jmeter-benchmarking.yaml +++ b/.github/workflows/jmeter-benchmarking.yaml @@ -1,44 +1,69 @@ -name: Minimal setup +name: JMH Benchmark on: push: branches: - main + pull_request: + branches: + - main + +permissions: + contents: write + deployments: write jobs: benchmark: + name: Run JMH benchmark example runs-on: ubuntu-latest steps: - - name: Continuous Benchmark - uses: benchmark-action/github-action-benchmark@v1.18.0 + - uses: actions/checkout@v3 + - uses: actions/setup-java@v2 + with: + distribution: 'adopt' + java-version: '11' + - name: Cache SBT dependencies + uses: coursier/cache-action@v6 + - name: Build and run JMH benchmark + run: | + sbt clean compile + sbt 'benchmarks/jmh:run -i 3 -wi 3 -f1 -t1 -rf json -rff output.json .*' + - name: JMH Benchmark Action + uses: kitlangton/jmh-benchmark-action@main + with: + jmh-output-path: benchmarks/output.json + github-token: ${{ secrets.GITHUB_TOKEN }} + + # - name: Run benchmark + # run: | + # mvn clean install + # java -jar target/benchmarks.jar -wi 1 -i 3 -f 1 -rf json + # - name: Store benchmark result + # uses: benchmark-action/github-action-benchmark@v1 + # with: + # name: JMH Benchmark + # tool: 'jmh' + # output-file-path: examples/java/jmh-result.json + # # Use personal access token instead of GITHUB_TOKEN due to https://github.community/t/github-action-not-triggering-gh-pages-upon-push/16096 + # github-token: ${{ secrets.GITHUB_TOKEN }} + # auto-push: true + # # Show alert with commit comment on detecting possible performance regression + # alert-threshold: '200%' + # comment-on-alert: true + # fail-on-alert: true + # # alert-comment-cc-users: '@michaelmior' -# jobs: -# benchmark: -# name: Performance regression check -# runs-on: ubuntu-latest -# steps: -# - uses: actions/checkout@v2 -# - uses: actions/setup-go@v4 -# with: -# go-version: "stable" -# # Run benchmark with `go test -bench` and stores the output to a file -# - name: Run benchmark -# run: go mod init && go test -bench 'BenchmarkFib' | tee output.txt -# # Download previous benchmark result from cache (if exists) -# - name: Download previous benchmark data -# uses: actions/cache@v1 -# with: -# path: ./cache -# key: ${{ runner.os }}-benchmark -# # Run `github-action-benchmark` action -# - name: Store benchmark result -# uses: benchmark-action/github-action-benchmark@v1 -# with: -# # What benchmark tool the output.txt came from -# tool: 'go' -# # Where the output from the benchmark tool is stored -# output-file-path: output.txt -# # Where the previous data file is stored -# external-data-json-path: ./cache/benchmark-data.json -# # Workflow will fail when an alert happens -# fail-on-alert: true -# # Upload the updated cache file for the next job by actions/cache + # - name: Store benchmark result - separate results repo + # uses: benchmark-action/github-action-benchmark@v1 + # with: + # name: JMH Benchmark + # tool: 'jmh' + # output-file-path: examples/java/jmh-result.json + # # Use personal access token instead of GITHUB_TOKEN due to https://github.community/t/github-action-not-triggering-gh-pages-upon-push/16096 + # github-token: ${{ secrets.BENCHMARK_ACTION_BOT_TOKEN }} + # auto-push: true + # # Show alert with commit comment on detecting possible performance regression + # alert-threshold: '200%' + # comment-on-alert: true + # fail-on-alert: true + # # alert-comment-cc-users: '@michaelmior' + # gh-repository: 'github.com/benchmark-action/github-action-benchmark-results' \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000000..7fc4d34070 --- /dev/null +++ b/pom.xml @@ -0,0 +1,172 @@ + + + + 4.0.0 + + org.openjdk.jmh.samples + jmh-sample + 1.0 + jar + + JMH benchmark sample: Java + + + + + + org.openjdk.jmh + jmh-core + ${jmh.version} + + + org.openjdk.jmh + jmh-generator-annprocess + ${jmh.version} + provided + + + + + UTF-8 + + + 1.36 + + + 1.8 + + + benchmarks + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + ${javac.target} + ${javac.target} + ${javac.target} + + + + org.apache.maven.plugins + maven-shade-plugin + 3.2.1 + + + package + + shade + + + ${uberjar.name} + + + org.openjdk.jmh.Main + + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + + + + maven-clean-plugin + 2.5 + + + maven-deploy-plugin + 2.8.1 + + + maven-install-plugin + 2.5.1 + + + maven-jar-plugin + 2.4 + + + maven-javadoc-plugin + 2.9.1 + + + maven-resources-plugin + 2.6 + + + maven-site-plugin + 3.3 + + + maven-source-plugin + 2.2.1 + + + maven-surefire-plugin + 2.17 + + + + + + \ No newline at end of file diff --git a/project/build.properties b/project/build.properties new file mode 100644 index 0000000000..4ff6415f22 --- /dev/null +++ b/project/build.properties @@ -0,0 +1 @@ +sbt.version=1.6.2 \ No newline at end of file diff --git a/project/plugins.sbt b/project/plugins.sbt new file mode 100644 index 0000000000..cea8013e23 --- /dev/null +++ b/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.13.2") \ No newline at end of file