-
Notifications
You must be signed in to change notification settings - Fork 334
Expand file tree
/
Copy pathmacrobenchmarks.yml
More file actions
140 lines (130 loc) · 4.94 KB
/
macrobenchmarks.yml
File metadata and controls
140 lines (130 loc) · 4.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
include:
- project: 'DataDog/benchmarking-platform-tools'
file: 'images/templates/gitlab/notify-slo-breaches.template.yml'
- project: 'DataDog/benchmarking-platform-tools'
file: 'images/templates/gitlab/check-slo-breaches.template.yml'
.macrobenchmarks:
stage: macrobenchmarks
rules:
- if: $POPULATE_CACHE
when: never
- if: ($NIGHTLY_BENCHMARKS || $CI_PIPELINE_SOURCE != "schedule") && $CI_COMMIT_REF_NAME == "master"
when: always
interruptible: false
- when: manual
interruptible: true
allow_failure: true
tags: ["runner:apm-k8s-same-cpu"]
needs: ["build"]
timeout: 1h
image: 486234852809.dkr.ecr.us-east-1.amazonaws.com/ci/benchmarking-platform:dd-trace-java-petclinic
script:
- git clone --branch java/petclinic https://gitlab-ci-token:${CI_JOB_TOKEN}@gitlab.ddbuild.io/DataDog/benchmarking-platform platform && cd platform
- ./steps/run-benchmarks.sh
artifacts:
name: "artifacts"
when: always
paths:
- platform/artifacts/
expire_in: 3 months
variables:
K6_OPTIONS_WARMUP_RATE: 2000
K6_OPTIONS_WARMUP_DURATION: 5m
K6_OPTIONS_WARMUP_GRACEFUL_STOP: 10s
K6_OPTIONS_WARMUP_PRE_ALLOCATED_VUS: 4
K6_OPTIONS_WARMUP_MAX_VUS: 4
K6_OPTIONS_NORMAL_OPERATION_RATE: 1500
K6_OPTIONS_NORMAL_OPERATION_DURATION: 10m
K6_OPTIONS_NORMAL_OPERATION_GRACEFUL_STOP: 10s
K6_OPTIONS_NORMAL_OPERATION_PRE_ALLOCATED_VUS: 4
K6_OPTIONS_NORMAL_OPERATION_MAX_VUS: 4
K6_OPTIONS_HIGH_LOAD_RATE: 4000
K6_OPTIONS_HIGH_LOAD_DURATION: 5m
K6_OPTIONS_HIGH_LOAD_GRACEFUL_STOP: 10s
K6_OPTIONS_HIGH_LOAD_PRE_ALLOCATED_VUS: 4
K6_OPTIONS_HIGH_LOAD_MAX_VUS: 4
retry:
max: 2
when:
- unknown_failure
- data_integrity_failure
- runner_system_failure
- scheduler_failure
- api_failure
baseline:
extends: .macrobenchmarks
variables:
BP_BENCHMARKS_CONFIGURATION: baseline
TRACER_OPTS: -Ddd.service=bp-java-petclinic
JAVA_OPTS: -javaagent:/app/memcheck/stability-testing-memwatch.jar -Xmx128M
only-tracing:
extends: .macrobenchmarks
variables:
BP_BENCHMARKS_CONFIGURATION: only-tracing
TRACER_OPTS: -javaagent:/app/dd-java-agent.jar -Ddd.env=${BP_BENCHMARKS_CONFIGURATION} -Ddd.service=bp-java-petclinic
JAVA_OPTS: -javaagent:/app/memcheck/stability-testing-memwatch.jar -Xmx128M
otel-latest:
extends: .macrobenchmarks
variables:
BP_BENCHMARKS_CONFIGURATION: otel-latest
TRACER_OPTS: -javaagent:/app/otel-java-agent.jar -Ddd.env=otel-latest -Ddd.service=bp-java-petclinic
JAVA_OPTS: -javaagent:/app/memcheck/stability-testing-memwatch.jar -Xmx128M
check-slo-breaches:
extends: .check-slo-breaches
stage: macrobenchmarks
interruptible: true
rules:
- if: $POPULATE_CACHE
when: never
- when: on_success
needs:
- job: baseline
artifacts: true
- job: only-tracing
artifacts: true
- job: otel-latest
artifacts: true
script:
# macrobenchmarks are located here, files are already in "converted" format
- export ARTIFACTS_DIR="$(pwd)/platform/artifacts/" && mkdir -p "${ARTIFACTS_DIR}"
# Need to move the artifacts the benchmarks-* job
- |
export BENCHMARKS_ARTIFACTS_DIR="$(pwd)/reports" && mkdir -p "${BENCHMARKS_ARTIFACTS_DIR}"
for benchmarkType in startup load dacapo; do
find "$BENCHMARKS_ARTIFACTS_DIR/$benchmarkType" -name "benchmark-baseline.json" -o -name "benchmark-candidate.json" | while read file; do
relpath="${file#$BENCHMARKS_ARTIFACTS_DIR/$benchmarkType/}"
prefix="${relpath%/benchmark-*}" # Remove the trailing /benchmark-(baseline|candidate).json
prefix="${prefix#./}" # Remove any leading ./
prefix="${prefix//\//-}" # Replace / with -
case "$file" in
*benchmark-baseline.json) type="baseline" ;;
*benchmark-candidate.json) type="candidate" ;;
esac
echo "Moving $file to $ARTIFACTS_DIR/${type}-${benchmarkType}-${prefix}.converted.json"
cp "$file" "$ARTIFACTS_DIR/${type}-${benchmarkType}-${prefix}.converted.json"
done
done
- ls -lah "$ARTIFACTS_DIR"
- bp-runner .gitlab/benchmarks/bp-runner.fail-on-breach.yml
artifacts:
name: "artifacts"
when: always
paths:
- platform/artifacts/
expire_in: 1 week
variables:
DDOCTOSTS_POLICY: "self.gitlab.github-access.read"
UPSTREAM_PROJECT_ID: $CI_PROJECT_ID # The ID of the current project. This ID is unique across all projects on the GitLab instance.
UPSTREAM_PROJECT_NAME: $CI_PROJECT_NAME # "dd-trace-java"
UPSTREAM_BRANCH: $CI_COMMIT_REF_NAME # The branch or tag name for which project is built.
UPSTREAM_COMMIT_SHA: $CI_COMMIT_SHA # The commit revision the project is built for.
notify-slo-breaches:
extends: .notify-slo-breaches
stage: macrobenchmarks
needs: ["check-slo-breaches"]
rules:
- if: $POPULATE_CACHE
when: never
- when: always
variables:
CHANNEL: "apm-java-ops-bot"