From 3b51520b4be2f48a204bc0d630c88058ed51afa9 Mon Sep 17 00:00:00 2001 From: drebs Date: Fri, 7 Jul 2017 20:05:39 -0300 Subject: [benchmark] setup env for benchmark-all-commits conditionally --- scripts/benchmark/README.md | 2 ++ scripts/benchmark/benchmark-all-commits.sh | 4 +-- scripts/benchmark/setup-all-commits-env.sh | 43 ++++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+), 2 deletions(-) create mode 100755 scripts/benchmark/setup-all-commits-env.sh (limited to 'scripts') diff --git a/scripts/benchmark/README.md b/scripts/benchmark/README.md index 0910219a..4df43b3d 100644 --- a/scripts/benchmark/README.md +++ b/scripts/benchmark/README.md @@ -16,6 +16,8 @@ So what this script does is the following: - check out .gitlab-ci.yml from current master. - use gitlab-runner to exec a build locally. + - set an environment variable (BENCHMARK_ALL_COMMITS=1)so the build script + knows that it has to setup the environment. - store timestamp and exit status of each run. - checkout previous commit and iterate. diff --git a/scripts/benchmark/benchmark-all-commits.sh b/scripts/benchmark/benchmark-all-commits.sh index 7de63e17..57b2adc2 100755 --- a/scripts/benchmark/benchmark-all-commits.sh +++ b/scripts/benchmark/benchmark-all-commits.sh @@ -45,8 +45,8 @@ do #git checkout testing/tox.ini testing/tests/benchmarks/conftest.py testing/tests/conftest.py # Option 2: Run couchdb + tox in docker container using gitlab-runner - git checkout origin/benchmark-all-commits .gitlab-ci.yml - time gitlab-runner exec docker \ + git checkout origin/master .gitlab-ci.yml + BENCHMARK_ALL_COMMITS=1 time gitlab-runner exec docker \ benchmark \ --timeout 7200 \ --env PYTEST_OPTS="$PYTEST_OPTS" \ diff --git a/scripts/benchmark/setup-all-commits-env.sh b/scripts/benchmark/setup-all-commits-env.sh new file mode 100755 index 00000000..79a9324b --- /dev/null +++ b/scripts/benchmark/setup-all-commits-env.sh @@ -0,0 +1,43 @@ +#!/bin/sh + +# This script is supposed to be called while running the benchmark job defined +# in `/.gitlab-ci.yml`, to setup the environment when benchmarking all commits +# back in time. It will checkout some needed files and do whatever is needed to +# run tests from older versions of the repository with the newest benchmarking +# facilities. + +set -e + +# By default, gitlab-runner will checkout in a detached HEAD (see +# https://gitlab.com/gitlab-org/gitlab-ce/issues/19421) We want +# pytest-benchmark to report the proper branch name, so we make sure we stay at +# the current branch. + +# Variable names have changed in latest version of gitlab, but the doc seems to +# be outdated (see also https://docs.gitlab.com/ce/ci/variables/README.html). + +# Old variable names: +#git checkout -B "$CI_BUILD_RF_NAME" "$CI_BUILD_REF" + +# New (expected) variable names: +#git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_SHA" + +# Working variable names: +git checkout -B "$CI_COMMIT_REF_NAME" "$CI_COMMIT_REF" + +# Gitlab will checkout current revision as master / origin/master +# We need some files from the "furure" in order to post the right +# benchmarking data to elasticsearch. +git remote add leap https://leap.se/git/soledad +git fetch leap +git checkout leap/master \ + testing/tox.ini \ + testing/tests/benchmarks/conftest.py \ + testing/tests/conftest.py \ + testing/check-pysqlcipher.py \ + scripts/benchmark/tune-adbapi-parameters.sh + +# ensure larger timeout and more retries for async/concurrent sqlcipher access +./scripts/benchmark/tune-adbapi-parameters.sh +git status +git show -s --pretty=fuller -- cgit v1.2.3