Merge pull request #1 from progrium/1144_mh-test-git-remote-offport

add test for off-port git remote
This commit is contained in:
Andreas Litt
2015-04-26 19:12:56 +02:00
17 changed files with 108 additions and 115 deletions

View File

@@ -5,19 +5,9 @@ dependencies:
cache_directories:
- "~/docker"
override:
# need to add the dokku user to the docker group
- sudo -E CI=true make -e sshcommand
- sudo usermod -G docker dokku
- sudo -E CI=true DOCKER_VERSION=1.5.0 make -e install: { timeout: 300 }
- make -e ci-dependencies
#### circle does some weird *expletive* with regards to root and gh auth (needed for gitsubmodules test)
- sudo rsync -a ~ubuntu/.ssh/ ~root/.ssh/
- sudo chown -R root:root ~root/.ssh/
- sudo sed -e 's:/home/ubuntu:/root:g' ~root/.ssh/config
####
- sudo -E make -e setup-deploy-tests
- ./tests/ci/parallel_runner.sh setup: { timeout: 300 }
post:
- sudo -E make -e lint
test:
override:
- ./tests/ci/parallel_runner.sh: { parallel: true, timeout: 1800 }
- ./tests/ci/parallel_runner.sh testing: { parallel: true, timeout: 1800 }

2
dokku
View File

@@ -37,7 +37,7 @@ fi
if [[ -n "$SSH_ORIGINAL_COMMAND" ]]; then
export -n SSH_ORIGINAL_COMMAND
if [[ $1 =~ config-* ]];then
if [[ $1 =~ config-* ]] || [[ $1 =~ docker-options* ]];then
xargs $0 <<<$SSH_ORIGINAL_COMMAND
exit $?
else

View File

@@ -28,8 +28,15 @@ endif
@echo "-----> Setting up ssh config..."
ifneq ($(shell ls /root/.ssh/config > /dev/null 2>&1 ; echo $$?),0)
echo "Host dokku.me \\r\\n RequestTTY yes \\r\\n IdentityFile /root/.ssh/dokku_test_rsa" >> /root/.ssh/config
echo "Host 127.0.0.1 \\r\\n Port 22333 \\r\\n RequestTTY yes \\r\\n IdentityFile /root/.ssh/dokku_test_rsa" >> /root/.ssh/config
else ifeq ($(shell grep dokku.me /root/.ssh/config),)
echo "Host dokku.me \\r\\n RequestTTY yes \\r\\n IdentityFile /root/.ssh/dokku_test_rsa" >> /root/.ssh/config
echo "Host 127.0.0.1 \\r\\n Port 22333 \\r\\n RequestTTY yes \\r\\n IdentityFile /root/.ssh/dokku_test_rsa" >> /root/.ssh/config
endif
ifeq ($(shell grep 22333 /etc/ssh/sshd_config),)
sed --in-place "s:^Port 22:Port 22 \\nPort 22333:g" /etc/ssh/sshd_config
restart ssh
endif
@echo "-----> Installing SSH public key..."
@@ -38,6 +45,7 @@ endif
@echo "-----> Intitial SSH connection to populate known_hosts..."
ssh -o StrictHostKeyChecking=no dokku@dokku.me help > /dev/null
ssh -o StrictHostKeyChecking=no dokku@127.0.0.1 help > /dev/null
ifeq ($(shell grep dokku.me /home/dokku/VHOST 2>/dev/null),)
@echo "-----> Setting default VHOST to dokku.me..."
@@ -61,7 +69,11 @@ lint:
unit-tests:
@echo running unit tests...
ifndef UNIT_TEST_BATCH
@$(QUIET) bats tests/unit
else
@$(QUIET) ./tests/ci/unit_test_runner.sh $$UNIT_TEST_BATCH
endif
deploy-test-clojure:
@echo deploying config app...
@@ -125,7 +137,6 @@ deploy-test-static:
deploy-tests:
@echo running deploy tests...
# @$(QUIET) bats tests/deploy
@$(QUIET) $(MAKE) deploy-test-config
@$(QUIET) $(MAKE) deploy-test-clojure
@$(QUIET) $(MAKE) deploy-test-dockerfile

View File

@@ -1,20 +1,46 @@
#!/usr/bin/env bash
MODE="$1"; MODE=${MODE:="testing"}
setup_circle() {
MAKE_ENV="CI=true DOCKER_VERSION=1.5.0"
[[ "$1" == "buildstack" ]] && MAKE_ENV+=" BUILD_STACK=true "
echo "setting up with MAKE_ENV: $MAKE_ENV"
sudo -E CI=true make -e sshcommand
# need to add the dokku user to the docker group
sudo usermod -G docker dokku
#### circle does some weird *expletive* with regards to root and gh auth (needed for gitsubmodules test)
sudo rsync -a ~ubuntu/.ssh/ ~root/.ssh/
sudo chown -R root:root ~root/.ssh/
sudo sed --in-place 's:/home/ubuntu:/root:g' ~root/.ssh/config
####
sudo -E $MAKE_ENV make -e install
sudo -E make -e setup-deploy-tests
make -e ci-dependencies
}
case "$CIRCLE_NODE_INDEX" in
0)
echo "=====> make unit-tests"
sudo -E make -e unit-tests
echo "=====> make unit-tests (1/2) on CIRCLE_NODE_INDEX: $CIRCLE_NODE_INDEX"
[[ "$MODE" == "setup" ]] && setup_circle && exit 0
sudo -E UNIT_TEST_BATCH=1 make -e unit-tests
;;
1)
echo "=====> make deploy-tests (buildstep release)"
sudo -E make -e deploy-tests
echo "=====> make unit-tests (2/2) on CIRCLE_NODE_INDEX: $CIRCLE_NODE_INDEX"
[[ "$MODE" == "setup" ]] && setup_circle && exit 0
sudo -E UNIT_TEST_BATCH=2 make -e unit-tests
;;
2)
echo "=====> make deploy-tests (buildstep master)"
docker rmi -f progrium/buildstep && \
sudo -E BUILD_STACK=true make -e stack && \
echo "=====> make deploy-tests (buildstep release) on CIRCLE_NODE_INDEX: $CIRCLE_NODE_INDEX"
[[ "$MODE" == "setup" ]] && setup_circle && exit 0
sudo -E make -e deploy-tests
;;
3)
echo "=====> make deploy-tests (buildstep master) on CIRCLE_NODE_INDEX: $CIRCLE_NODE_INDEX"
[[ "$MODE" == "setup" ]] && setup_circle buildstack && exit 0
sudo -E make -e deploy-tests
;;
esac

37
tests/ci/unit_test_runner.sh Executable file
View File

@@ -0,0 +1,37 @@
#!/usr/bin/env bash
is_number() {
local NUMBER=$1; local NUM_RE='^[0-9]+$'
if [[ $NUMBER =~ $NUM_RE ]];then
return 0
else
return 1
fi
}
usage() {
echo "usage: $0 1|2"
exit 0
}
BATCH_NUM="$1"
is_number $BATCH_NUM || usage
TESTS=($(find "$(dirname $0)"/../unit -maxdepth 1 -name "*.bats"))
HALF_TESTS=$(( ${#TESTS[@]} / 2 ))
FIRST_HALF=("${TESTS[@]:0:${HALF_TESTS}}")
LAST_HALF=("${TESTS[@]:${HALF_TESTS}:${#TESTS[@]}}")
case "$BATCH_NUM" in
1)
bats "${FIRST_HALF[@]}"
;;
2)
bats "${LAST_HALF[@]}"
;;
*)
usage
;;
esac

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy config app" {
run bash -c "cd tests && ./test_deploy ./apps/config dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy gitsubmodules app" {
run bash -c "cd tests && ./test_deploy ./apps/gitsubmodules dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy go app" {
run bash -c "cd tests && ./test_deploy ./apps/go dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy java app" {
run bash -c "cd tests && ./test_deploy ./apps/java dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy multi app" {
run bash -c "cd tests && ./test_deploy ./apps/multi dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy nodejs-express app" {
run bash -c "cd tests && ./test_deploy ./apps/nodejs-express dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,11 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy php app" {
skip "fails. ref: https://github.com/progrium/buildstep/issues/126"
run bash -c "cd tests && ./test_deploy ./apps/php dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,10 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy python-flask app" {
run bash -c "cd tests && ./test_deploy ./apps/python-flask dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -1,11 +0,0 @@
#!/usr/bin/env bats
load ../unit/test_helper
@test "deploy static app" {
skip "fails on apt-get update..."
run bash -c "cd tests && ./test_deploy ./apps/static dokku.me"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -115,3 +115,9 @@ build_nginx_config() {
assert_urls "https://${TEST_APP}.dokku.me" "https://test.dokku.me" "http://dokku.example.com"
}
@test "(core) git-remote (off-port)" {
run deploy_app nodejs-express ssh://dokku@127.0.0.1:22333/$TEST_APP
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -149,3 +149,14 @@ teardown() {
assert_success
deploy_app
}
@test "docker-options:add (all phases over SSH)" {
run ssh dokku@dokku.me docker-options:add $TEST_APP build,deploy,run \"-v /tmp\"
echo "output: "$output
echo "status: "$status
assert_success
run /bin/bash -c "dokku docker-options $TEST_APP | egrep '\-v /tmp' | wc -l | grep -q 3"
echo "output: "$output
echo "status: "$status
assert_success
}

View File

@@ -89,7 +89,9 @@ create_app() {
}
destroy_app() {
RC="$1"; RC=${RC:=0}
echo $TEST_APP | dokku apps:destroy $TEST_APP
return $RC
}
add_domain() {
@@ -98,18 +100,20 @@ add_domain() {
deploy_app() {
APP_TYPE="$1"; APP_TYPE=${APP_TYPE:="nodejs-express"}
GIT_REMOTE="$2"; GIT_REMOTE=${GIT_REMOTE:="dokku@dokku.me:$TEST_APP"}
TMP=$(mktemp -d -t "$TARGET.XXXXX")
rmdir $TMP && cp -r ./tests/apps/$APP_TYPE $TMP
cd $TMP
git init
git config user.email "robot@example.com"
git config user.name "Test Robot"
git remote add target dokku@dokku.me:$TEST_APP
echo "setting up remote: $GIT_REMOTE"
git remote add target $GIT_REMOTE
[[ -f gitignore ]] && mv gitignore .gitignore
git add .
git commit -m 'initial commit'
git push target master || destroy_app
git push target master || destroy_app $?
}
setup_client_repo() {