# -*- mode: Makefile; -*- FORCE = 0 VALGRIND = ################################################################################ ## unittests target ################################################################################ .PHONY: unittests unittests-brief unittests-verbose unittests: unittests-verbose unittests-brief unittests-brief: \ unittests-boost \ unittests-shell-server \ unittests-shell-server-ahuacatl \ unittests-http-server \ unittests-shell-client unittests-verbose: @echo "################################################################################" @echo "## ##" @echo "## AvocadoDB Unit-Tests ##" @echo "## ##" @echo "## > make unittests ##" @echo "## > make unittests FORCE=1 ##" @echo "## > make unittests VALGRIND=valgrind ##" @echo "## ##" @echo "################################################################################" @echo @sleep 1 ################################################################################ ## start the avocado server ################################################################################ PID := $(shell echo $$PPID) PIDFILE := /tmp/avocado.$(PID).pid VOCDIR := /tmp/vocdir.$(PID) VOCPORT := $(shell printf "3%04d" `expr $(PID) % 10000`) VOCHOST := 127.0.0.1 SERVER_OPT := --startup.directory ./js --startup.modules-path ./js/server/modules:./js/common/modules --action.system-directory ./js/actions/system CLIENT_OPT := --startup.directory ./js --startup.modules-path ./js/client/modules:./js/common/modules --no-colors .PHONY: start-server start-server: @echo @echo "================================================================================" @echo "<< STARTING SERVER >>" @echo "================================================================================" @echo @rm -f "$(PIDFILE)" @rm -rf "$(VOCDIR)" @mkdir "$(VOCDIR)" ($(VALGRIND) @builddir@/avocado "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) --server.http-port $(VOCHOST):$(VOCPORT) && rm -rf "$(VOCDIR)") & @curl -s http://$(VOCHOST):$(VOCPORT)/version > /dev/null || sleep 2 @curl -s http://$(VOCHOST):$(VOCPORT)/version > /dev/null || sleep 2 @curl -s http://$(VOCHOST):$(VOCPORT)/version > /dev/null || sleep 2 @curl -s http://$(VOCHOST):$(VOCPORT)/version > /dev/null || sleep 2 curl -sS http://$(VOCHOST):$(VOCPORT)/version @if [ "$(VALGRIND)" != "" ]; then sleep 60; fi @echo ################################################################################ ## BOOST TESTS ################################################################################ .PHONY: unittests-boost if ENABLE_BOOST_TEST unittests-boost: @echo @echo "================================================================================" @echo "<< BOOST TESTS >>" @echo "================================================================================" @echo $(VALGRIND) @builddir@/UnitTests/basics_suite --show_progress || test "$(FORCE)" == "1" $(VALGRIND) @builddir@/UnitTests/geo_suite --show_progress || test "$(FORCE)" == "1" @echo unittests-boost: UnitTests/basics_suite noinst_PROGRAMS = UnitTests/basics_suite UnitTests/geo_suite UnitTests_basics_suite_LDADD = -L@top_builddir@ -lavocado -lboost_unit_test_framework UnitTests_basics_suite_DEPENDENCIES = @top_builddir@/libavocado.a UnitTests_basics_suite_SOURCES = \ UnitTests/Runner.cpp \ UnitTests/Philadelphia/json-test.cpp \ UnitTests/Philadelphia/hashes-test.cpp \ UnitTests/Philadelphia/associative-pointer-test.cpp \ UnitTests/Philadelphia/string-buffer-test.cpp \ UnitTests/Philadelphia/string-utf8-test.cpp \ UnitTests/Philadelphia/vector-pointer-test.cpp \ UnitTests/Philadelphia/vector-test.cpp \ UnitTests/Jutland/StringBufferTest.cpp \ UnitTests/Jutland/StringUtilsTest.cpp UnitTests_geo_suite_LDADD = -L@top_builddir@ -lavocado -lboost_unit_test_framework UnitTests_geo_suite_DEPENDENCIES = @top_builddir@/libavocado.a UnitTests_geo_suite_SOURCES = \ UnitTests/Cambridge/Runner.cpp \ UnitTests/Cambridge/georeg.cpp else unittests-boost: @echo @echo "================================================================================" @echo "<< BOOST TESTS >>" @echo "================================================================================" @echo @echo "enable unit-testing with 'configure --with-boost-test'" @echo endif ################################################################################ ## SHELL SERVER TESTS (BASICS) ################################################################################ SHELL_COMMON = @srcdir@/js/common/tests/shell-document.js \ @srcdir@/js/common/tests/shell-edge.js \ @srcdir@/js/common/tests/shell-collection.js \ @srcdir@/js/common/tests/shell-simple-query.js \ @srcdir@/js/common/tests/shell-index.js \ @srcdir@/js/common/tests/shell-index-geo.js \ @srcdir@/js/common/tests/shell-cap-constraint.js SHELL_SERVER = $(SHELL_COMMON) .PHONY: unittests-shell-server UNITTESTS_SERVER = $(addprefix --unit-tests ,$(SHELL_SERVER)) unittests-shell-server: @echo @echo "================================================================================" @echo "<< SHELL SERVER TESTS (BASICS) >>" @echo "================================================================================" @echo @rm -rf "$(VOCDIR)" @mkdir "$(VOCDIR)" $(VALGRIND) @builddir@/avocado "$(VOCDIR)" $(SERVER_OPT) $(UNITTESTS_SERVER) || test "$(FORCE)" == "1" @rm -rf "$(VOCDIR)" @echo ################################################################################ ## SHELL SERVER TESTS (AHUACATL) ################################################################################ SHELL_SERVER_AHUACATL = @srcdir@/js/server/tests/ahuacatl-operators.js \ @srcdir@/js/server/tests/ahuacatl-escaping.js \ @srcdir@/js/server/tests/ahuacatl-functions.js \ @srcdir@/js/server/tests/ahuacatl-queries-collection.js \ @srcdir@/js/server/tests/ahuacatl-queries-noncollection.js .PHONY: unittests-shell-server-ahuacatl UNITTESTS_SERVER_AHUACATL = $(addprefix --unit-tests ,$(SHELL_SERVER_AHUACATL)) unittests-shell-server-ahuacatl: @echo @echo "================================================================================" @echo "<< SHELL SERVER TESTS (AHUACATL) >>" @echo "================================================================================" @echo @rm -rf "$(VOCDIR)" @mkdir "$(VOCDIR)" $(VALGRIND) @builddir@/avocado "$(VOCDIR)" $(SERVER_OPT) $(UNITTESTS_SERVER_AHUACATL) || test "$(FORCE)" == "1" @rm -rf "$(VOCDIR)" @echo ################################################################################ ## SHELL CLIENT TESTS ################################################################################ SHELL_CLIENT = $(SHELL_COMMON) .PHONY: unittests-shell-client UNITTESTS_CLIENT = $(addprefix --unit-tests ,$(SHELL_CLIENT)) unittests-shell-client: $(MAKE) start-server PID=$(PID) @echo @echo "================================================================================" @echo "<< SHELL CLIENT TESTS >>" @echo "================================================================================" @echo $(VALGRIND) @builddir@/avocsh $(CLIENT_OPT) --server $(VOCHOST):$(VOCPORT) "$(VOCDIR)" $(UNITTESTS_CLIENT) || test "$(FORCE)" == "1" kill `cat $(PIDFILE)` while test -f $(PIDFILE); do sleep 1; done @rm -rf "$(VOCDIR)" @echo ################################################################################ ## HTTP SERVER TESTS ################################################################################ .PHONY: unittests-http-server unittests-http-server: $(MAKE) start-server PID=$(PID) @echo @echo "================================================================================" @echo "<< HTTP SERVER TESTS >>" @echo "================================================================================" @echo cd @srcdir@/UnitTests/HttpInterface && AVOCADO_SERVER="$(VOCHOST):$(VOCPORT)" ./run-tests || test "$(FORCE)" == "1" kill `cat $(PIDFILE)` while test -f $(PIDFILE); do sleep 1; done @rm -rf "$(VOCDIR)" @echo