Merged in feature/splittest (pull request #137)
Split Slow DB Test * split
This commit is contained in:
+54
-19
@@ -6,6 +6,7 @@ version: "3"
|
||||
vars:
|
||||
COVERAGE_FILE: "{{.OUT_DIR}}/coverage.out"
|
||||
BENCH_FILE: "{{.OUT_DIR}}/bench.out"
|
||||
TEST_FILE: "{{.OUT_DIR}}/test.out"
|
||||
INTERNAL: "./internal/..."
|
||||
API: "./api/..."
|
||||
PKG: "./pkg/..."
|
||||
@@ -44,6 +45,33 @@ tasks:
|
||||
-coverprofile={{.COVERAGE_FILE}} \
|
||||
./...
|
||||
- task: coverage
|
||||
perf:
|
||||
vars:
|
||||
NUM_RESULTS: 5
|
||||
cmds:
|
||||
- GOMAXPROCS={{.TEST_PARALLEL}} go test -parallel {{.CPU_COUNT}} -json ./...
|
||||
- |
|
||||
echo -e "🐢 TOP {{.NUM_RESULTS}} SLOWEST INDIVIDUAL PACKAGE RUNS:"
|
||||
jq -r 'select(.Action == "pass" and .Test == null) | "\(.Elapsed)s \(.Package)"' "{{.TEST_FILE}}" | \
|
||||
sort -rn | head -n {{.NUM_RESULTS}}
|
||||
|
||||
echo -e "\n📉 TOP {{.NUM_RESULTS}} SLOWEST TESTS:"
|
||||
jq -r 'select(.Action == "pass" and .Test != null) | "\(.Elapsed)s \(.Test) (\(.Package))"' "{{.TEST_FILE}}" | \
|
||||
sort -rn | head -n {{.NUM_RESULTS}}
|
||||
|
||||
echo -e "\n📦 TOP {{.NUM_RESULTS}} SLOWEST PACKAGES (TOTAL TIME):"
|
||||
jq -r 'select(.Action == "pass") | [.Package, .Elapsed] | @tsv' "{{.TEST_FILE}}" |
|
||||
awk '{pkg[$1] += $2} END {for (p in pkg) print pkg[p] "s " p}' |
|
||||
sort -rn | head -n {{.NUM_RESULTS}}
|
||||
|
||||
SLOWEST_PKG=$(jq -r 'select(.Action == "pass") | [.Package, .Elapsed] | @tsv' "{{.TEST_FILE}}" |
|
||||
awk '{pkg[$1] += $2} END {for (p in pkg) print pkg[p] "s " p}' |
|
||||
sort -rn | head -n 1 | awk '{print $2}')
|
||||
|
||||
echo -e "\n🔎 TOP {{.NUM_RESULTS}} SLOWEST TESTS IN SLOWEST PACKAGE ($SLOWEST_PKG):"
|
||||
jq -r --arg pkg "$SLOWEST_PKG" \
|
||||
'select(.Action == "pass" and .Test != null and .Package == $pkg) | "\(.Elapsed)s \(.Test)"' "{{.TEST_FILE}}" |
|
||||
sort -rn | head -n {{.NUM_RESULTS}}
|
||||
bench:
|
||||
vars:
|
||||
TMP_FILE: "{{.OUT_DIR}}/coverage.tmp"
|
||||
@@ -65,37 +93,44 @@ tasks:
|
||||
TMP_FILE: "{{.OUT_DIR}}/coverage.tmp"
|
||||
FILTER_COVERAGE_FILE: "{{.OUT_DIR}}/filtered_coverage.out"
|
||||
cmds:
|
||||
- |
|
||||
grep -v -E "{{.EXCLUDED_FILES}}" {{.COVERAGE_FILE}} \
|
||||
> {{.FILTER_COVERAGE_FILE}}
|
||||
- grep -v -E "{{.EXCLUDED_FILES}}" {{.COVERAGE_FILE}} > {{.FILTER_COVERAGE_FILE}}
|
||||
- go tool cover -func={{.FILTER_COVERAGE_FILE}} > {{.TMP_FILE}}
|
||||
- |
|
||||
COVERAGE=$(grep total: {{.TMP_FILE}} \
|
||||
| awk '{print $3}' | sed 's/%//' | bc)
|
||||
COVERAGE=$(grep total: {{.TMP_FILE}} | awk '{print $NF}' | sed 's/%//')
|
||||
echo "Coverage Threshold: {{.COVERAGE_THRESHOLD}}%"
|
||||
echo "Total Coverage: $COVERAGE%"
|
||||
|
||||
FAIL=false
|
||||
if (( $(echo "$COVERAGE < {{.COVERAGE_THRESHOLD}}" | bc -l) )); then
|
||||
echo "❌ Error: Total Coverage below Coverage Threshold"
|
||||
FAIL=true
|
||||
fi
|
||||
|
||||
echo "Function Coverage Threshold: {{.FUNCTION_COVERAGE_THRESHOLD}}%"
|
||||
FAIL_FUNC=false
|
||||
grep -v total: {{.TMP_FILE}} | while read -r line; do
|
||||
FUNC_COV=$(echo "$line" | awk '{print $3}' | sed 's/%//' | bc)
|
||||
if (( $(echo "$FUNC_COV < \
|
||||
{{.FUNCTION_COVERAGE_THRESHOLD}}" | bc -l) )); then
|
||||
if [ "$FAIL_FUNC" = false ]; then
|
||||
echo "❌ Error: The following functions have coverage below "\
|
||||
"{{.FUNCTION_COVERAGE_THRESHOLD}}%:"
|
||||
FAIL_FUNC=true
|
||||
FAIL=true
|
||||
fi
|
||||
|
||||
echo "$line"
|
||||
fi
|
||||
done
|
||||
awk -v threshold="{{.FUNCTION_COVERAGE_THRESHOLD}}" '
|
||||
!/total:/ {
|
||||
line = $0;
|
||||
coverage = $NF;
|
||||
gsub(/%/, "", coverage);
|
||||
|
||||
if (coverage + 0 < threshold + 0) {
|
||||
if (!printed_header) {
|
||||
print "❌ Error: The following functions have coverage below " threshold "%:";
|
||||
printed_header = 1;
|
||||
}
|
||||
print line;
|
||||
exit_code = 1;
|
||||
}
|
||||
}
|
||||
END {
|
||||
exit exit_code;
|
||||
}
|
||||
' {{.TMP_FILE}}
|
||||
|
||||
if [ $? -eq 1 ]; then
|
||||
FAIL=true
|
||||
fi
|
||||
|
||||
if [ "$FAIL" = true ]; then
|
||||
exit 1
|
||||
|
||||
Reference in New Issue
Block a user