|
|
#
# %CopyrightBegin%
#
# Copyright Ericsson AB 2010-2011. All Rights Reserved.
#
# The contents of this file are subject to the Erlang Public License,
# Version 1.1, (the "License"); you may not use this file except in
# compliance with the License. You should have received a copy of the
# Erlang Public License along with this software. If not, it can be
# retrieved online at http://www.erlang.org/.
#
# Software distributed under the License is distributed on an "AS IS"
# basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
# the License for the specific language governing rights and limitations
# under the License.
#
# %CopyrightEnd%
ifneq ($(ERL_TOP),)
include $(ERL_TOP)/make/target.mk
include $(ERL_TOP)/make/$(TARGET)/otp.mk
else
include $(DIAMETER_TOP)/make/target.mk
include $(DIAMETER_TOP)/make/$(TARGET)/rules.mk
endif
# ----------------------------------------------------
# Application version
# ----------------------------------------------------
include ../vsn.mk
VSN=$(DIAMETER_VSN)
# ----------------------------------------------------
# Release directory specification
# ----------------------------------------------------
RELSYSDIR = $(RELEASE_PATH)/diameter_test
ifeq ($(findstring win32,$(TARGET)),win32)
MAKEFILE_SRC = Makefile.win32.src
else
MAKEFILE_SRC = Makefile.src
endif
ifeq ($(TT_DIR),)
TT_DIR = /tmp
endif
# ----------------------------------------------------
# Target Specs
# ----------------------------------------------------
include modules.mk
EBIN = .
HRL_FILES = diameter_test_lib.hrl
ERL_FILES = $(MODULES:%=%.erl)
SOURCE = $(HRL_FILES) $(ERL_FILES)
TARGET_FILES = $(MODULES:%=%.$(EMULATOR))
APP_CASES = app
TRANSPORT_CASES = tcp
ALL_CASES = \
$(APP_CASES) \
compiler conf sync stats reg peer \
$(TRANSPORT_CASES)
EMAKEFILE = Emakefile
ifneq ($(ERL_TOP),)
MAKE_EMAKE = $(wildcard $(ERL_TOP)/make/make_emakefile)
else
MAKE_EMAKE = $(wildcard $(DIAMETER_TOP)/make/make_emakefile)
endif
ifeq ($(MAKE_EMAKE),)
BUILDTARGET = $(TARGET_FILES)
RELTEST_FILES = $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE)
else
BUILDTARGET = emakebuild
RELTEST_FILES = $(EMAKEFILE) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) $(SOURCE)
endif
# ----------------------------------------------------
# FLAGS
# ----------------------------------------------------
include ../src/app/diameter.mk
ifeq ($(USE_DIAMETER_TEST_CODE),true)
ERL_COMPILE_FLAGS += -DDIAMETER_TEST_CODE=mona_lisa_spelar_doom
endif
ifeq ($(USE_DIAMETER_HIPE),true)
ERL_COMPILE_FLAGS += +native -DDIAMETER_hipe_special=true
endif
ifneq ($(ERL_TOP),)
ERL_COMPILE_FLAGS += \
$(DIAMETER_ERL_COMPILE_FLAGS) \
-pa $(ERL_TOP)/lib/test_server/ebin \
-I$(ERL_TOP)/lib/test_server/include
else
ERL_COMPILE_FLAGS += \
$(DIAMETER_ERL_COMPILE_FLAGS) \
-pa $(TEST_SERVER_DIR)/ebin \
-I$(TEST_SERVER_DIR)/include
endif
ERL_PATH = \
-pa ../../$(APPLICATION)/ebin \
-pa ../../et/ebin
ifndef SUITE
SUITE = diameter_SUITE
endif
ESTOP = -s init stop
ifeq ($(DONT_STOP),true)
MAYBE_ESTOP =
else
MAYBE_ESTOP = $(ESTOP)
endif
ETVIEW = -s et_viewer
ifeq ($(USE_ET_VIEWER),true)
MAYBE_ETVIEW =
else
MAYBE_ETVIEW = $(ETVIEW)
endif
ifeq ($(MERL),)
MERL = $(ERL)
endif
ARGS += -noshell
ifeq ($(DISABLE_TC_TIMEOUT),true)
ARGS += -diameter_test_timeout
endif
DIAMETER_TEST_SERVER = diameter_test_server
# ----------------------------------------------------
# Targets
# ----------------------------------------------------
tests debug opt: $(BUILDTARGET)
targets: $(TARGET_FILES)
.PHONY: emakebuild
emakebuild: $(EMAKEFILE)
$(EMAKEFILE):
$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) '*_SUITE_make' | grep -v Warning > $(EMAKEFILE)
$(MAKE_EMAKE) $(ERL_COMPILE_FLAGS) -o$(EBIN) $(MODULES) | grep -v Warning >> $(EMAKEFILE)
clean:
rm -f $(EMAKEFILE)
rm -f $(TARGET_FILES)
rm -f errs core *~
docs:
info:
@echo "MAKE_EMAKE = $(MAKE_EMAKE)"
@echo "EMAKEFILE = $(EMAKEFILE)"
@echo "BUILDTARGET = $(BUILDTARGET)"
@echo ""
@echo "ERL_COMPILE_FLAGS = $(ERL_COMPILE_FLAGS)"
@echo "ERL = $(ERL)"
@echo "ERLC = $(ERLC)"
@echo "MERL = $(MERL)"
@echo ""
@echo "ARGS = $(ARGS)"
@echo ""
@echo "HRL_FILES = $(HRL_FILES)"
@echo "ERL_FILES = $(ERL_FILES)"
@echo "TARGET_FILES = $(TARGET_FILES)"
@echo ""
help:
@echo ""
@echo "This Makefile controls the test of the $(APPLICATION) application. "
@echo ""
@echo "There are two separate ways to perform the test of $(APPLICATION)."
@echo ""
@echo " a) Run the official OTP test-server (which we do not describe here)"
@echo ""
@echo " b) Run the test-server provided with this application. "
@echo " There are a number of targets to run the entire or parts"
@echo " of this applications ($(APPLICATION)) test-suite"
@echo ""
@echo "Targets:"
@echo ""
@echo " help"
@echo " Print this info"
@echo ""
@echo " info"
@echo " Prints various environment variables. "
@echo " May be useful when debugging the Makefile. "
@echo ""
@echo " tests | debug | opt "
@echo " Compile all test-code. "
@echo ""
@echo " clean "
@echo " Remove all targets. "
@echo ""
@echo " test"
@echo " Run the entire $(APPLICATION) test-suite. "
@echo ""
@echo " app"
@echo " Run the $(APPLICATION) application sub-test-suite. "
@echo ""
@echo " compiler"
@echo " Run the $(APPLICATION) compiler sub-test-suite(s). "
@echo ""
@echo " conf"
@echo " Run the $(APPLICATION) config sub-test-suite. "
@echo " Checks various aspects of the $(APPLICATION) configuration. "
@echo ""
@echo " sync"
@echo " Run the $(APPLICATION) sync sub-test-suite. "
@echo ""
@echo " stats"
@echo " Run the $(APPLICATION) stats sub-test-suite. "
@echo ""
@echo " reg"
@echo " Run the $(APPLICATION) reg sub-test-suite. "
@echo ""
@echo " peer"
@echo " Run the $(APPLICATION) peer sub-test-suite"
@echo ""
@echo " ptab"
@echo " Run the $(APPLICATION) persistent-table sub-test-suite"
@echo ""
@echo " tcp"
@echo " Run the $(APPLICATION) tcp sub-test-suite"
@echo ""
@echo ""
# ----------------------------------------------------
# Special Targets
# ----------------------------------------------------
all: make
@echo "make sure epmd is new"
@epmd -kill > /dev/null
@echo "Running all sub-suites separatelly"
@for i in $(ALL_CASES); do \
echo "SUITE: $$i"; \
clearmake -V $$i > $$i.log; \
done
aall: make
@echo "make sure epmd is new"
@epmd -kill > /dev/null
@echo "Running all app sub-suites separatelly"
@for i in $(APP_CASES); do \
echo "SUITE: $$i"; \
clearmake -V $$i > $$i.log; \
done
echo "done"
tall: make
@echo "make sure epmd is new"
@epmd -kill > /dev/null
@echo "Running all transport sub-suites separatelly"
@for i in $(TRANSPORT_CASES); do \
echo "SUITE: $$i"; \
clearmake -V $$i > $$i.log; \
done
make: targets
test: make
$(MERL) $(ARGS) -sname diameter_test $(ERL_PATH) \
-s $(DIAMETER_TEST_SERVER) t $(SUITE) \
$(MAYBE_ESTOP)
log:
mkdir $@
##########################
# This assumes GNU sed to exit 1 if the output looks to indicate failure.
# diameter_ct:run/1 itself can't tell (it seems).
app codec dict reg stats sync: log make
$(MERL) $(ARGS) \
-sname diameter_test_$@ \
-s diameter_ct run $@ \
-s init stop \
| sed '/ FAILED /h; p; $$!d; x; /./!d; Q 1'
compiler conf peer tcp: make
$(MERL) $(ARGS) -sname diameter_$@ $(ERL_PATH) \
-s $(DIAMETER_TEST_SERVER) t diameter_$@_test \
$(ESTOP)
node:
$(MERL) -sname diameter $(ERL_PATH)
# ----------------------------------------------------
# Release Targets
# ----------------------------------------------------
ifneq ($(ERL_TOP),)
include $(ERL_TOP)/make/otp_release_targets.mk
else
include $(DIAMETER_TOP)/make/release_targets.mk
endif
release_spec:
release_docs_spec:
release_tests_spec: tests
$(INSTALL_DIR) $(RELSYSDIR)
$(INSTALL_DATA) $(RELTEST_FILES) $(RELSYSDIR)
# $(INSTALL_DATA) $(TEST_SPEC_FILE) $(COVER_SPEC_FILE) \
# $(HRL_FILES) $(ERL_FILES) \
# $(RELSYSDIR)
#
chmod -R u+w $(RELSYSDIR)
|