diff options
Diffstat (limited to 'extras/hs-test/Makefile')
-rw-r--r-- | extras/hs-test/Makefile | 134 |
1 files changed, 134 insertions, 0 deletions
diff --git a/extras/hs-test/Makefile b/extras/hs-test/Makefile new file mode 100644 index 00000000000..d4e699940d1 --- /dev/null +++ b/extras/hs-test/Makefile @@ -0,0 +1,134 @@ + +ifeq ($(VERBOSE),) +VERBOSE=false +endif + +ifeq ($(PERSIST),) +PERSIST=false +endif + +ifeq ($(UNCONFIGURE),) +UNCONFIGURE=false +endif + +ifeq ($(TEST),) +TEST=all +endif + +ifeq ($(DEBUG),) +DEBUG=false +endif + +ifeq ($(CPUS),) +CPUS=1 +endif + +ifeq ($(PARALLEL),) +PARALLEL=1 +endif + +ifeq ($(REPEAT),) +REPEAT=0 +endif + +ifeq ($(VPPSRC),) +VPPSRC=$(shell pwd)/../.. +endif + +ifeq ($(UBUNTU_CODENAME),) +UBUNTU_CODENAME=$(shell grep '^UBUNTU_CODENAME=' /etc/os-release | cut -f2- -d=) +endif + +ifeq ($(ARCH),) +ARCH=$(shell dpkg --print-architecture) +endif + +list_tests = @go run github.com/onsi/ginkgo/v2/ginkgo --dry-run -v --no-color --seed=2 | head -n -1 | grep 'Test' | \ + sed 's/^/* /; s/\(Suite\) /\1\//g' + +.PHONY: help +help: + @echo "Make targets:" + @echo " test - run tests" + @echo " build - build test infra" + @echo " build-debug - build test infra (vpp debug image)" + @echo " build-go - just build golang files" + @echo " fixstyle - format .go source files" + @echo " list-tests - list all tests" + @echo + @echo "make build arguments:" + @echo " UBUNTU_VERSION - ubuntu version for docker image" + @echo " HST_EXTENDED_TESTS - build extended tests" + @echo + @echo "make test arguments:" + @echo " PERSIST=[true|false] - whether clean up topology and dockers after test" + @echo " VERBOSE=[true|false] - verbose output" + @echo " UNCONFIGURE=[true|false] - unconfigure selected test" + @echo " DEBUG=[true|false] - attach VPP to GDB" + @echo " TEST=[test-name] - specific test to run" + @echo " CPUS=[n-cpus] - number of cpus to run with vpp" + @echo " VPPSRC=[path-to-vpp-src] - path to vpp source files (for gdb)" + @echo " PARALLEL=[n-cpus] - number of test processes to spawn to run in parallel" + @echo " REPEAT=[n] - repeat tests up to N times or until a failure occurs" + @echo + @echo "List of all tests:" + $(call list_tests) + +.PHONY: list-tests +list-tests: + $(call list_tests) + +.PHONY: build-vpp-release +build-vpp-release: + @make -C ../.. build-release + +.PHONY: build-vpp-debug +build-vpp-debug: + @make -C ../.. build + +.build.ok: build + @touch .build.ok + +.PHONY: test +test: .deps.ok .build.ok + @bash ./test --persist=$(PERSIST) --verbose=$(VERBOSE) \ + --unconfigure=$(UNCONFIGURE) --debug=$(DEBUG) --test=$(TEST) --cpus=$(CPUS) \ + --vppsrc=$(VPPSRC) --parallel=$(PARALLEL) --repeat=$(REPEAT) + +.PHONY: build-go +build-go: + go build ./tools/http_server + +.PHONY: build +build: .deps.ok build-vpp-release build-go + @rm -f .build.ok + bash ./script/build_hst.sh release + @touch .build.ok + +.PHONY: build-debug +build-debug: .deps.ok build-vpp-debug build-go + @rm -f .build.ok + bash ./script/build_hst.sh debug + @touch .build.ok + +.deps.ok: + @sudo make install-deps + +.PHONY: install-deps +install-deps: + @rm -f .deps.ok + @apt-get update \ + && apt-get install -y apt-transport-https ca-certificates curl software-properties-common \ + apache2-utils wrk bridge-utils + @if [ ! -f /usr/share/keyrings/docker-archive-keyring.gpg ] ; then \ + curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg; \ + echo "deb [arch=$(ARCH) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(UBUNTU_CODENAME) stable" \ + | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ; \ + apt-get update; \ + fi + @touch .deps.ok + +.PHONY: fixstyle +fixstyle: + @gofmt -w . + @go mod tidy |