1
0
Fork 0
arangodb/UnitTests/Makefile.files

483 lines
22 KiB
Makefile
Executable File

# -*- mode: Makefile; -*-
## -----------------------------------------------------------------------------
## --SECTION-- CONFIGURATION
## -----------------------------------------------------------------------------
FORCE = 0
SKIP_BOOST = 0
SKIP_GEO = 0
SKIP_AHUACATL = 0
SKIP_RANGES = 0
VALGRIND =
USERNAME = root
PASSWORD =
PROTO = http
## -----------------------------------------------------------------------------
## --SECTION-- UNITTESTS
## -----------------------------------------------------------------------------
################################################################################
## unittests target
################################################################################
.PHONY: unittests unittests-brief unittests-verbose
unittests: all unittests-verbose unittests-brief
unittests-brief: \
unittests-make \
unittests-boost \
unittests-shell-server \
unittests-shell-server-ahuacatl \
unittests-http-server \
unittests-ssl-server \
unittests-shell-client \
unittests-arangob \
unittests-import
unittests-verbose:
@echo "################################################################################"
@echo "## ##"
@echo "## ArangoDB Unit-Tests ##"
@echo "## ##"
@echo "## > make unittests ##"
@echo "## > make unittests FORCE=1 ##"
@echo "## > make unittests SKIP_BOOST=1 ##"
@echo "## > make unittests SKIP_GEO=1 ##"
@echo "## > make unittests SKIP_AHUACATL=1 ##"
@echo "## > make unittests SKIP_RANGES=1 ##"
@echo "## > make unittests VALGRIND=valgrind ##"
@echo "## ##"
@echo "################################################################################"
@echo
@sleep 1
################################################################################
## start the arango server
################################################################################
PID := $(shell echo $$PPID)
PIDFILE := /tmp/arango.$(PID).pid
VOCDIR := /tmp/vocdir.$(PID)
VOCPORT := $(shell printf "3%04d" `expr $(PID) % 10000`)
VOCHOST := 127.0.0.1
STARTFILE := $(VOCDIR)/startup
CURL := curl
CURL_OPT := --basic --user "$(USERNAME):$(PASSWORD)"
CERT_FILE := @top_srcdir@/UnitTests/server.pem
SERVER_START :=
SERVER_OPT := \
--configuration none \
--database.maximal-journal-size 1048576 \
--database.force-sync-shapes false \
--javascript.action-directory @top_srcdir@/js/actions/system \
--javascript.gc-interval 1 \
--javascript.modules-path @top_srcdir@/js/server/modules:@top_srcdir@/js/common/modules \
--javascript.startup-directory @top_srcdir@/js \
--ruby.action-directory @top_srcdir@/mr/actions/system \
--ruby.modules-path @top_srcdir@/mr/server/modules:@top_srcdir@/mr/common/modules \
--server.threads 4 \
--server.admin-directory ./html/admin \
$(SERVER_START)
CLIENT_OPT := \
--configuration none \
--javascript.startup-directory @top_srcdir@/js \
--javascript.modules-path @top_srcdir@/js/client/modules:@top_srcdir@/js/common/modules \
--no-colors \
--quiet
.PHONY: start-server
start-server:
@echo
@echo "================================================================================"
@(test "$(PROTO)" == "http" && echo "<< STARTING SERVER ON TCP ENDPOINT >>") || true
@(test "$(PROTO)" == "https" && echo "<< STARTING SERVER ON SSL ENDPOINT >>") || true
@(test "$(PROTO)" == "unix" && echo "<< STARTING SERVER ON UNIX SOCKET ENDPOINT >>") || true
@echo "================================================================================"
@echo
@echo "Server Options: $(SERVER_OPT)"
@echo
rm -f "$(PIDFILE)"
rm -rf "$(VOCDIR)"
mkdir -p "$(VOCDIR)"
@test -d "$(VOCDIR)"
@builddir@/bin/arango-upgrade --relative --database.directory "$(VOCDIR)"
($(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) && rm -rf "$(VOCDIR)") &
@test "$(PROTO)" == "unix" || (rm -f "$(STARTFILE)"; while [ ! -s "$(STARTFILE)" ]; do $(CURL) $(CURL_OPT) --insecure -X GET -s "$(PROTO)://$(VOCHOST):$(VOCPORT)/_api/version" > "$(STARTFILE)" || sleep 2; done)
@(test "$(PROTO)" == "unix" && sleep 5) || true
@rm -f "$(STARTFILE)"
@echo "server has been started."
@if [ "$(VALGRIND)" != "" ]; then echo "adding valgrind memorial time..."; sleep 75; else sleep 2; fi
@echo
################################################################################
## COMMON MAKE-RELATED TESTS
################################################################################
.PHONY: unittests-make
unittests-make:
@(ctags --version > /dev/null 2> /dev/null && make tags > /dev/null || test "x$(FORCE)" == "x1") || true
################################################################################
## BOOST TESTS
################################################################################
.PHONY: unittests-boost
if ENABLE_MAINTAINER_MODE
unittests-boost: UnitTests/basics_suite UnitTests/geo_suite
@echo
@echo "================================================================================"
@echo "<< BOOST TESTS >>"
@echo "================================================================================"
@echo
test "x$(SKIP_BOOST)" == "x1" || $(VALGRIND) @builddir@/UnitTests/basics_suite --show_progress || test "x$(FORCE)" == "x1"
test "x$(SKIP_GEO)" == "x1" || $(VALGRIND) @builddir@/UnitTests/geo_suite --show_progress || test "x$(FORCE)" == "x1"
@echo
noinst_PROGRAMS += UnitTests/basics_suite UnitTests/geo_suite
UnitTests_basics_suite_LDADD = -L@top_builddir@/lib -larango -lboost_unit_test_framework
UnitTests_basics_suite_DEPENDENCIES = @top_builddir@/lib/libarango.a
UnitTests_basics_suite_SOURCES = \
UnitTests/Runner.cpp \
UnitTests/Philadelphia/conversions-test.cpp \
UnitTests/Philadelphia/csv-test.cpp \
UnitTests/Philadelphia/files-test.cpp \
UnitTests/Philadelphia/json-test.cpp \
UnitTests/Philadelphia/json-utilities-test.cpp \
UnitTests/Philadelphia/hashes-test.cpp \
UnitTests/Philadelphia/mersenne-test.cpp \
UnitTests/Philadelphia/associative-pointer-test.cpp \
UnitTests/Philadelphia/string-buffer-test.cpp \
UnitTests/Philadelphia/string-utf8-normalize-test.cpp \
UnitTests/Philadelphia/string-utf8-test.cpp \
UnitTests/Philadelphia/string-test.cpp \
UnitTests/Philadelphia/vector-pointer-test.cpp \
UnitTests/Philadelphia/vector-test.cpp \
UnitTests/Jutland/EndpointTest.cpp \
UnitTests/Jutland/StringBufferTest.cpp \
UnitTests/Jutland/StringUtilsTest.cpp
UnitTests_geo_suite_CPPFLAGS = -I@top_srcdir@/arangod -I@top_builddir@/lib -I@top_srcdir@/lib
UnitTests_geo_suite_LDADD = -L@top_builddir@/lib -larango -lboost_unit_test_framework
UnitTests_geo_suite_DEPENDENCIES = @top_builddir@/lib/libarango.a
UnitTests_geo_suite_SOURCES = \
UnitTests/Cambridge/Runner.cpp \
UnitTests/Cambridge/georeg.cpp \
arangod/GeoIndex/GeoIndex.c
else
unittests-boost:
@echo
@echo "================================================================================"
@echo "<< BOOST TESTS >>"
@echo "================================================================================"
@echo
@echo "to enable unit-testing, configure with --enable-maintainer-mode"
@echo
endif
################################################################################
## SHELL SERVER TESTS (BASICS)
################################################################################
SHELL_COMMON = @top_srcdir@/js/common/tests/shell-document.js \
@top_srcdir@/js/common/tests/shell-edge.js \
@top_srcdir@/js/common/tests/shell-compactor.js \
@top_srcdir@/js/common/tests/shell-collection.js \
@top_srcdir@/js/common/tests/shell-simple-query.js \
@top_srcdir@/js/common/tests/shell-statement.js \
@top_srcdir@/js/common/tests/shell-index.js \
@top_srcdir@/js/common/tests/shell-index-geo.js \
@top_srcdir@/js/common/tests/shell-cap-constraint.js \
@top_srcdir@/js/common/tests/shell-unique-constraint.js \
@top_srcdir@/js/common/tests/shell-hash-index.js
SHELL_SERVER = $(SHELL_COMMON) \
@top_srcdir@/js/common/tests/shell-graph.js \
@top_srcdir@/js/common/tests/shell-graph-algorithms.js \
@top_srcdir@/js/common/tests/shell-graph-measurement.js
.PHONY: unittests-shell-server
UNITTESTS_SERVER = $(addprefix --javascript.unit-tests ,$(SHELL_SERVER))
unittests-shell-server:
@echo
@echo "================================================================================"
@echo "<< SHELL SERVER TESTS (BASICS) >>"
@echo "================================================================================"
@echo
@rm -rf "$(VOCDIR)"
@mkdir "$(VOCDIR)"
@builddir@/bin/arango-upgrade --relative --database.directory "$(VOCDIR)"
$(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) $(UNITTESTS_SERVER) || test "x$(FORCE)" == "x1"
@rm -rf "$(VOCDIR)"
@echo
################################################################################
## SHELL SERVER TESTS (AHUACATL)
################################################################################
SHELL_SERVER_AHUACATL = @top_srcdir@/js/server/tests/ahuacatl-ranges.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-optimiser.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-optimiser-ref.js \
@top_srcdir@/js/server/tests/ahuacatl-escaping.js \
@top_srcdir@/js/server/tests/ahuacatl-functions.js \
@top_srcdir@/js/server/tests/ahuacatl-variables.js \
@top_srcdir@/js/server/tests/ahuacatl-bind.js \
@top_srcdir@/js/server/tests/ahuacatl-complex.js \
@top_srcdir@/js/server/tests/ahuacatl-logical.js \
@top_srcdir@/js/server/tests/ahuacatl-arithmetic.js \
@top_srcdir@/js/server/tests/ahuacatl-relational.js \
@top_srcdir@/js/server/tests/ahuacatl-ternary.js \
@top_srcdir@/js/server/tests/ahuacatl-parse.js \
@top_srcdir@/js/server/tests/ahuacatl-hash.js \
@top_srcdir@/js/server/tests/ahuacatl-skiplist.js \
@top_srcdir@/js/server/tests/ahuacatl-refaccess-variable.js \
@top_srcdir@/js/server/tests/ahuacatl-refaccess-attribute.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-simple.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-variables.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-geo.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-collection.js \
@top_srcdir@/js/server/tests/ahuacatl-queries-noncollection.js \
@top_srcdir@/js/server/tests/ahuacatl-subquery.js \
@top_srcdir@/js/server/tests/ahuacatl-operators.js
SHELL_SERVER_AHUACATL_EXTENDED = \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-1.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-2.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-3.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-4.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-5.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-6.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-7.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-8.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-9.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-10.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-11.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-12.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-13.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-14.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-15.js \
@top_srcdir@/js/server/tests/ahuacatl-ranges-combined-16.js
.PHONY: unittests-shell-server-ahuacatl
UNITTESTS_SERVER_AHUACATL = $(addprefix --javascript.unit-tests ,$(SHELL_SERVER_AHUACATL))
UNITTESTS_SERVER_AHUACATL_EXTENDED = $(addprefix --javascript.unit-tests ,$(SHELL_SERVER_AHUACATL_EXTENDED))
unittests-shell-server-ahuacatl:
@echo
@echo "================================================================================"
@echo "<< SHELL SERVER TESTS (AHUACATL) >>"
@echo "================================================================================"
@echo
@rm -rf "$(VOCDIR)"
@mkdir "$(VOCDIR)"
@test "x$(SKIP_AHUACATL)" == "x1" || @builddir@/bin/arango-upgrade --relative --database.directory "$(VOCDIR)"
@test "x$(SKIP_AHUACATL)" == "x1" || $(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) $(UNITTESTS_SERVER_AHUACATL) || test "x$(FORCE)" == "x1"
@test "x$(SKIP_AHUACATL)" == "x1" || test "x$(SKIP_RANGES)" == "x1" || $(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) $(UNITTESTS_SERVER_AHUACATL_EXTENDED) || test "x$(FORCE)" == "x1"
@rm -rf "$(VOCDIR)"
@echo
################################################################################
## SHELL CLIENT TESTS
################################################################################
SHELL_CLIENT = $(SHELL_COMMON) @top_srcdir@/js/client/tests/client.js
.PHONY: unittests-shell-client
UNITTESTS_CLIENT = $(addprefix --javascript.unit-tests ,$(SHELL_CLIENT))
unittests-shell-client:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint unix://$(VOCDIR)/arango.sock --server.disable-authentication true" PROTO=unix
@echo
@echo "================================================================================"
@echo "<< SHELL CLIENT TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock $(UNITTESTS_CLIENT) || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@echo
################################################################################
## HTTP SERVER TESTS
################################################################################
.PHONY: unittests-http-server
unittests-http-server:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-auth true" PROTO=http
@echo
@echo "================================================================================"
@echo "<< HTTP SERVER TESTS >>"
@echo "================================================================================"
@echo
cd @top_srcdir@/UnitTests/HttpInterface && ARANGO_SERVER="$(VOCHOST):$(VOCPORT)" ARANGO_SSL=0 ARANGO_USER="$(USERNAME)" ARANGO_PASSWORD="$(PASSWORD)" ./run-tests || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@echo
################################################################################
## SSL SERVER TESTS (same as HTTP SERVER TESTS but using SSL)
################################################################################
.PHONY: unittests-ssl-server
unittests-ssl-server:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint ssl://$(VOCHOST):$(VOCPORT) --server.keyfile $(CERT_FILE) --server.disable-auth true" PROTO=https
@echo
@echo "================================================================================"
@echo "<< SSL SERVER TESTS (same as HTTP SERVER TESTS but using SSL) >>"
@echo "================================================================================"
@echo
cd @top_srcdir@/UnitTests/HttpInterface && ARANGO_SERVER="$(VOCHOST):$(VOCPORT)" ARANGO_SSL=1 ARANGO_USER="$(USERNAME)" ARANGO_PASSWORD="$(PASSWORD)" ./run-tests || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@echo
################################################################################
## IMPORT TESTS
################################################################################
.PHONY: unittests-import
unittests-import:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint unix://$(VOCDIR)/arango.sock --server.disable-authentication true" PROTO=unix
@echo
@echo "================================================================================"
@echo "<< IMPORT TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --javascript.unit-tests @top_srcdir@/js/server/tests/import-setup.js || test "x$(FORCE)" == "x1"
for i in 1 2; do $(VALGRIND) @builddir@/bin/arangoimp --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --file UnitTests/import-$$i.json --collection UnitTestsImportJson$$i --type json || test "x$(FORCE)" == "x1"; done
for i in 1 2; do $(VALGRIND) @builddir@/bin/arangoimp --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --file UnitTests/import-$$i.csv --collection UnitTestsImportCsv$$i --create-collection true --type csv || test "x$(FORCE)" == "x1"; done
for i in 1 2; do $(VALGRIND) @builddir@/bin/arangoimp --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --file UnitTests/import-$$i.tsv --collection UnitTestsImportTsv$$i --create-collection true --type tsv --eol "\r\n" || test "x$(FORCE)" == "x1"; done
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --javascript.unit-tests @top_srcdir@/js/server/tests/import.js || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --javascript.unit-tests @top_srcdir@/js/server/tests/import-teardown.js || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@echo
################################################################################
## BITARRAY INDEXES TESTS
################################################################################
BITARRAY_COMMON = @top_srcdir@/js/common/tests/shell-bitarray-index.js
.PHONY: unittests-bitarray-index
UNITTESTS_SERVER_BITARRAY = $(addprefix --javascript.unit-tests ,$(BITARRAY_COMMON))
unittests-bitarray-index:
@echo
@echo "================================================================================"
@echo "<< BITARRAY INDEX TESTS >>"
@echo "================================================================================"
@echo
@rm -rf "$(VOCDIR)"
@mkdir "$(VOCDIR)"
@builddir@/bin/arango-upgrade --relative --database.directory "$(VOCDIR)"
$(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) $(UNITTESTS_SERVER_BITARRAY) || test "x$(FORCE)" == "x1"
@ rm -rf "$(VOCDIR)"
@echo
################################################################################
## ARANGOB TESTS
################################################################################
.PHONY: unittests-arangob
if ENABLE_ARANGOB
unittests-arangob:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint unix://$(VOCDIR)/arango.sock --server.disable-authentication true" PROTO=unix
@echo
@echo "================================================================================"
@echo "<< ARANGOB TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangob --configuration none --quiet --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --requests 1000 --batch-size 16 --concurrency 2 --test version || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangob --configuration none --quiet --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --requests 100 --batch-size 0 --concurrency 1 --test version || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangob --configuration none --quiet --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint unix://$(VOCDIR)/arango.sock --requests 100 --batch-size 10 --concurrency 2 --test document --complexity 1 || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@echo
else
unittests-arangob:
@echo
endif