TESTSRCS_C = $(wildcard [08]*-*.c) TESTSRCS_CXX= $(wildcard [08]*-*.cpp) OBJS = $(TESTSRCS_C:%.c=%.o) $(TESTSRCS_CXX:%.cpp=%.o) BIN = test-runner LIBS += -lrdkafka++ -lrdkafka OBJS += test.o rusage.o testcpp.o \ tinycthread.o tinycthread_extra.o rdlist.o sockem.o \ sockem_ctrl.o CFLAGS += -I../src CXXFLAGS += -I../src -I../src-cpp LDFLAGS += -rdynamic -L../src -L../src-cpp # Latest Kafka version KAFKA_VERSION?=3.4.0 # Kafka versions for compatibility tests COMPAT_KAFKA_VERSIONS?=0.8.2.2 0.9.0.1 0.11.0.3 1.0.2 2.4.1 2.8.1 $(KAFKA_VERSION) # Non-default scenarios (FIXME: read from scenarios/*) SCENARIOS?=noautocreate ak23 # A subset of rudimentary (and quick) tests suitable for quick smoke testing. # The smoke test should preferably finish in under a minute. SMOKE_TESTS?=0000,0001,0004,0012,0017,0022,0030,0039,0049,0087,0103 -include ../Makefile.config # Use C++ compiler as linker CC_LD=$(CXX) all: $(BIN) run_par # # These targets spin up a cluster and runs the test suite # with different parameters. # broker: $(BIN) ./broker_version_tests.py --conf '{"parallel":1, "args":"-Q"}' $(KAFKA_VERSION) broker_idempotent: $(BIN) ./broker_version_tests.py --conf '{"parallel":1, "args":"-P -L -Q"}' $(KAFKA_VERSION) sasl: $(BIN) ./sasl_test.py --conf '{"parallel":1, "args":"-L -Q"}' $(KAFKA_VERSION) # Run the full test suite(s) full: broker broker_idempotent sasl # # The following targets require an existing cluster running (test.conf) # quick: @echo "Running quick(er) test suite (without sockem)" ./run-test.sh -Q -E smoke: @echo "Running smoke tests: $(SMOKE_TESTS)" TESTS="$(SMOKE_TESTS)" $(MAKE) quick run_par: $(BIN) @echo "Running tests in parallel" ./run-test.sh run_seq: $(BIN) @echo "Running tests sequentially" ./run-test.sh -p1 run_local: $(BIN) @echo "Running local broker-less tests with idempotent producer" ./run-test.sh -l -P run_local_quick: $(BIN) @echo "Running quick local broker-less tests with idempotent producer" ./run-test.sh -l -Q -P idempotent_par: $(BIN) ./run-test.sh -P idempotent_seq: $(BIN) ./run-test.sh -P idempotent: idempotent_par transactions: $(BIN) for _test in 0098 0101; do TESTS=$$_test ./run-test.sh ./$(BIN) ; done # Run unit tests unit: $(BIN) TESTS=0000 ./run-test.sh -p1 # Delete all test topics (based on prefix) delete_topics: TESTS=none ./run-test.sh -D bare .PHONY: build: $(BIN) interceptor_test test.o: ../src/librdkafka.a ../src-cpp/librdkafka++.a interceptor_test include ../mklove/Makefile.base ifeq ($(_UNAME_S),Darwin) interceptor_test: .PHONY else interceptor_test: .PHONY $(MAKE) -C $@ endif tinycthread.o: ../src/tinycthread.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< tinycthread_extra.o: ../src/tinycthread_extra.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< rdlist.o: ../src/rdlist.c $(CC) $(CPPFLAGS) $(CFLAGS) -c $< clean: rm -f *.test $(OBJS) $(BIN) $(MAKE) -C interceptor_test clean # Remove test reports, temporary test files, crash dumps, etc. clean-output: rm -f *.offset stats_*.json core vgcore.* _until_fail_*.log gdbrun?????? realclean: clean clean-output rm -f test_report_*.json java: .PHONY make -C java # Run test-suite with ASAN asan: @(echo "### Running tests with AddressSanitizer") (cd .. ; ./dev-conf.sh asan) CI=true ./broker_version_tests.py --conf '{"args":"-Q"}' $(KAFKA_VERSION) # Run test-suite with TSAN tsan: @(echo "### Running tests with ThreadSanitizer") (cd .. ; ./dev-conf.sh tsan) CI=true ./broker_version_tests.py --conf '{"args":"-Q"}' $(KAFKA_VERSION) # Run full test-suite with a clean release build pristine-full: @(echo "### Running full test-suite with clean build") (cd .. ; ./dev-conf.sh clean) make full # Run backward compatibility tests compat: @(echo "### Running compatibility tests with Apache Kafka versions $(COMPAT_KAFKA_VERSIONS)") ./broker_version_tests.py --rdkconf '{"args": "-Q"}' \ $(COMPAT_KAFKA_VERSIONS) # Run non-default scenarios scenarios: .PHONY @echo "### Running test scenarios: $(SCENARIOS)" @(for _SCENARIO in $(SCENARIOS) ; do \ ./broker_version_tests.py --scenario "$$_SCENARIO" $(KAFKA_VERSION) ; \ done) # Run a full release / PR test. # (| is for not running suites in parallel) release-test: | asan tsan pristine-full scenarios compat # Check resource usage (requires a running cluster environment) rusage: ./run-test.sh -R bare -include $(DEPS)