Skip to content

Commit

Permalink
Remove duplication of code in bash scripts
Browse files Browse the repository at this point in the history
  • Loading branch information
ddyurchenko committed Mar 15, 2023
1 parent e164c54 commit d4fa189
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 22 deletions.
10 changes: 3 additions & 7 deletions .gitlab/scripts/analyze-results.sh
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
#!/usr/bin/env bash

# Change threshold for detection of regression
# @see https://github.com/DataDog/relenv-benchmark-analyzer#what-is-a-significant-difference
export UNCONFIDENCE_THRESHOLD=2.0
export FAIL_ON_REGRESSION_THRESHOLD=2.0
source ./.gitlab/scripts/config-benchmarks.sh
INITIAL_DIR=$(pwd)

CANDIDATE_BRANCH=$CI_COMMIT_REF_NAME
CANDIDATE_SRC="/app/candidate/"

cd "$CANDIDATE_SRC"
CANDIDATE_COMMIT_SHA=$(git rev-parse --short HEAD)
Expand All @@ -21,7 +18,6 @@ benchmark_analyzer convert \
--outpath="${ARTIFACTS_DIR}/pr.converted.json" \
"${ARTIFACTS_DIR}/pr_bench.txt"

BASELINE_SRC="/app/baseline/"
if [ -d $BASELINE_SRC ]; then
BASELINE_BRANCH=$(github-find-merge-into-branch --for-repo="$CI_PROJECT_NAME" --for-pr="$CANDIDATE_BRANCH" || :)

Expand Down Expand Up @@ -54,7 +50,7 @@ if [ -d $BASELINE_SRC ]; then
--format md-nodejs \
"${ARTIFACTS_DIR}/main.converted.json" \
"${ARTIFACTS_DIR}/pr.converted.json"; then
"$ARTIFACTS_DIR/../.gitlab/scripts/run-benchmarks-with-profiler.sh"
"$INITIAL_DIR/.gitlab/scripts/run-benchmarks-with-profiler.sh"
fi
else
benchmark_analyzer analyze --outpath "${ARTIFACTS_DIR}/analysis.html" --format html "${ARTIFACTS_DIR}/pr.converted.json"
Expand Down
11 changes: 11 additions & 0 deletions .gitlab/scripts/config-benchmarks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/usr/bin/env bash

export CANDIDATE_SRC="/app/candidate/"
export BASELINE_SRC="/app/baseline/"

# Change threshold for detection of regression
# @see https://github.com/DataDog/relenv-benchmark-analyzer#what-is-a-significant-difference
export UNCONFIDENCE_THRESHOLD=2.0
export FAIL_ON_REGRESSION_THRESHOLD=$UNCONFIDENCE_THRESHOLD

export BENCHMARK_TARGETS="BenchmarkConcurrentTracing|BenchmarkStartSpan|BenchmarkSingleSpanRetention|BenchmarkInjectW3C"
27 changes: 15 additions & 12 deletions .gitlab/scripts/run-benchmarks-with-profiler.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,34 +2,34 @@

set -e

CANDIDATE_SRC="/app/candidate/"
BASELINE_SRC="/app/baseline/"
source ./.gitlab/scripts/config-benchmarks.sh

mkdir -p "${ARTIFACTS_DIR}/candidate-profile"
cd "$CANDIDATE_SRC/ddtrace/tracer/"
DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-go.dd_api_key --with-decryption --query "Parameter.Value" --out text)
INTAKE_API_HOST=intake.profile.datad0g.com

PROFILER_RUNS_START_DATE=$(date -u --iso-8601=minutes | sed 's/\+.*/Z/')

# Run candidate and baseline the same way like in run-benchmarks.sh, but with profiler enabled
mkdir -p "${ARTIFACTS_DIR}/candidate-profile"
cd "$CANDIDATE_SRC/ddtrace/tracer/"
CANDIDATE_START_DATE=$(date -u --iso-8601=seconds | sed 's/\+.*/Z/')
go test -run=XXX -bench "BenchmarkConcurrentTracing|BenchmarkStartSpan" \
go test -run=XXX -bench $BENCHMARK_TARGETS \
-cpuprofile "${ARTIFACTS_DIR}/candidate-profile/cpu.pprof" \
-memprofile "${ARTIFACTS_DIR}/candidate-profile/delta-heap.pprof" \
-benchmem -count 10 -benchtime 2s ./...
CANDIDATE_END_DATE=$(date -u --iso-8601=seconds | sed 's/\+.*/Z/')

BASELINE_START_DATE=$(date -u --iso-8601=seconds | sed 's/\+.*/Z/')
mkdir -p "${ARTIFACTS_DIR}/baseline-profile"
cd "$BASELINE_SRC/ddtrace/tracer/"
go test -run=XXX -bench "BenchmarkConcurrentTracing|BenchmarkStartSpan" \
BASELINE_START_DATE=$(date -u --iso-8601=seconds | sed 's/\+.*/Z/')
go test -run=XXX -bench $BENCHMARK_TARGETS \
-cpuprofile "${ARTIFACTS_DIR}/baseline-profile/cpu.pprof" \
-memprofile "${ARTIFACTS_DIR}/baseline-profile/delta-heap.pprof" \
-benchmem -count 10 -benchtime 2s ./...
BASELINE_END_DATE=$(date -u --iso-8601=seconds | sed 's/\+.*/Z/')

PROFILER_RUNS_END_DATE=$(date -d '+1 min' -u --iso-8601=minutes | sed 's/\+.*/Z/')

DD_API_KEY=$(aws ssm get-parameter --region us-east-1 --name ci.dd-trace-go.dd_api_key --with-decryption --query "Parameter.Value" --out text)

# Upload profiles to Datadog
cd "${ARTIFACTS_DIR}/baseline-profile"
curl -i \
Expand All @@ -39,7 +39,7 @@ curl -i \
-F "delta-heap.pprof=@delta-heap.pprof" \
-F "cpu.pprof=@cpu.pprof" \
-F "event=@-;type=application/json" \
https://intake.profile.datad0g.com/api/v2/profile <<END
https://$INTAKE_API_HOST/api/v2/profile <<END
{
"attachments":[ "cpu.pprof", "delta-heap.pprof" ],
"tags_profiler":"service:dd-trace-go-benchmarks,job_id:$CI_JOB_ID,config:baseline",
Expand All @@ -58,7 +58,7 @@ curl -i \
-F "delta-heap.pprof=@delta-heap.pprof" \
-F "cpu.pprof=@cpu.pprof" \
-F "event=@-;type=application/json" \
https://intake.profile.datad0g.com/api/v2/profile <<END
https://$INTAKE_API_HOST/api/v2/profile <<END
{
"attachments":[ "cpu.pprof", "delta-heap.pprof" ],
"tags_profiler":"service:dd-trace-go-benchmarks,job_id:$CI_JOB_ID,config:candidate",
Expand All @@ -72,4 +72,7 @@ END
echo ""
echo ""
echo "Profiles were uploaded to Datadog! Open the following link to see them:"
echo "https://dd.datad0g.com/profiling/comparison?query=service%3Add-trace-go-benchmarks&compare_end_A=$(date -d"$PROFILER_RUNS_END_DATE" +%s)000&compare_end_B=$(date -d"$PROFILER_RUNS_END_DATE" +%s)000&compare_query_A=service%3Add-trace-go-benchmarks%20config%3Acandidate%20%20job_id%3A${CI_JOB_ID}&compare_query_B=service%3Add-trace-go-benchmarks%20config%3Abaseline%20job_id%3A${CI_JOB_ID}&compare_start_A=$(date -d"$PROFILER_RUNS_START_DATE" +%s)000&compare_start_B=$(date -d"$PROFILER_RUNS_START_DATE" +%s)000&compareValuesMode=absolute&my_code=enabled&viz=flame_graph&paused=true"
echo ""
echo "https://dd.datad0g.com/profiling/comparison?query=service%3Add-trace-go-benchmarks&compare_end_A=$(date -d"$PROFILER_RUNS_END_DATE" +%s)000&compare_end_B=$(date -d"$PROFILER_RUNS_END_DATE" +%s)000&compare_query_B=service%3Add-trace-go-benchmarks%20config%3Acandidate%20%20job_id%3A${CI_JOB_ID}&compare_query_A=service%3Add-trace-go-benchmarks%20config%3Abaseline%20job_id%3A${CI_JOB_ID}&compare_start_A=$(date -d"$PROFILER_RUNS_START_DATE" +%s)000&compare_start_B=$(date -d"$PROFILER_RUNS_START_DATE" +%s)000&compareValuesMode=absolute&my_code=enabled&viz=flame_graph&paused=true"
echo ""
echo ""
5 changes: 2 additions & 3 deletions .gitlab/scripts/run-benchmarks.sh
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@

set -ex

CANDIDATE_SRC="/app/candidate/"
source ./.gitlab/scripts/config-benchmarks.sh

CANDIDATE_BRANCH=$CI_COMMIT_REF_NAME
CANDIDATE_COMMIT_SHA=$CI_COMMIT_SHA
BENCHMARK_TARGETS="BenchmarkConcurrentTracing|BenchmarkStartSpan|BenchmarkSingleSpanRetention|BenchmarkInjectW3C"

# Clone candidate release
git clone --branch "$CANDIDATE_BRANCH" https://github.com/DataDog/dd-trace-go "$CANDIDATE_SRC" && \
Expand All @@ -16,7 +16,6 @@ git clone --branch "$CANDIDATE_BRANCH" https://github.com/DataDog/dd-trace-go "$
cd "$CANDIDATE_SRC/ddtrace/tracer/"
go test -run=XXX -bench $BENCHMARK_TARGETS -benchmem -count 10 -benchtime 2s ./... | tee "${ARTIFACTS_DIR}/pr_bench.txt"

BASELINE_SRC="/app/baseline/"
BASELINE_BRANCH=$(github-find-merge-into-branch --for-repo="$CI_PROJECT_NAME" --for-pr="$CANDIDATE_BRANCH" || :)

if [ ! -z "$BASELINE_BRANCH" ]; then
Expand Down

0 comments on commit d4fa189

Please sign in to comment.