Phase 29: add project benchmarks, endurance stress and callback safety checks
This commit is contained in:
parent
ca6c869b0b
commit
afc049e2c8
14 changed files with 1032 additions and 43 deletions
34
Makefile
34
Makefile
|
|
@ -245,14 +245,14 @@ test-recovery: $(BUILD_DIR)/test_recovery
|
|||
|
||||
# Linux/GNU-compatible linker test; no instrumentation in production objects.
|
||||
$(BUILD_DIR)/test_reliability: $(BUILD_DIR)/tests/integration/test_reliability.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -Wl,--wrap=malloc,--wrap=calloc,--wrap=realloc,--wrap=free
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl -Wl,--wrap=malloc,--wrap=calloc,--wrap=realloc,--wrap=free,--wrap=fopen,--wrap=fread,--wrap=fwrite,--wrap=read,--wrap=write,--wrap=pthread_mutex_lock,--wrap=pthread_cond_wait -pthread
|
||||
|
||||
.PHONY: test-reliability test-sanitize analyze
|
||||
test-reliability: test $(BUILD_DIR)/test_reliability
|
||||
./$(BUILD_DIR)/test_reliability
|
||||
|
||||
test-sanitize:
|
||||
ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 UBSAN_OPTIONS=halt_on_error=1 $(MAKE) BUILD_DIR="$(BUILD_DIR)/sanitize" CC=clang CFLAGS="-O1 -g -std=c99 -Wall -Wextra -Wpedantic -Wconversion -Wshadow -Iinclude -fsanitize=address,undefined -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address,undefined" test-reliability test-recovery
|
||||
ASAN_OPTIONS=detect_leaks=1:halt_on_error=1 UBSAN_OPTIONS=halt_on_error=1 $(MAKE) BUILD_DIR="$(BUILD_DIR)/sanitize" CC=clang CFLAGS="-O1 -g -std=c99 -Wall -Wextra -Wpedantic -Wconversion -Wshadow -Iinclude -fsanitize=address,undefined -fno-omit-frame-pointer" LDFLAGS="-fsanitize=address,undefined" test-reliability test-recovery test-scale test-soak
|
||||
|
||||
analyze:
|
||||
$(PYTHON) tools/analyze.py $(CORE_SOURCES)
|
||||
|
|
@ -350,7 +350,7 @@ $(BUILD_DIR)/benchmark_graph: $(BUILD_DIR)/tests/integration/benchmark_graph.o $
|
|||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
.PHONY: benchmark
|
||||
benchmark: $(BUILD_DIR)/benchmark_graph
|
||||
$(PYTHON) tools/benchmark.py --binary "$(BUILD_DIR)/benchmark_graph" --output "$(BUILD_DIR)/performance.json" --compiler "$(CC)" --flags "$(CFLAGS)"
|
||||
$(PYTHON) tools/benchmark.py --binary "$(BUILD_DIR)/benchmark_graph" --output "$(BUILD_DIR)/performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)"
|
||||
-include $(BUILD_DIR)/tests/integration/benchmark_graph.d
|
||||
|
||||
$(BUILD_DIR)/test_scale: $(BUILD_DIR)/tests/integration/test_scale.o $(BUILD_DIR)/libxtc.a
|
||||
|
|
@ -359,14 +359,15 @@ $(BUILD_DIR)/test_scale: $(BUILD_DIR)/tests/integration/test_scale.o $(BUILD_DIR
|
|||
test-scale: $(BUILD_DIR)/test_scale
|
||||
./$(BUILD_DIR)/test_scale
|
||||
test-stress: $(BUILD_DIR)/test_realtime $(BUILD_DIR)/test_reliability $(BUILD_DIR)/test_scale $(if $(GUI_AVAILABLE),$(BUILD_DIR)/test_gui)
|
||||
$(PYTHON) tools/stress.py --build-dir "$(BUILD_DIR)" $(if $(GUI_AVAILABLE),--gui)
|
||||
$(PYTHON) tools/stress.py --build-dir "$(BUILD_DIR)" --rounds "$(STRESS_ROUNDS)" $(if $(GUI_AVAILABLE),--gui)
|
||||
-include $(BUILD_DIR)/tests/integration/test_scale.d
|
||||
|
||||
BENCHMARK_BLOCKS ?= 300
|
||||
BENCHMARK_BASELINE ?= docs/performance-baseline.json
|
||||
BENCHMARK_MAX_REGRESSION ?= 1.5
|
||||
.PHONY: benchmark-compare
|
||||
benchmark-compare: $(BUILD_DIR)/benchmark_graph
|
||||
$(PYTHON) tools/benchmark.py --binary "$(BUILD_DIR)/benchmark_graph" --output "$(BUILD_DIR)/performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --baseline "$(BENCHMARK_BASELINE)" --max-regression "$(BENCHMARK_MAX_REGRESSION)"
|
||||
$(PYTHON) tools/benchmark.py --binary "$(BUILD_DIR)/benchmark_graph" --output "$(BUILD_DIR)/performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)" --baseline "$(BENCHMARK_BASELINE)" --max-regression "$(BENCHMARK_MAX_REGRESSION)"
|
||||
|
||||
PACKAGE_ARCH := $(shell uname -m)
|
||||
PACKAGE_FILE := $(BUILD_DIR)/xtc-$(VERSION)-linux-$(PACKAGE_ARCH).tar.gz
|
||||
|
|
@ -430,3 +431,26 @@ test: test-project-diagnostics
|
|||
test-project-inspection: $(BUILD_DIR)/xtc-check
|
||||
$(PYTHON) tests/integration/test_project_inspection.py $(BUILD_DIR)/xtc-check
|
||||
test: test-project-inspection
|
||||
|
||||
$(BUILD_DIR)/test_soak: $(BUILD_DIR)/tests/integration/test_soak.o $(BUILD_DIR)/libxtc.a
|
||||
$(CC) $(LDFLAGS) -o $@ $^ -lm -ldl
|
||||
.PHONY: test-soak benchmark-project benchmark-project-compare check-development
|
||||
test-soak: $(BUILD_DIR)/test_soak
|
||||
./$(BUILD_DIR)/test_soak
|
||||
PROJECT_BENCHMARK_BASELINE ?= docs/project-performance-baseline.json
|
||||
STRESS_ROUNDS ?= 3
|
||||
test-stress: $(BUILD_DIR)/test_portability $(BUILD_DIR)/test_project_diagnostics $(BUILD_DIR)/test_soak $(BACKEND_TEST)
|
||||
benchmark-project: $(BUILD_DIR)/test_performance
|
||||
$(PYTHON) tools/benchmark.py --workload project --binary "$(BUILD_DIR)/test_performance" --output "$(BUILD_DIR)/project-performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)"
|
||||
benchmark-project-compare: $(BUILD_DIR)/test_performance
|
||||
$(PYTHON) tools/benchmark.py --workload project --binary "$(BUILD_DIR)/test_performance" --output "$(BUILD_DIR)/project-performance.json" --compiler "$(CC)" --flags "$(CFLAGS)" --blocks "$(BENCHMARK_BLOCKS)" --baseline "$(PROJECT_BENCHMARK_BASELINE)" --max-regression "$(BENCHMARK_MAX_REGRESSION)"
|
||||
check-development: all test-reliability test-scale test-soak analyze test-sanitize
|
||||
-include $(BUILD_DIR)/tests/integration/test_soak.d
|
||||
.PHONY: test-benchmark-tools
|
||||
test-benchmark-tools:
|
||||
$(PYTHON) tests/tools/test_benchmark.py
|
||||
check-development: test-benchmark-tools
|
||||
|
||||
.PHONY: test-stress-plugins
|
||||
test-stress-plugins: $(BUILD_DIR)/test_realtime $(BUILD_DIR)/test_reliability $(BUILD_DIR)/test_scale $(BUILD_DIR)/test_portability $(BUILD_DIR)/test_project_diagnostics $(BUILD_DIR)/test_soak $(BACKEND_TEST) $(BUILD_DIR)/test_plugins $(BUILD_DIR)/plugin-fixture.so
|
||||
$(PYTHON) tools/stress.py --build-dir "$(BUILD_DIR)" --rounds "$(STRESS_ROUNDS)" --plugin "$(BUILD_DIR)/plugin-fixture.so"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue