summaryrefslogtreecommitdiff
path: root/scripts/benchmark/benchmark-all-commits.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/benchmark/benchmark-all-commits.sh')
-rwxr-xr-xscripts/benchmark/benchmark-all-commits.sh60
1 files changed, 60 insertions, 0 deletions
diff --git a/scripts/benchmark/benchmark-all-commits.sh b/scripts/benchmark/benchmark-all-commits.sh
new file mode 100755
index 00000000..60c37df9
--- /dev/null
+++ b/scripts/benchmark/benchmark-all-commits.sh
@@ -0,0 +1,60 @@
+#!/bin/bash -x
+#
+# Go backwards in git history and run benchmark tests
+# Export PYTEST_OPTS so pytest will post metrics to an elasticsearch
+# instance, i.e.
+#
+# export PYTEST_OPTS='--benchmark-autosave --benchmark-storage="elasticsearch+https://USER:PASSWORD@moose.leap.se:9200"'
+# or, for testing a single test group:
+# export PYTEST_OPTS='--benchmark-autosave --benchmark-storage="elasticsearch+https://USER:PASSWORD@moose.leap.se:9200" -m benchmark_test_instance'
+#
+# Todo
+#
+# - Error handling. This script is dump and will run forever.
+
+# Too many commits just fail for different reasons,
+# so we just benchmark thoses that succeed.
+#set -e
+
+
+
+#rm -rf testing/.tox
+
+while /bin/true
+do
+
+ commit_id=$(git rev-parse HEAD)
+ echo -e '\n\n\n\n\n'
+ echo -e "\e[34m$(date): Starting benchmarking of commit ${commit_id:0:8}, which is $(git rev-list --count ${commit_id}..origin/master) commits back from master:\e[0m"
+ echo
+ git show | head -6
+ echo
+
+ # Option 1: Run couchdb + tox localy - dirty!
+ # curl -s localhost:5984 || exit 1
+ # Make sure we kill all leftover soledad server/pytest procs
+ #pkill -f -9 tox
+ #git checkout origin/master testing/tox.ini testing/tests/benchmarks/conftest.py testing/tests/conftest.py
+ #tox -c testing/tox.ini -e benchmark -- -x "$PYTEST_OPTS"
+ #git reset HEAD testing/tox.ini
+ #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 \
+ benchmark \
+ --timeout 7200 \
+ --env PYTEST_OPTS="$PYTEST_OPTS" \
+ --env HOST_HOSTNAME="$(hostname)"
+
+ code=$?
+ echo "$(date -Iseconds) ${commit_id} ${code}" >> results.txt
+
+ echo
+ echo -e "\e[34m$(date): Finished benchmarking of commit ${commit_id:0:8}, which is $(git rev-list --count ${commit_id}..origin/master) commits back from master:\e[0m"
+ echo
+ git show | head -6
+ echo
+
+ git reset --hard HEAD^
+done