1
0
Fork 0

added tests for ssl and unix socket endpoints

This commit is contained in:
Jan Steemann 2012-07-27 10:47:03 +02:00
parent a2ddf69ba3
commit c602be9ad2
6 changed files with 128 additions and 25 deletions

View File

@ -1587,6 +1587,7 @@ SKIP_RANGES = 0
VALGRIND =
USERNAME = root
PASSWORD =
PROTO = http
################################################################################
################################################################################
@ -1595,11 +1596,16 @@ PIDFILE := /tmp/arango.$(PID).pid
VOCDIR := /tmp/vocdir.$(PID)
VOCPORT := $(shell printf "3%04d" `expr $(PID) % 10000`)
VOCHOST := 127.0.0.1
SERVER_OPT := --configuration none --javascript.startup-directory ./js --javascript.modules-path ./js/server/modules:./js/common/modules --javascript.action-directory ./js/actions/system
SERVER_OPT := --configuration none --javascript.startup-directory ./js \
--javascript.modules-path \
./js/server/modules:./js/common/modules \
--javascript.action-directory ./js/actions/system $(shell echo \
$$SERVER_OPT)
CLIENT_OPT := --javascript.startup-directory ./js --javascript.modules-path ./js/client/modules:./js/common/modules --no-colors --quiet
STARTFILE := $(VOCDIR)/startup
CURL := curl
CURL_OPT := --basic --user "$(USERNAME):$(PASSWORD)"
CERT_FILE := @srcdir@/UnitTests/server.pem
@ENABLE_BOOST_TEST_TRUE@UnitTests_basics_suite_LDADD = -L@top_builddir@/lib -larango -lboost_unit_test_framework
@ENABLE_BOOST_TEST_TRUE@UnitTests_basics_suite_DEPENDENCIES = @top_builddir@/lib/libarango.a
@ENABLE_BOOST_TEST_TRUE@UnitTests_basics_suite_SOURCES = \
@ -5304,6 +5310,7 @@ unittests-brief: \
unittests-shell-server \
unittests-shell-server-ahuacatl \
unittests-http-server \
unittests-ssl-server \
unittests-shell-client
unittests-verbose:
@ -5328,7 +5335,9 @@ unittests-verbose:
start-server:
@echo
@echo "================================================================================"
@echo "<< STARTING SERVER >>"
@(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
@ -5338,10 +5347,11 @@ start-server:
@test -d "$(VOCDIR)"
($(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-auth true && rm -rf "$(VOCDIR)") &
($(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) && rm -rf "$(VOCDIR)") &
while [ ! -s "$(STARTFILE)" ]; do $(CURL) $(CURL_OPT) -X GET -s "http://$(VOCHOST):$(VOCPORT)/_api/version" > "$(STARTFILE)" || sleep 2; done
@rm "$(STARTFILE)"
@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 2;
@rm -f "$(STARTFILE)"
@echo "server has been started."
@if [ "$(VALGRIND)" != "" ]; then echo "adding valgrind memorial time..."; sleep 30; else sleep 2; fi
@echo
@ -5423,7 +5433,7 @@ unittests-shell-server-ahuacatl:
.PHONY: unittests-shell-client
unittests-shell-client:
$(MAKE) start-server PID=$(PID)
$(MAKE) start-server PID=$(PID) SERVER_OPT="--server.endpoint unix://$(VOCDIR)/arango.sock --server.disable-authentication true" PROTO=unix
@echo
@echo "================================================================================"
@ -5431,7 +5441,7 @@ unittests-shell-client:
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) $(UNITTESTS_CLIENT) || test "x$(FORCE)" == "x1"
$(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)`
@ -5447,7 +5457,7 @@ unittests-shell-client:
.PHONY: unittests-http-server
unittests-http-server:
$(MAKE) start-server PID=$(PID)
$(MAKE) start-server PID=$(PID) SERVER_OPT="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-auth true" PROTO=http
@echo
@echo "================================================================================"
@ -5455,7 +5465,31 @@ unittests-http-server:
@echo "================================================================================"
@echo
cd @srcdir@/UnitTests/HttpInterface && ARANGO_SERVER="$(VOCHOST):$(VOCPORT)" ./run-tests || test "x$(FORCE)" == "x1"
cd @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
################################################################################
################################################################################
.PHONY: unittests-ssl-server
unittests-ssl-server:
$(MAKE) start-server PID=$(PID) SERVER_OPT="--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 @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)`

View File

@ -7,6 +7,8 @@ SKIP_RANGES = 0
VALGRIND =
USERNAME = root
PASSWORD =
PROTO = http
################################################################################
## unittests target
@ -22,6 +24,7 @@ unittests-brief: \
unittests-shell-server \
unittests-shell-server-ahuacatl \
unittests-http-server \
unittests-ssl-server \
unittests-shell-client
@ -52,10 +55,12 @@ VOCDIR := /tmp/vocdir.$(PID)
VOCPORT := $(shell printf "3%04d" `expr $(PID) % 10000`)
VOCHOST := 127.0.0.1
SERVER_OPT := --configuration none --javascript.startup-directory ./js --javascript.modules-path ./js/server/modules:./js/common/modules --javascript.action-directory ./js/actions/system
SERVER_OPT += $(shell echo $$SERVER_OPT)
CLIENT_OPT := --javascript.startup-directory ./js --javascript.modules-path ./js/client/modules:./js/common/modules --no-colors --quiet
STARTFILE := $(VOCDIR)/startup
CURL := curl
CURL_OPT := --basic --user "$(USERNAME):$(PASSWORD)"
CERT_FILE := @srcdir@/UnitTests/server.pem
.PHONY: start-server
@ -63,7 +68,9 @@ CURL_OPT := --basic --user "$(USERNAME):$(PASSWORD)"
start-server:
@echo
@echo "================================================================================"
@echo "<< STARTING SERVER >>"
@(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
@ -73,10 +80,11 @@ start-server:
@test -d "$(VOCDIR)"
($(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) --server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-auth true && rm -rf "$(VOCDIR)") &
($(VALGRIND) @builddir@/bin/arangod "$(VOCDIR)" $(SERVER_OPT) --pid-file $(PIDFILE) --watch-process $(PID) && rm -rf "$(VOCDIR)") &
while [ ! -s "$(STARTFILE)" ]; do $(CURL) $(CURL_OPT) -X GET -s "http://$(VOCHOST):$(VOCPORT)/_api/version" > "$(STARTFILE)" || sleep 2; done
@rm "$(STARTFILE)"
@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 2;
@rm -f "$(STARTFILE)"
@echo "server has been started."
@if [ "$(VALGRIND)" != "" ]; then echo "adding valgrind memorial time..."; sleep 30; else sleep 2; fi
@echo
@ -267,7 +275,7 @@ SHELL_CLIENT = $(SHELL_COMMON) js/client/tests/client.js
UNITTESTS_CLIENT = $(addprefix --javascript.unit-tests ,$(SHELL_CLIENT))
unittests-shell-client:
$(MAKE) start-server PID=$(PID)
$(MAKE) start-server PID=$(PID) SERVER_OPT="--server.endpoint unix://$(VOCDIR)/arango.sock --server.disable-authentication true" PROTO=unix
@echo
@echo "================================================================================"
@ -275,7 +283,7 @@ unittests-shell-client:
@echo "================================================================================"
@echo
$(VALGRIND) @builddir@/bin/arangosh $(CLIENT_OPT) --server.username "$(USERNAME)" --server.password "$(PASSWORD)" --server.endpoint tcp://$(VOCHOST):$(VOCPORT) $(UNITTESTS_CLIENT) || test "x$(FORCE)" == "x1"
$(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)`
@ -292,7 +300,7 @@ unittests-shell-client:
.PHONY: unittests-http-server
unittests-http-server:
$(MAKE) start-server PID=$(PID)
$(MAKE) start-server PID=$(PID) SERVER_OPT="--server.endpoint tcp://$(VOCHOST):$(VOCPORT) --server.disable-auth true" PROTO=http
@echo
@echo "================================================================================"
@ -300,7 +308,33 @@ unittests-http-server:
@echo "================================================================================"
@echo
cd @srcdir@/UnitTests/HttpInterface && ARANGO_SERVER="$(VOCHOST):$(VOCPORT)" ./run-tests || test "x$(FORCE)" == "x1"
cd @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_OPT="--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 @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)`

View File

@ -13,13 +13,13 @@ describe ArangoDB do
## all query
################################################################################
context "all query:" do
context "all query (will take a while when using ssl):" do
before do
@cn = "UnitTestsCollectionSimple"
ArangoDB.drop_collection(@cn)
@cid = ArangoDB.create_collection(@cn, false)
(0...3000).each{|i|
(0...1500).each{|i|
ArangoDB.post("/_api/document?collection=#{@cid}", :body => "{ \"n\" : #{i} }")
}
end
@ -39,7 +39,7 @@ describe ArangoDB do
doc.parsed_response['code'].should eq(201)
doc.parsed_response['hasMore'].should eq(true)
doc.parsed_response['result'].length.should eq(1000)
doc.parsed_response['count'].should eq(3000)
doc.parsed_response['count'].should eq(1500)
end
it "get all documents with limit" do
@ -72,7 +72,7 @@ describe ArangoDB do
it "get all documents with skip" do
cmd = api + "/all"
body = "{ \"collection\" : \"#{@cid}\", \"skip\" : 2900 }"
body = "{ \"collection\" : \"#{@cid}\", \"skip\" : 1400 }"
doc = ArangoDB.log_put("#{prefix}-all-skip", cmd, :body => body)
doc.code.should eq(201)
@ -86,7 +86,7 @@ describe ArangoDB do
it "get all documents with skip and limit" do
cmd = api + "/all"
body = "{ \"collection\" : \"#{@cid}\", \"skip\" : 2900, \"limit\" : 2 }"
body = "{ \"collection\" : \"#{@cid}\", \"skip\" : 1400, \"limit\" : 2 }"
doc = ArangoDB.log_put("#{prefix}-all-skip-limit", cmd, :body => body)
doc.code.should eq(201)

View File

@ -9,7 +9,13 @@ $address = ENV['ARANGO_SERVER'] || '127.0.0.1:8529'
class ArangoDB
include HTTParty
base_uri "http://#{$address}"
if ENV['ARANGO_SSL'] == '1'
base_uri "https://#{$address}"
else
base_uri "http://#{$address}"
end
basic_auth ENV['ARANGO_USER'], ENV['ARANGO_PASSWORD']
format :json
################################################################################

29
UnitTests/server.pem Normal file
View File

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIICKTCCAZICCQDrch/8O8H4PTANBgkqhkiG9w0BAQUFADBZMQswCQYDVQQGEwJE
RTETMBEGA1UECAwKU29tZS1TdGF0ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0
cyBQdHkgTHRkMRIwEAYDVQQDDAlsb2NhbGhvc3QwHhcNMTIwNzI0MDYxNzUwWhcN
MTMwNzI0MDYxNzUwWjBZMQswCQYDVQQGEwJERTETMBEGA1UECAwKU29tZS1TdGF0
ZTEhMB8GA1UECgwYSW50ZXJuZXQgV2lkZ2l0cyBQdHkgTHRkMRIwEAYDVQQDDAls
b2NhbGhvc3QwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAMDwRweF75H+BFBY
m9c4V/AZyWehxQ+pRfy6d+oPiUbOByqLDEQBdiMamQ0acJX9sn+MsFixEDRC1Y8r
ef49k1hb9V/pPtSFPVl5y8Db4FiDabKD9juUvNRqCXAzu99dwJwFZU2Ldq4BiCmf
8V0SO+nHJHs3+HNgbYU+g77Fax7dAgMBAAEwDQYJKoZIhvcNAQEFBQADgYEASYfI
Afq5lRn+XoESn+PQ89XJ83Jr5mJhDkT7ebw+w1CQsnR9uYIeAYNxOyb3bfHOntnz
3irGYJWkrewVYjNkID8jhZSYEOZkfC4jxNLigg7QXyw/XWwwCIEr8/ZW+cnci43G
+IhSspyoJnljELM99ZsW0IaBLT+tgHzep4bIh0Y=
-----END CERTIFICATE-----
-----BEGIN RSA PRIVATE KEY-----
MIICXgIBAAKBgQDA8EcHhe+R/gRQWJvXOFfwGclnocUPqUX8unfqD4lGzgcqiwxE
AXYjGpkNGnCV/bJ/jLBYsRA0QtWPK3n+PZNYW/Vf6T7UhT1ZecvA2+BYg2myg/Y7
lLzUaglwM7vfXcCcBWVNi3auAYgpn/FdEjvpxyR7N/hzYG2FPoO+xWse3QIDAQAB
AoGBALsP+34C0M02gI456xbXDQPArLJqePp/P1kSnbL0zz80AGSyHflNhXHxltTK
fsAeElNyX4QOYEybRB2kpInov5KrL3lR926GY++otHpSAue+PfLJHH8OU8qjartw
KGlzdnFFYQVLNc0qYGl/h0MxH6+Ce8JV0y1zI4J3nwMwCZwBAkEA6uqluGj4SXIj
6W+FefuHlHXgFn+TZgsGNNmmCMhLJPUUP7auIagtG1n12mN47kWqhLu3asLEVq4+
YnCEa0hF3QJBANJBKN/zyfmvkiET33cY03282gSN0YLyibMYoNDOOYMFEW2b+3oF
x0d40FfEkYS0R4rJiR1HI8xWw8uQEWsXLQECQQDRx1DN6Q8vpznij7BGShO8w7ak
4LAkA9w6/dGDLjnMev7mFqBRdfkx35foucOYI6YueeNE90CVl2wmRAw8MYIRAkEA
qUUgPTyuDMCWqt6u99ka243hD+2FESFmTrOzNKfykVLRNydvDEv+pcHUKfTtGqNx
PYEHTHTrkyT/OLFh9I+SAQJAOntw15vhgKiy0DUvjSvXGJziBDPsu/MCZ2CZbaVx
ipkUZQCZLd/HvMphAiirLV+mAJQC732KKlR9/HWRzDDFEQ==
-----END RSA PRIVATE KEY-----

View File

@ -396,7 +396,7 @@ void ArangoServer::buildApplicationServer () {
("daemon", "run as daemon")
("pid-file", &_pidFile, "pid-file in daemon mode")
("supervisor", "starts a supervisor and runs as daemon")
("working directory", &_workingDirectory, "working directory in daemon mode")
("working-directory", &_workingDirectory, "working directory in daemon mode")
;
// .............................................................................
@ -440,7 +440,7 @@ void ArangoServer::buildApplicationServer () {
// .............................................................................
additional["ENDPOINT Options"]
("server.disable-auth", &_disableAuthentication, "disable authentication for ALL client requests")
("server.disable-authentication", &_disableAuthentication, "disable authentication for ALL client requests")
("server.endpoint", &_endpoints, "endpoint for client HTTP requests")
;