-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathtest
More file actions
executable file
·73 lines (63 loc) · 1.99 KB
/
test
File metadata and controls
executable file
·73 lines (63 loc) · 1.99 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
#!/usr/bin/env bash
set -eu -o pipefail
: "${GITHUB_ACTIONS=}"
: "${GITHUB_EVENT_NAME=}"
: "${TEST_IMAGE_BUILD=1}"
: "${TEST_IMAGE_ID=buildkit-bench}"
: "${TEST_GEN=1}"
: "${TEST_RESULTS_DIR=bin/results}"
: "${TEST_KEEP_CACHE=}"
: "${TEST_FLAGS=}"
: "${TEST_PKG=}"
: "${TEST_BENCH_REGEXP=}"
: "${TEST_BENCH_TIME=}"
: "${TEST_BENCH_RUN=1}"
: "${BUILDKIT_REF_RANDOM=}"
if [ "$TEST_IMAGE_BUILD" = "1" ]; then
(
set -x
docker buildx bake tests --set "*.output=type=docker,name=$TEST_IMAGE_ID"
)
fi
testOutputDir="$(pwd)/$TEST_RESULTS_DIR"
mkdir -p "$testOutputDir"
cacheVolume="buildkit-bench-cache"
if ! docker container inspect "$cacheVolume" >/dev/null 2>/dev/null; then
docker create -v /root/.cache -v /root/.cache/registry -v /go/pkg/mod --name "$cacheVolume" alpine
fi
if [ "$TEST_KEEP_CACHE" != "1" ]; then
trap 'docker rm -v $cacheVolume >/dev/null' EXIT
fi
dockerConfigMount=""
if [ "$GITHUB_ACTIONS" = "true" ]; then
# use GitHub Actions docker config if available to avoid rate limiting
dockerConfigPath="$HOME/.docker/config.json"
if [ -f "$dockerConfigPath" ]; then
dockerConfigMount="-v $dockerConfigPath:/root/.docker/config.json:ro"
fi
# reduce the number of runs to 2 on PRs
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
if [ "$TEST_BENCH_RUN" -gt 2 ]; then
TEST_BENCH_RUN=2
fi
fi
fi
(
set -x
docker run --rm --privileged $dockerConfigMount \
-v /tmp \
-v $testOutputDir:/testout \
--volumes-from=$cacheVolume \
-e TEST_BENCH_RUN=$TEST_BENCH_RUN \
-e BUILDKIT_REF_RANDOM=$BUILDKIT_REF_RANDOM \
-e REGISTRY_MIRROR_DIR=/root/.cache/registry \
$TEST_IMAGE_ID \
sh -c "go test -bench=${TEST_BENCH_REGEXP:-.} -benchtime=${TEST_BENCH_TIME:-1s} -benchmem -json -mod=vendor ${TEST_FLAGS:--v} ${TEST_PKG:-./test/...} | gotestmetrics parse --output /testout/gotestoutput.json"
)
if [ "$TEST_GEN" = "1" ]; then
(
set -x
docker buildx bake tests-gen
)
echo "Benchmarks HTML report generated at ./bin/gen/index.html"
fi