Skip to content

Commit 95fddea

Browse files
committed
Ability to change repo location/branch
1 parent 52f219e commit 95fddea

4 files changed

Lines changed: 83 additions & 41 deletions

File tree

benchmarks/helpers/maven.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
name: Maven scripts
2+
scripts:
3+
check-dependency-exists:
4+
- sh: cd ${{DIR}}
5+
- sh: ./mvnw dependency:get -Dartifact=${{groupId}}:${{artifactId}}:${{version}} -Dpackaging=pom
6+
then:
7+
- regex: BUILD FAILURE
8+
then:
9+
- abort: Unable to find ${{groupId}}:${{artifactId}}:${{version}} in maven central
10+
else:
11+
- log: Artifact ${{groupId}}:${{artifactId}}:${{version}} is available in maven central

benchmarks/helpers/requirements.yml

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ scripts:
33
ensure-requirements:
44
- script: ensure-graalvm
55
- script: ensure-java
6+
- script: ensure-git
67
- script: ensure-gh-cli
78
- script: ensure-gcc
89
- script: ensure-nvm
@@ -58,4 +59,19 @@ scripts:
5859
then:
5960
- script: install-nvm-${{os}}
6061
- sh: nvm install --lts
61-
- sh: nvm use --lts
62+
- sh: nvm use --lts
63+
64+
ensure-git-linux:
65+
- script: check-and-install-package
66+
with:
67+
command: git
68+
package: git-all
69+
70+
ensure-git-macos:
71+
- script: check-and-install-package
72+
with:
73+
command: git
74+
package: git
75+
76+
ensure-git:
77+
- script: ensure-git-${{os}}

benchmarks/main.yml

Lines changed: 36 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ states:
8585
QUARKUS-PLATFORM-ARTIFACT-ID: quarkus-bom
8686
PROJ_REPO_NAME: spring-quarkus-perf-comparison
8787
PROJ_REPO_URL: https://github.com/quarkusio/${{PROJ_REPO_NAME}}.git
88-
PROJ_REPO_BRANCH: origin/main
88+
PROJ_REPO_BRANCH: main
8989
METRICS_DIR: /tmp
9090

9191
scripts:
@@ -98,53 +98,50 @@ scripts:
9898
- sh: mkdir -p ${{REPO_DIR}}/logs
9999
- sh: cd ${{REPO_DIR}}
100100
- log: Cloning project repo
101-
- sh: git clone ${{PROJ_REPO_URL}}
101+
- sh: git clone -b ${{PROJ_REPO_BRANCH}} ${{PROJ_REPO_URL}}
102102
- sh: cd ${{PROJ_REPO_NAME}}
103-
- sh: git checkout -t ${{PROJ_REPO_BRANCH}}
103+
- log: Checked out repo
104+
- sh: git remote get-url origin
105+
- sh: git branch --show-current
104106
- sh: cd scripts/startup
105107
- sh: npm install axios@0.27.2
106108

107-
install-wrk: #TODO: Move to core-scripts
108-
- sh: "[[ -f ${{WRK_PATH:/tmp/wrk}}/${{WRK_EXE:wrk}} ]] || echo GETWORK;"
109-
- regex: GET
110-
then:
111-
- sh: mkdir -p ${{WRK_PATH:/tmp/wrk}}
112-
- sh: cd ${{WRK_PATH:/tmp/wrk}}
113-
- sh: "curl https://api.github.com/repos/wg/wrk/tags | jq --raw-output '.[0].tarball_url' | xargs -I {} curl -L -o wrk.tar.gz {}"
114-
- sh: tar -xzvf wrk.tar.gz
115-
watch:
116-
- regex: "^(?<folderName>[^/]+)/$"
117-
- sh: cd ${{folderName}}
118-
- regex: No such file or directory
119-
then:
120-
- abort: failed to extract wrk.tar.gz and find folderName=${{folderName}} which is needed for this run
121-
- sh: make #TODO detect failures
122-
- regex: No targets specified and no file found
123-
then:
124-
- abort: failed to make in ${{folderName}}
125-
- sh: mv wrk ${{WRK_PATH:/tmp/wrk}}/${{WRK_EXE:wrk}}
126-
- set-state: RUN.WRK_BIN ${{WRK_PATH:/tmp/wrk}}/${{WRK_EXE:wrk}}
109+
# install-wrk: #TODO: Move to core-scripts
110+
# - sh: "[[ -f ${{WRK_PATH:/tmp/wrk}}/${{WRK_EXE:wrk}} ]] || echo GETWORK;"
111+
# - regex: GET
112+
# then:
113+
# - sh: mkdir -p ${{WRK_PATH:/tmp/wrk}}
114+
# - sh: cd ${{WRK_PATH:/tmp/wrk}}
115+
# - sh: "curl https://api.github.com/repos/wg/wrk/tags | jq --raw-output '.[0].tarball_url' | xargs -I {} curl -L -o wrk.tar.gz {}"
116+
# - sh: tar -xzvf wrk.tar.gz
117+
# watch:
118+
# - regex: "^(?<folderName>[^/]+)/$"
119+
# - sh: cd ${{folderName}}
120+
# - regex: No such file or directory
121+
# then:
122+
# - abort: failed to extract wrk.tar.gz and find folderName=${{folderName}} which is needed for this run
123+
# - sh: make #TODO detect failures
124+
# - regex: No targets specified and no file found
125+
# then:
126+
# - abort: failed to make in ${{folderName}}
127+
# - sh: mv wrk ${{WRK_PATH:/tmp/wrk}}/${{WRK_EXE:wrk}}
128+
# - set-state: RUN.WRK_BIN ${{WRK_PATH:/tmp/wrk}}/${{WRK_EXE:wrk}}
127129

128130
update-spring-boot-version:
129-
- sh: cd ${{DIR}}
130-
- sh: mvn versions:update-parent "-DparentVersion=[${{VERSION}}]" -DskipResolution=true
131+
- script: check-dependency-exists
132+
with:
133+
groupId: org.springframework.boot
134+
artifactId: spring-boot-starter-parent
135+
version: ${{VERSION}}
136+
- sh: ./mvnw versions:update-parent "-DparentVersion=[${{VERSION}}]" -DskipResolution=true
131137

132138
update-quarkus-version:
133-
- script: qet-quarkus
139+
- script: check-dependency-exists
134140
with:
135-
QUARKUS_VERSION: ${{VERSION}}
136-
- read-state: ${{RUN.SOURCE_QUARKUS}}
137-
then:
138-
- set-state: RUN.QUARKUS_MAVEN_OPTIONS -Dmaven.repo.local=${{RUN.QUARKUS_LOCAL_REPO}} -Dtests.maven.repo.local=${{RUN.QUARKUS_LOCAL_REPO}}
139-
else:
140-
- set-state: RUN.QUARKUS_MAVEN_OPTIONS ""
141-
- set-state: RUN.QUARKUS_RELEASE_VERSION ${{VERSION}}
142-
- sh: cd ${{DIR}}
143-
- sh: mvn versions:set-property -Dproperty=quarkus.platform.artifact-id -DnewVersion=${{RUN.QUARKUS-PLATFORM-ARTIFACT-ID}}
144-
- read-state: ${{RUN.QUARKUS_RELEASE_VERSION}}
145-
then:
146-
# - sh: mvn versions:set-property ${{QUARKUS_MAVEN_OPTIONS}} -Dproperty=quarkus-plugin.version -DnewVersion=${{RUN.QUARKUS_RELEASE_VERSION}}
147-
- sh: mvn versions:set-property ${{QUARKUS_MAVEN_OPTIONS}} -Dproperty=quarkus.platform.version -DnewVersion=${{RUN.QUARKUS_RELEASE_VERSION}}
141+
groupId: io.quarkus.platform
142+
artifactId: quarkus-bom
143+
version: ${{VERSION}}
144+
- sh: ./mvnw versions:set-property -Dproperty=quarkus.platform.version -DnewVersion=${{VERSION}}
148145

149146
start-test-services:
150147
- sh: cd ${{REPO_DIR}}/${{PROJ_REPO_NAME}}

benchmarks/run-benchmarks.sh

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
help() {
44
echo "This script runs benchmarks."
55
echo "It assumes you have the following things installed on your machine:"
6+
echo " - git (https://github.com/git-guides/install-git)"
67
echo " - jbang (https://www.jbang.dev/download)"
78
echo " - jq (https://stedolan.github.io/jq)"
89
echo
910
echo "Syntax: run-benchmarks.sh [options]"
1011
echo "options:"
12+
echo " -b <SCM_REPO_BRANCH> The branch in the SCM repo"
13+
echo " Default: 'main'"
1114
echo " -c <CGROUPS_CPUs> Constrain to certain CPUs via cgroups"
1215
echo " NOTE: Can be a comma-separated list (i.e. '0,2,4,6,8,10,12,14')"
1316
echo " -g <GRAALVM_VERSION> The GraalVM version to use (from SDKMAN)"
@@ -20,6 +23,8 @@ help() {
2023
echo " Default: 3"
2124
echo " -j <JAVA_VERSION> The Java version to use (from SDKMAN)"
2225
echo " Default: 25-tem"
26+
echo " -l <SCM_REPO_URL> The SCM repo url"
27+
echo " Default: 'https://github.com/quarkusio/spring-quarkus-perf-comparison.git'"
2328
echo " -m <CGROUPS_MAX_MEMORY> Constrain available memory via cgroups"
2429
echo " Default: 14G"
2530
echo " -n <NATIVE_QUARKUS_BUILD_OPTIONS> Native build options to be passed to Quarkus native build process"
@@ -89,6 +94,8 @@ print_values() {
8994
echo " JVM_MEMORY: $JVM_MEMORY"
9095
echo " WAIT_TIME: $WAIT_TIME"
9196
echo " CMD_PREFIX: $CMD_PREFIX"
97+
echo " SCM_REPO_URL: $SCM_REPO_URL"
98+
echo " SCM_REPO_BRANCH: $SCM_REPO_BRANCH"
9299
}
93100

94101
make_json_array() {
@@ -128,12 +135,17 @@ run_benchmarks() {
128135
-S config.NATIVE_SPRING_BUILD_OPTIONS=${NATIVE_SPRING_BUILD_OPTIONS} \
129136
-S config.profiler.events=cpu \
130137
-S ITERATIONS=${ITERATIONS} \
138+
-S PROJ_REPO_BRANCH=${SCM_REPO_BRANCH} \
139+
-S PROJ_REPO_NAME="$(basename ${SCM_REPO_URL} .git)" \
140+
-S PROJ_REPO_URL=${SCM_REPO_URL} \
131141
-S env.TARGET=${target} \
132142
--stream-logging
133143
}
134144

135145
# Define defaults
136146
CGROUPS_CPUS=""
147+
SCM_REPO_URL="https://github.com/quarkusio/spring-quarkus-perf-comparison.git"
148+
SCM_REPO_BRANCH="main"
137149
GRAALVM_VERSION="25-graalce"
138150
HOST="LOCAL"
139151
ITERATIONS="3"
@@ -154,8 +166,11 @@ WAIT_TIME="20"
154166
CMD_PREFIX=""
155167

156168
# Process the inputs
157-
while getopts "c:g:h:i:j:m:n:o:p:q:r:s:t:u:v:w:x:" option; do
169+
while getopts "b:c:g:h:i:j:l:m:n:o:p:q:r:s:t:u:v:w:x:" option; do
158170
case $option in
171+
b) SCM_REPO_BRANCH=$OPTARG
172+
;;
173+
159174
c) CGROUPS_CPUS=$OPTARG
160175
;;
161176

@@ -171,6 +186,9 @@ while getopts "c:g:h:i:j:m:n:o:p:q:r:s:t:u:v:w:x:" option; do
171186
j) JAVA_VERSION=$OPTARG
172187
;;
173188

189+
l) SCM_REPO_URL=$OPTARG
190+
;;
191+
174192
m) CGROUPS_MAX_MEMORY=$OPTARG
175193
;;
176194

0 commit comments

Comments
 (0)