blob: e403a4034ea045a123fbee175ee10c12c2d498ba [file] [log] [blame]
Chase Qid7b8e0a2016-11-11 17:06:50 +08001#!/bin/sh -e
2
3# This test script run docker storage driver benchmarks and tests.
4# Test suite source https://github.com/dmcgowan/dsdbench
5
6# shellcheck disable=SC1091
7. ../../lib/sh-test-lib
8OUTPUT="$(pwd)/output"
9TEST_SUITE="BENCHMARKS"
10RESULT_FILE="${OUTPUT}/result.txt"
11LOG_FILE="${OUTPUT}/dsbench.txt"
12
13usage() {
14 echo "Usage: $0 [-t <benchmarks|tests>] [-s <true|false>]" 1>&2
15 exit 1
16}
17
18while getopts "t:s:h" o; do
19 case "$o" in
20 t) TEST_SUITE="${OPTARG}" ;;
21 s) SKIP_INSTALL="${OPTARG}" ;;
22 h|*) usage ;;
23 esac
24done
25
26dist_name
27# shellcheck disable=SC2154
28case "${dist}" in
29 Debian|Ubuntu) pkgs="git golang libdevmapper-dev" ;;
30 Fedora|CentOS) pkgs="git golang device-mapper-devel" ;;
31esac
32install_deps "${pkgs}" "${SKIP_INSTALL}"
33
34! check_root && error_msg "You need to be root to run this script."
35[ -d "${OUTPUT}" ] && mv "${OUTPUT}" "${OUTPUT}_$(date +%Y%m%d%H%M%S)"
36mkdir -p "${OUTPUT}/golang"
37cd "${OUTPUT}"
38export GOPATH="${OUTPUT}/golang"
39git clone https://github.com/dmcgowan/dsdbench
40cd dsdbench
41cp -r vendor/ "${GOPATH}/src"
42
43if [ "${TEST_SUITE}" = "BENCHMARKS" ]; then
44 # Run benchmarks.
Chase Qid2718692016-12-15 16:52:50 +080045 DOCKER_GRAPHDRIVER=overlay2 go test -run=NONE -v -bench . \
Chase Qid7b8e0a2016-11-11 17:06:50 +080046 | tee "${LOG_FILE}"
47
48 # Parse log file.
49 egrep "^Benchmark.*op$" "${LOG_FILE}" \
50 | awk '{printf("%s pass %s %s\n", $1,$3,$4)}' \
51 | tee -a "${RESULT_FILE}"
52elif [ "${TEST_SUITE}" = "TESTS" ]; then
53 # Run tests.
Chase Qid2718692016-12-15 16:52:50 +080054 DOCKER_GRAPHDRIVER=overlay2 go test -v . \
Chase Qid7b8e0a2016-11-11 17:06:50 +080055 | tee "${LOG_FILE}"
56
57 # Parse log file.
58 for result in PASS FAIL SKIP; do
59 grep "\-\-\- ${result}" "${LOG_FILE}" \
60 | awk -v result="${result}" '{printf("%s %s\n", $3,result)}' \
61 | tee -a "${RESULT_FILE}"
62 done
63fi