40 lines
1.3 KiB
Bash
40 lines
1.3 KiB
Bash
#!/bin/bash
|
|
#
|
|
# Copyright IBM Corp. All Rights Reserved.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
# Use ginkgo to run integration tests. If arguments are provided to the
|
|
# script, they are treated as the directories containing the tests to run.
|
|
# When no arguments are provided, all integration tests are executed.
|
|
|
|
set -eu
|
|
|
|
fabric_dir="$(cd "$(dirname "$0")/.." && pwd)"
|
|
cd "$fabric_dir"
|
|
|
|
declare -a test_dirs
|
|
if [ $# -eq 0 ]
|
|
then
|
|
while IFS='' read -r line; do test_dirs+=("$line"); done < <(
|
|
go list -f '{{ if or (len .TestGoFiles | ne 0) (len .XTestGoFiles | ne 0) }}{{ println .Dir }}{{ end }}' ./... | \
|
|
grep integration | \
|
|
sed s,"${fabric_dir}",.,g
|
|
)
|
|
else
|
|
for arg in "$@"; do test_dirs+=("./integration/$arg"); done
|
|
fi
|
|
|
|
total_agents=${SYSTEM_TOTALJOBSINPHASE:-1} # standard VSTS variables available using parallel execution; total number of parallel jobs running
|
|
agent_number=${SYSTEM_JOBPOSITIONINPHASE:-1} # current job position
|
|
|
|
declare -a dirs
|
|
for ((i = "$agent_number"; i <= "${#test_dirs[@]}"; )); do
|
|
dirs+=("${test_dirs[$i - 1]}")
|
|
i=$((i + total_agents))
|
|
done
|
|
|
|
printf "\nRunning the following test suites:\n\n%s\n\nStarting tests...\n\n" "$(echo "${dirs[@]}" | tr -s ' ' '\n')"
|
|
|
|
ginkgo --keep-going --slow-spec-threshold 60s --timeout 24h "${dirs[@]}"
|