1
0
Fork 0
arangodb/Makefile.unittests

250 lines
8.8 KiB
Makefile

# -*- 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