Merged in feature/splittest (pull request #137)

Split Slow DB Test

* split
This commit is contained in:
Michael McGuinness
2025-05-09 23:49:02 +00:00
parent c4c0b9bd32
commit b5c30b4af7
4 changed files with 270 additions and 240 deletions
+54 -19
View File
@@ -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