summaryrefslogtreecommitdiff
path: root/deps/rabbit_common/mk/rabbitmq-test.mk
diff options
context:
space:
mode:
Diffstat (limited to 'deps/rabbit_common/mk/rabbitmq-test.mk')
-rw-r--r--deps/rabbit_common/mk/rabbitmq-test.mk80
1 files changed, 80 insertions, 0 deletions
diff --git a/deps/rabbit_common/mk/rabbitmq-test.mk b/deps/rabbit_common/mk/rabbitmq-test.mk
new file mode 100644
index 0000000000..931f072125
--- /dev/null
+++ b/deps/rabbit_common/mk/rabbitmq-test.mk
@@ -0,0 +1,80 @@
+.PHONY: ct-slow ct-fast
+
+ct-slow ct-fast:
+ $(MAKE) ct CT_SUITES='$(CT_SUITES)'
+
+# --------------------------------------------------------------------
+# xref
+# --------------------------------------------------------------------
+
+# We need the list of dependencies of the current project. We use it in
+# xrefr(1) to scan for Elixir-based projects. For those, we need to add
+# the path inside `_build` to the xref code path.
+
+ifneq ($(filter xref,$(MAKECMDGOALS)),)
+export ERLANG_MK_RECURSIVE_DEPS_LIST
+endif
+
+xref: $(ERLANG_MK_RECURSIVE_DEPS_LIST)
+
+# --------------------------------------------------------------------
+# Helpers to run Make targets on Concourse.
+# --------------------------------------------------------------------
+
+FLY ?= fly
+FLY_TARGET ?= $(shell $(FLY) targets | awk '/ci\.rabbitmq\.com/ { print $$1; }')
+
+CONCOURSE_TASK = $(ERLANG_MK_TMP)/concourse-task.yaml
+
+CI_DIR ?= $(DEPS_DIR)/ci
+PIPELINE_DIR = $(CI_DIR)/server-release
+BRANCH_RELEASE = $(shell "$(PIPELINE_DIR)/scripts/map-branch-to-release.sh" "$(base_rmq_ref)")
+PIPELINE_DATA = $(PIPELINE_DIR)/release-data-$(BRANCH_RELEASE).yaml
+REPOSITORY_NAME = $(shell "$(PIPELINE_DIR)/scripts/map-erlang-app-and-repository-name.sh" "$(PIPELINE_DATA)" "$(PROJECT)")
+
+CONCOURSE_PLATFORM ?= linux
+ERLANG_VERSION ?= $(shell "$(PIPELINE_DIR)/scripts/list-erlang-versions.sh" "$(PIPELINE_DATA)" | head -n 1)
+TASK_INPUTS = $(shell "$(PIPELINE_DIR)/scripts/list-task-inputs.sh" "$(CONCOURSE_TASK)")
+
+.PHONY: $(CONCOURSE_TASK)
+$(CONCOURSE_TASK): $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST)
+ $(gen_verbose) echo 'platform: $(CONCOURSE_PLATFORM)' > "$@"
+ $(verbose) echo 'inputs:' >> "$@"
+ $(verbose) echo ' - name: $(PROJECT)' >> "$@"
+ $(verbose) cat $(ERLANG_MK_RECURSIVE_TEST_DEPS_LIST) | while read -r file; do \
+ echo " - name: $$(basename "$$file")" >> "$@"; \
+ done
+ $(verbose) echo 'outputs:' >> "$@"
+ $(verbose) echo ' - name: test-output' >> "$@"
+ifeq ($(CONCOURSE_PLATFORM),linux)
+ $(verbose) echo 'image_resource:' >> "$@"
+ $(verbose) echo ' type: docker-image' >> "$@"
+ $(verbose) echo ' source:' >> "$@"
+ $(verbose) echo ' repository: pivotalrabbitmq/rabbitmq-server-buildenv' >> "$@"
+ $(verbose) echo ' tag: linux-erlang-$(ERLANG_VERSION)' >> "$@"
+endif
+ $(verbose) echo 'run:' >> "$@"
+ $(verbose) echo ' path: ci/server-release/scripts/test-erlang-app.sh' >> "$@"
+ $(verbose) echo ' args:' >> "$@"
+ $(verbose) echo " - $(PROJECT)" >> "$@"
+# This section must be the last because the `%-on-concourse` target
+# appends other variables.
+ $(verbose) echo 'params:' >> "$@"
+ifdef V
+ $(verbose) echo ' V: "$(V)"' >> "$@"
+endif
+ifdef t
+ $(verbose) echo ' t: "$(t)"' >> "$@"
+endif
+
+%-on-concourse: $(CONCOURSE_TASK)
+ $(verbose) test -d "$(PIPELINE_DIR)"
+ $(verbose) echo ' MAKE_TARGET: "$*"' >> "$(CONCOURSE_TASK)"
+ $(FLY) -t $(FLY_TARGET) execute \
+ --config="$(CONCOURSE_TASK)" \
+ $(foreach input,$(TASK_INPUTS), \
+ $(if $(filter $(PROJECT),$(input)), \
+ --input="$(input)=.", \
+ --input="$(input)=$(DEPS_DIR)/$(input)")) \
+ --output="test-output=$(CT_LOGS_DIR)/on-concourse"
+ $(verbose) rm -f "$(CT_LOGS_DIR)/on-concourse/filename"