1
0
Fork 0
arangodb/UnitTests/Makefile.unittests

936 lines
46 KiB
Makefile
Executable File

# -*- mode: Makefile; -*-
## -----------------------------------------------------------------------------
## --SECTION-- CONFIGURATION
## -----------------------------------------------------------------------------
FORCE = 0
SKIP_BOOST = 0
SKIP_GEO = 0
SKIP_RANGES = 0
VALGRIND =
NO_LOG =
USERNAME = root
PASSWORD =
PROTO = http
## -----------------------------------------------------------------------------
## --SECTION-- UNITTESTS
## -----------------------------------------------------------------------------
################################################################################
### @brief unittests target
################################################################################
.PHONY: unittests unittests-brief unittests-verbose
unittests: all unittests-verbose unittests-brief
unittests-brief: \
jslint \
unittests-config \
unittests-recovery \
unittests-boost \
unittests-shell-server \
unittests-shell-server-aql \
unittests-http-server \
unittests-ssl-server \
unittests-shell-client \
unittests-dump \
unittests-dump-authentication \
unittests-arangob \
unittests-import \
unittests-upgrade \
unittests-dfdb \
unittests-foxx-manager \
unittests-authentication \
unittests-authentication-parameters
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_RANGES=1 ##"
@echo "## > make unittests VALGRIND=valgrind ##"
@echo "## ##"
@echo "################################################################################"
@echo
@sleep 1
################################################################################
### @brief single test
################################################################################
TEST := $(shell echo $$TEST)
################################################################################
### @brief arango server configuration
################################################################################
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
################################################################################
### @brief slave stuff
################################################################################
SLAVEPIDFILE := /tmp/arango-slave.$(PID).pid
SLAVEPORT := $(shell printf "4%04d" `expr $(PID) % 10000`)
SLAVEHOST := 127.0.0.1
SLAVEDIR := /tmp/vocdir-slave.$(PID)
SLAVESTARTFILE := $(SLAVEDIR)/startup
################################################################################
### @brief client configuration
################################################################################
CURL := curl
CURL_OPT := --basic --user "$(USERNAME):$(PASSWORD)"
CERT_FILE := @top_srcdir@/UnitTests/server.pem
################################################################################
### @brief start the arango server
################################################################################
SERVER_START :=
SERVER_OPT := \
--configuration none \
--database.maximal-journal-size 1048576 \
--database.force-sync-properties false \
--javascript.app-path @top_srcdir@/js/apps \
--javascript.startup-directory @top_srcdir@/js \
--log.file "" \
--log.level fatal \
--wal.reserve-logfiles 1 \
--server.threads 4 \
$(SERVER_START)
CLIENT_OPT := \
--configuration none \
--javascript.startup-directory @top_srcdir@/js \
--log.level fatal \
--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)/databases"
@test -d "$(VOCDIR)"
($(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) && rm -rf "$(VOCDIR)") &
# Wait for http/https server endpoints:
@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)
# wait for unix domain socket enpoints:
@(test "$(PROTO)" == "unix" && \
while ! @builddir@/bin/arangosh $(CLIENT_OPT) \
--server.endpoint unix://$(VOCDIR)/arango.sock \
--server.disable-authentication true \
--javascript.execute-string 'if (arango.GET("/_api/version").server === "arango") { 0; } else {1; }'; do \
sleep 1; \
echo .; \
done;) ||\
true
@rm -f "$(STARTFILE)"
@echo "server has been started."
@if [ "$(VALGRIND)" != "" ]; then echo "adding valgrind memorial time..."; sleep 75; else sleep 2; fi
@echo
.PHONY: start-slave
start-slave:
@echo
@echo "================================================================================"
@echo "<< STARTING SLAVE >>"
@echo "================================================================================"
@echo
@echo "Slave Options: $(SERVER_OPT)"
@echo
@rm -f "$(SLAVEPIDFILE)"
@rm -rf "$(SLAVEDIR)"
@mkdir -p "$(SLAVEDIR)/databases"
@test -d "$(SLAVEDIR)"
($(VALGRIND) @builddir@/bin/arangod "$(SLAVEDIR)" $(SERVER_OPT) --pid-file $(SLAVEPIDFILE) --watch-process $(PID) && rm -rf "$(SLAVEDIR)") &
@rm -f "$(SLAVESTARTFILE)"; while [ ! -s "$(SLAVESTARTFILE)" ]; do $(CURL) $(CURL_OPT) -X GET -s "$(PROTO)://$(SLAVEHOST):$(SLAVEPORT)/_api/version" > "$(SLAVESTARTFILE)" || sleep 2; done
@rm -f "$(SLAVESTARTFILE)"
@echo "slave has been started."
@if [ "$(VALGRIND)" != "" ]; then echo "adding valgrind memorial time..."; sleep 75; else sleep 2; fi
@echo
################################################################################
### @brief issue a curl request and return the status
################################################################################
.PHONY: curl-request-get
curl-request-get:
@declare -x ACTUAL=$$(curl --dump - -X GET "$(CURL_PROTO)://$(CURL_HOST):$(CURL_PORT)$(CURL_URL)" 2> /dev/null | head -n 1 | tr "\r" " " | sed -e 's/^HTTP\/1\.1 \([0-9]*\).*$$/\1/g'); if [ "x$$ACTUAL" != "x$(EXPECTED)" ]; then echo "request to $(CURL_PROTO)://$(CURL_HOST):$(CURL_PORT)$(CURL_URL) returned $$ACTUAL, expected: $(EXPECTED)"; false; else true; fi
################################################################################
### @brief test recovery
################################################################################
.PHONY: unittests-recovery
.PHONY: execute-recovery-test
if ENABLE_FAILURE_TESTS
execute-recovery-test:
@rm -rf "$(VOCDIR)"
@mkdir -p "$(VOCDIR)/databases"
@builddir@/bin/arangod "$(VOCDIR)" --no-server $(SERVER_OPT) --server.threads 1 --wal.reserve-logfiles 1 --javascript.script "@top_srcdir@/js/server/tests/recovery/$(RECOVERY_SCRIPT).js" --javascript.script-parameter setup --log.level fatal || true # the server will crash with segfault intentionally in this test
@rm -f core
$(VALGRIND) @builddir@/bin/arangod --no-server "$(VOCDIR)" $(SERVER_OPT) --server.threads 1 --wal.ignore-logfile-errors true --wal.reserve-logfiles 1 --javascript.script "@top_srcdir@/js/server/tests/recovery/$(RECOVERY_SCRIPT).js" --javascript.script-parameter recover || test "x$(FORCE)" == "x1"
unittests-recovery:
@echo
@echo "================================================================================"
@echo "<< RECOVERY TESTS >>"
@echo "================================================================================"
@echo
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="disk-full-logfile"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="disk-full-logfile-data"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="disk-full-datafile"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="disk-full-datafile"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-drop-recreate"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-with-temp"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-collection-fail"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-database-fail"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="empty-datafiles"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="flush-drop-database-and-fail"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="drop-database-flush-and-fail"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-databases"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="recreate-databases"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="drop-databases"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-and-drop-databases"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="drop-database-and-fail"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="flush-drop-database-and-fail"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-rename-recreate"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-rename-recreate-flush"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-unload"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="resume-recovery-multi-flush"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="resume-recovery-simple"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="resume-recovery-all"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="resume-recovery-other"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="resume-recovery"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="foxx-directories"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-rename"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-properties"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="empty-logfiles"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="many-logs"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="multiple-logs"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collection-recreate"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="drop-indexes"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-indexes"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="create-collections"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="recreate-collection"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="drop-single-collection"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="drop-collections"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collections-reuse"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collections-different-attributes"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="indexes-hash"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="indexes-sparse-hash"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="indexes-skiplist"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="indexes-sparse-skiplist"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="indexes-geo"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="edges"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="cap-constraint"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="indexes"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="many-inserts"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="many-updates"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="wait-for-sync"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="attributes"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="no-journal"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="write-throttling"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="collector-oom"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="transaction-no-abort"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="transaction-no-commit"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="multi-database-durability"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="disk-full-no-collection-journal"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="no-shutdown-info-with-flush"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="no-shutdown-info-no-flush"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="no-shutdown-info-multiple-logs"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="insert-update-remove"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="insert-update-remove-distance"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="big-transaction-durability"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="transaction-durability"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="transaction-durability-multiple"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="corrupt-wal-marker-multiple"
$(MAKE) execute-recovery-test PID=$(PID) RECOVERY_SCRIPT="corrupt-wal-marker-single"
@rm -rf "$(VOCDIR)" core
@echo
else
unittests-recovery:
execute-recovery-test:
endif
################################################################################
### @brief test configuration files
################################################################################
.PHONY: unittests-config
unittests-config:
@echo
@echo "================================================================================"
@echo "<< CONFIGURATION FILE TESTS >>"
@echo "================================================================================"
@echo
@builddir@/bin/arangod --configuration @builddir@/etc/arangodb/arangod.conf --help 1> /dev/null || false
@builddir@/bin/arangob --configuration @builddir@/etc/arangodb/arangob.conf --help 1> /dev/null || false
@builddir@/bin/arangodump --configuration @builddir@/etc/arangodb/arangodump.conf --help 1> /dev/null || false
@builddir@/bin/arangoimp --configuration @builddir@/etc/arangodb/arangoimp.conf --help 1> /dev/null || false
@builddir@/bin/arangorestore --configuration @builddir@/etc/arangodb/arangorestore.conf --help 1> /dev/null || false
@builddir@/bin/arangosh --configuration @builddir@/etc/arangodb/arangosh.conf --help 1> /dev/null || false
@builddir@/bin/arangod --configuration @builddir@/etc/relative/arangod.conf --help 1> /dev/null || false
@builddir@/bin/arangob --configuration @builddir@/etc/relative/arangob.conf --help 1> /dev/null || false
@builddir@/bin/arangodump --configuration @builddir@/etc/relative/arangodump.conf --help 1> /dev/null || false
@builddir@/bin/arangoimp --configuration @builddir@/etc/relative/arangoimp.conf --help 1> /dev/null || false
@builddir@/bin/arangorestore --configuration @builddir@/etc/relative/arangorestore.conf --help 1> /dev/null || false
@builddir@/bin/arangosh --configuration @builddir@/etc/relative/arangosh.conf --help 1> /dev/null || false
################################################################################
### @brief BOOST TESTS
################################################################################
.PHONY: unittests-boost
if ENABLE_BOOST_TESTS
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_CPPFLAGS = \
-I@top_srcdir@/3rdParty/velocypack/include \
-I@top_srcdir@/arangod \
-I@top_srcdir@/lib \
@ICU_CPPFLAGS@ \
@BOOST_CPPFLAGS@
UnitTests_basics_suite_LDADD = \
-L@top_builddir@/3rdParty/velocypack/include \
-L@top_builddir@/lib \
-larango \
-lboost_unit_test_framework \
@ICU_LDFLAGS@
UnitTests_basics_suite_DEPENDENCIES = @top_builddir@/lib/libarango.a
UnitTests_basics_suite_SOURCES = \
UnitTests/Basics/Runner.cpp \
UnitTests/Basics/conversions-test.cpp \
UnitTests/Basics/csv-test.cpp \
UnitTests/Basics/files-test.cpp \
UnitTests/Basics/fpconv-test.cpp \
UnitTests/Basics/json-test.cpp \
UnitTests/Basics/json-utilities-test.cpp \
UnitTests/Basics/hashes-test.cpp \
UnitTests/Basics/associative-pointer-test.cpp \
UnitTests/Basics/associative-multi-pointer-test.cpp \
UnitTests/Basics/associative-multi-pointer-nohashcache-test.cpp \
UnitTests/Basics/skiplist-test.cpp \
UnitTests/Basics/priorityqueue-test.cpp \
UnitTests/Basics/string-buffer-test.cpp \
UnitTests/Basics/string-utf8-normalize-test.cpp \
UnitTests/Basics/string-utf8-test.cpp \
UnitTests/Basics/string-test.cpp \
UnitTests/Basics/structure-size-test.cpp \
UnitTests/Basics/vector-pointer-test.cpp \
UnitTests/Basics/vector-test.cpp \
UnitTests/Basics/EndpointTest.cpp \
UnitTests/Basics/StringBufferTest.cpp \
UnitTests/Basics/StringUtilsTest.cpp \
UnitTests/Basics/PathEnumeratorTest.cpp \
UnitTests/Basics/AttributeNameParserTest.cpp \
UnitTests/Basics/VelocyPackHelper-test.cpp \
lib/Basics/WorkMonitorDummy.cpp
UnitTests_geo_suite_CPPFLAGS = -I@top_srcdir@/arangod -I@top_builddir@/lib -I@top_srcdir@/lib @BOOST_CPPFLAGS@
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/Geo/Runner.cpp \
UnitTests/Geo/georeg.cpp \
arangod/GeoIndex/GeoIndex.cpp \
lib/Basics/WorkMonitorDummy.cpp
else
unittests-boost:
@echo
@echo "================================================================================"
@echo "<< BOOST TESTS >>"
@echo "================================================================================"
@echo
@echo "to enable boost unit-tests, install Boost test and configure with --enable-boost-tests"
@echo
endif
################################################################################
### @brief CONVENIENCE TARGET TO EXECUTE A SINGLE TEST ON SERVER AND CLIENT
################################################################################
.PHONY: unittests-single-server unittests-single-client unittests-single
unittests-single:
$(MAKE) unittests-single-server unittests-single-client TEST=$(TEST)
unittests-single-server:
@echo
@echo "================================================================================"
@echo "<< SERVER TEST ($(TEST))"
@echo "================================================================================"
@echo
@rm -rf "$(VOCDIR)"
@mkdir -p "$(VOCDIR)/databases"
$(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --server.endpoint "tcp://$(VOCHOST):$(VOCPORT)" --javascript.unit-tests $(TEST) || test "x$(FORCE)" == "x1"
@rm -rf "$(VOCDIR)"
@echo
unittests-single-client:
@echo
@echo "================================================================================"
@echo "<< SHELL CLIENT TEST ($(TEST))"
@echo "================================================================================"
@echo
@rm -rf "$(VOCDIR)"
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication true" PROTO=unix
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-test $(TEST) || test "x$(FORCE)" == "x1"
sleep 2
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@echo
################################################################################
### @brief SHELL TESTS COMMON (BASICS)
################################################################################
SHELL_COMMON = \
@top_srcdir@/js/common/tests/shell-require.js \
@top_srcdir@/js/common/tests/shell-aqlfunctions.js \
@top_srcdir@/js/common/tests/shell-attributes.js \
@top_srcdir@/js/common/tests/shell-base64.js \
@top_srcdir@/js/common/tests/shell-collection.js \
@top_srcdir@/js/common/tests/shell-collection-volatile-noncluster.js \
@top_srcdir@/js/common/tests/shell-crypto.js \
@top_srcdir@/js/common/tests/shell-collection-noncluster.js \
@top_srcdir@/js/common/tests/shell-database.js \
@top_srcdir@/js/common/tests/shell-document.js \
@top_srcdir@/js/common/tests/shell-edge.js \
@top_srcdir@/js/common/tests/shell-edge-index-noncluster.js \
@top_srcdir@/js/common/tests/shell-errors.js \
@top_srcdir@/js/common/tests/shell-fs.js \
@top_srcdir@/js/common/tests/shell-env.js \
@top_srcdir@/js/common/tests/shell-foxx-manager-install-spec.js \
@top_srcdir@/js/common/tests/shell-general-graph.js \
@top_srcdir@/js/common/tests/shell-graph-algorithms.js \
@top_srcdir@/js/common/tests/shell-graph-measurement.js \
@top_srcdir@/js/common/tests/shell-graph-traversal.js \
@top_srcdir@/js/common/tests/shell-keygen.js \
@top_srcdir@/js/common/tests/shell-keygen-noncluster.js \
@top_srcdir@/js/common/tests/shell-index-ensure.js \
@top_srcdir@/js/common/tests/shell-rename-noncluster.js \
@top_srcdir@/js/common/tests/shell-simple-query.js \
@top_srcdir@/js/common/tests/shell-statement.js \
@top_srcdir@/js/common/tests/shell-statement-encoding-noncluster.js \
@top_srcdir@/js/common/tests/shell-statement-noncluster.js \
@top_srcdir@/js/common/tests/shell-explain-noncluster.js \
@top_srcdir@/js/common/tests/shell-tasks-timecritical.js \
@top_srcdir@/js/common/tests/shell-transactions.js \
@top_srcdir@/js/common/tests/shell-unload.js \
@top_srcdir@/js/common/tests/shell-users.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-cap-constraint-timecritical.js \
@top_srcdir@/js/common/tests/shell-unique-constraint.js \
@top_srcdir@/js/common/tests/shell-hash-index.js \
@top_srcdir@/js/common/tests/shell-hash-index-noncluster.js \
@top_srcdir@/js/common/tests/shell-fulltext.js \
@top_srcdir@/js/common/tests/shell-graph.js \
@top_srcdir@/js/common/tests/shell-query-timecritical-spec.js
################################################################################
### @brief SHELL SERVER TESTS (BASICS)
################################################################################
SHELL_SERVER = $(SHELL_COMMON) $(SHELL_SERVER_ONLY)
.PHONY: unittests-shell-server
unittests-shell-server:
@echo
@echo "================================================================================"
@echo "<< SHELL SERVER TESTS (ALL) >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) shell_server || test "x$(FORCE)" == "x1"
.PHONY: unittests-shell-server-only
unittests-shell-server-only:
@echo
@echo "================================================================================"
@echo "<< SHELL SERVER TESTS (SERVER-ONLY) >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) shell_server_only || test "x$(FORCE)" == "x1"
################################################################################
### @brief SHELL SERVER TESTS (AQL)
################################################################################
.PHONY: unittests-shell-server-aql
unittests-shell-server-aql:
@echo
@echo "================================================================================"
@echo "<< SHELL SERVER TESTS (AQL) >>"
@echo "================================================================================"
@echo
@(if test "x$(SKIP_RANGES)" == "x1"; then \
./scripts/unittest $(VALGRIND) shell_server_aql '{"skipRanges":true}'; \
else \
./scripts/unittest $(VALGRIND) shell_server_aql; \
fi) || test "x$(FORCE)" == "x1"
################################################################################
### @brief SHELL CLIENT TESTS
################################################################################
.PHONY: unittests-shell-client
unittests-shell-client:
@echo
@echo "================================================================================"
@echo "<< SHELL CLIENT TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) shell_client || test "x$(FORCE)" == "x1"
################################################################################
### @brief HTTP SERVER TESTS
################################################################################
.PHONY: unittests-http-server
unittests-http-server:
@echo
@echo "================================================================================"
@echo "<< HTTP SERVER TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) http_server || test "x$(FORCE)" == "x1"
################################################################################
### @brief SSL SERVER TESTS (same as HTTP SERVER TESTS but using SSL)
################################################################################
.PHONY: unittests-ssl-server
unittests-ssl-server:
@echo
@echo "================================================================================"
@echo "<< SSL SERVER TESTS (same as HTTP SERVER TESTS but using SSL) >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) ssl_server || test "x$(FORCE)" == "x1"
################################################################################
### @brief IMPORT TESTS
################################################################################
.PHONY: unittests-import
unittests-import:
@echo
@echo "================================================================================"
@echo "<< IMPORT TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) importing || test "x$(FORCE)" == "x1"
################################################################################
### @brief REPLICATION TESTS
###
### starts two servers (master & slave) and checks for data drift
################################################################################
.PHONY: unittests-replication unittests-replication-server unittests-replication-http unittests-replication-sync unittests-replication-static unittests-replication-ongoing
unittests-replication: unittests-replication-server unittests-replication-http unittests-replication-sync unittests-replication-static unittests-replication-ongoing
unittests-replication-server:
@echo
@echo "================================================================================"
@echo "<< REPLICATION SERVER TESTS >>"
@echo "================================================================================"
@echo
@rm -rf "$(VOCDIR)"
@mkdir -p "$(VOCDIR)/databases"
$(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-tests @top_srcdir@/js/common/tests/replication.js || test "x$(FORCE)" == "x1"
@rm -rf "$(VOCDIR)"
@echo
unittests-replication-http:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication true" PROTO=http
@echo
@echo "================================================================================"
@echo "<< REPLICATION HTTP TESTS >>"
@echo "================================================================================"
@echo
cd @top_srcdir@/UnitTests/HttpInterface && ARANGO_SERVER="$(VOCHOST):$(VOCPORT)" ARANGO_SSL=0 ARANGO_USER="$(USERNAME)" ARANGO_PASSWORD="$(PASSWORD)" ./run-tests-replication || 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
unittests-replication-sync:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication true" PROTO=http
$(MAKE) start-slave PID=$(PID) SERVER_START="--server.endpoint tcp://$(SLAVEHOST):$(SLAVEPORT) --server.disable-authentication true" PROTO=http
@echo
@echo "================================================================================"
@echo "<< REPLICATION SYNC TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.execute-string "require('@arangodb/users').save('replicator-user', 'replicator-password', true); require('@arangodb/users').reload();"
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-tests @top_srcdir@/js/server/tests/replication-sync.js || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
kill `cat $(SLAVEPIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
while test -f $(SLAVEPIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@rm -rf "$(SLAVEDIR)"
@echo
unittests-replication-static:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication false" PROTO=http
$(MAKE) start-slave PID=$(PID) SERVER_START="--server.endpoint tcp://$(SLAVEHOST):$(SLAVEPORT) --server.disable-authentication true" PROTO=http
@echo
@echo "================================================================================"
@echo "<< REPLICATION DATA TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.execute-string "require('@arangodb/users').save('replicator-user', 'replicator-password', true); require('@arangodb/users').reload();"
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-tests @top_srcdir@/js/server/tests/replication-static.js || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
kill `cat $(SLAVEPIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
while test -f $(SLAVEPIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@rm -rf "$(SLAVEDIR)"
@echo
unittests-replication-ongoing:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication true" PROTO=http
$(MAKE) start-slave PID=$(PID) SERVER_START="--server.endpoint tcp://$(SLAVEHOST):$(SLAVEPORT) --server.disable-authentication true" PROTO=http
@echo
@echo "================================================================================"
@echo "<< REPLICATION DATA TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-tests @top_srcdir@/js/server/tests/replication-ongoing.js || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
kill `cat $(SLAVEPIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
while test -f $(SLAVEPIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
@rm -rf "$(SLAVEDIR)"
@echo
################################################################################
### @brief UPGRADE TESTS
###
### invokes the --upgrade option twice and checks for errors
################################################################################
.PHONY: unittests-upgrade
unittests-upgrade:
@echo
@echo "================================================================================"
@echo "<< UPGRADE TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) upgrade || test "x$(FORCE)" == "x1"
################################################################################
### @brief DATAFILE DEBUGGER TESTS
###
### this test just checks whether the dfdb starts.
### we will send an EOT signal to the dfdb process to stop it right away.
################################################################################
.PHONY: unittests-dfdb
unittests-dfdb:
@mkdir -p "$(VOCDIR)/databases"
@test -d "$(VOCDIR)"
echo -e "\x04" | ($(VALGRIND) @builddir@/bin/arangod -c etc/relative/arango-dfdb.conf --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --database.directory "$(VOCDIR)" || test "x$(FORCE)" == "x1")
################################################################################
### @brief FOXX MANAGER TESTS
###
### this test runs a few actions in the foxx manager binary
################################################################################
.PHONY: unittests-foxx-manager
unittests-foxx-manager:
@echo
@echo "================================================================================"
@echo "<< FOXX MANAGER TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) foxx_manager || test "x$(FORCE)" == "x1"
################################################################################
### @brief ARANGODUMP TESTS
################################################################################
.PHONY: unittests-dump
unittests-dump:
@echo
@echo "================================================================================"
@echo "<< ARANGODUMP TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) dump || test "x$(FORCE)" == "x1"
.PHONY: unittests-dump-authentication
unittests-dump-authentication:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication false" PROTO=http
@echo
@echo "================================================================================"
@echo "<< ARANGODUMP TESTS >>"
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-tests @top_srcdir@/js/server/tests/dump-authentication-setup.js || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangodump --configuration none --server.database "UnitTestsDumpSrc" --server.username "foobaruser" --server.password "foobarpasswd" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --output-directory "$(VOCDIR)/dump" || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.execute-string 'var db = require("internal").db; db._dropDatabase("UnitTestsDumpSrc");' || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangorestore --configuration none --create-database true --server.database "UnitTestsDumpSrc" --server.username "foobaruser" --server.password "foobarpasswd" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --input-directory "$(VOCDIR)/dump" || test "x$(FORCE)" == "x1"
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.database "UnitTestsDumpSrc" --server.username "foobaruser" --server.password "foobarpasswd" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --javascript.unit-tests @top_srcdir@/js/server/tests/dump-authentication.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
################################################################################
### @brief ARANGOB TESTS
################################################################################
.PHONY: unittests-arangob
unittests-arangob:
@echo
@echo "================================================================================"
@echo "<< ARANGOB TESTS >>"
@echo "================================================================================"
./scripts/unittest $(VALGRIND) arangob || test "x$(FORCE)" == "x1"
################################################################################
### @brief AUTHENTICATION
################################################################################
.PHONY: unittests-authentication
unittests-authentication:
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication false" PROTO=http
@echo
@echo "================================================================================"
@echo "<< AUTHENTICATION TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) authentication || test "x$(FORCE)" == "x1"
.PHONY: unittests-authentication-parameters
unittests-authentication-parameters:
@echo
@echo "================================================================================"
@echo "<< AUTHENTICATION PARAMETER TESTS >>"
@echo "================================================================================"
@echo
./scripts/unittest $(VALGRIND) authentication_parameters || test "x$(FORCE)" == "x1"
################################################################################
### @brief FULL AUTHENTICATION
################################################################################
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication false --server.authenticate-system-only false" PROTO=http
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api/" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api/version" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_admin/html" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_admin/html/" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/test" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/the-big-fat-fox" EXPECTED="401" || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
################################################################################
### @brief AUTHENTICATION FOR /_ ONLY
################################################################################
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication false --server.authenticate-system-only true" PROTO=http
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api/" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api/version" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_admin/html" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_admin/html/" EXPECTED="401" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/test" EXPECTED="404" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/the-big-fat-fox" EXPECTED="404" || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
################################################################################
### @brief NO AUTHENTICATION
################################################################################
$(MAKE) start-server PID=$(PID) SERVER_START="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-authentication true --server.authenticate-system-only true" PROTO=http
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api/" EXPECTED="404" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api" EXPECTED="404" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_api/version" EXPECTED="200" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_admin/html" EXPECTED="301" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/_admin/html/" EXPECTED="301" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/test" EXPECTED="404" || test "x$(FORCE)" == "x1"
$(MAKE) curl-request-get CURL_PROTO="http" CURL_HOST="$(VOCHOST)" CURL_PORT="$(VOCPORT)" CURL_URL="/the-big-fat-fox" EXPECTED="404" || test "x$(FORCE)" == "x1"
kill `cat $(PIDFILE)`
while test -f $(PIDFILE); do sleep 1; done
@if [ "$(VALGRIND)" != "" ]; then sleep 60; fi
@rm -rf "$(VOCDIR)"
################################################################################
### @brief CPPCHECK
################################################################################
.PHONY: cppcheck
cppcheck:
@rm -f cppcheck.log cppcheck.log && echo -n "" > cppcheck.tmp
for platform in unix32 unix64; do cppcheck -j4 --std=c++11 --enable=style --force --platform=$$platform --suppress="*:lib/JsonParser/json-parser.cpp" --suppress="*:lib/V8/v8-json.cpp" --suppress="*:arangod/Aql/grammar.cpp" --suppress="*:arangod/Aql/tokens.cpp" arangod/ arangosh/ lib/ 1> /dev/null 2>> cppcheck.tmp; done
@sort cppcheck.tmp | uniq > cppcheck.log
@rm cppcheck.tmp
@cat cppcheck.log