Merge branch 'master' into master
This commit is contained in:
5
tests/apps/dockerfile-dokku-scale/CHECKS
Normal file
5
tests/apps/dockerfile-dokku-scale/CHECKS
Normal file
@@ -0,0 +1,5 @@
|
||||
WAIT=2 # wait 2 seconds
|
||||
TIMEOUT=5 # set timeout to 5 seconds
|
||||
ATTEMPTS=2 # try 2 times
|
||||
|
||||
/ nodejs/express
|
||||
1
tests/apps/dockerfile-dokku-scale/DOKKU_SCALE
Normal file
1
tests/apps/dockerfile-dokku-scale/DOKKU_SCALE
Normal file
@@ -0,0 +1 @@
|
||||
web=1
|
||||
11
tests/apps/dockerfile-dokku-scale/Dockerfile
Normal file
11
tests/apps/dockerfile-dokku-scale/Dockerfile
Normal file
@@ -0,0 +1,11 @@
|
||||
FROM node:4
|
||||
|
||||
EXPOSE 3001/udp
|
||||
EXPOSE 3000/tcp
|
||||
EXPOSE 3003
|
||||
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
RUN npm install
|
||||
|
||||
CMD npm start
|
||||
8
tests/apps/dockerfile-dokku-scale/Procfile
Normal file
8
tests/apps/dockerfile-dokku-scale/Procfile
Normal file
@@ -0,0 +1,8 @@
|
||||
###############################
|
||||
# DEVELOPMENT #
|
||||
###############################
|
||||
|
||||
# Procfile for development using the new threaded worker (scheduler, twitter stream and delayed job)
|
||||
cron: node worker.js
|
||||
web: node web.js
|
||||
worker: node worker.js
|
||||
5
tests/apps/dockerfile-dokku-scale/check_deploy
Executable file
5
tests/apps/dockerfile-dokku-scale/check_deploy
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
set -e
|
||||
output="$(curl -s -S "$1")"
|
||||
echo "$output"
|
||||
test "$output" == "nodejs/express"
|
||||
13
tests/apps/dockerfile-dokku-scale/package.json
Normal file
13
tests/apps/dockerfile-dokku-scale/package.json
Normal file
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"name": "node-example",
|
||||
"version": "0.0.1",
|
||||
"dependencies": {
|
||||
"express": "2.5.x"
|
||||
},
|
||||
"engines": {
|
||||
"node": "4.2.x"
|
||||
},
|
||||
"scripts": {
|
||||
"start": "false"
|
||||
}
|
||||
}
|
||||
12
tests/apps/dockerfile-dokku-scale/web.js
Normal file
12
tests/apps/dockerfile-dokku-scale/web.js
Normal file
@@ -0,0 +1,12 @@
|
||||
var express = require('express');
|
||||
|
||||
var app = express.createServer(express.logger());
|
||||
|
||||
app.get('/', function(request, response) {
|
||||
response.send('nodejs/express');
|
||||
});
|
||||
|
||||
var port = process.env.PORT || 5000;
|
||||
app.listen(port, function() {
|
||||
console.log("Listening on " + port);
|
||||
});
|
||||
6
tests/apps/dockerfile-dokku-scale/worker.js
Normal file
6
tests/apps/dockerfile-dokku-scale/worker.js
Normal file
@@ -0,0 +1,6 @@
|
||||
function worker() {
|
||||
console.log('sleeping for 60 seconds');
|
||||
setTimeout(worker, 60 * 1000);
|
||||
}
|
||||
|
||||
worker();
|
||||
@@ -1,6 +1,6 @@
|
||||
source "https://rubygems.org"
|
||||
|
||||
ruby '2.2.4'
|
||||
ruby '2.6.2'
|
||||
|
||||
gem 'compass', ">= 1.0.1"
|
||||
gem 'sass-globbing'
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
# SC2029 - Note that, unescaped, this expands on the client side - https://github.com/koalaman/shellcheck/wiki/SC2029
|
||||
# SC2034 - VAR appears unused - https://github.com/koalaman/shellcheck/wiki/SC2034
|
||||
# SC2046 - Quote this to prevent word splitting - https://github.com/koalaman/shellcheck/wiki/SC2046
|
||||
# SC2064 - Use single quotes, otherwise this expands now rather than when signalled.
|
||||
# SC2068 - Double quote array expansions to avoid re-splitting elements - https://github.com/koalaman/shellcheck/wiki/SC2068
|
||||
# SC2086 - Double quote to prevent globbing and word splitting - https://github.com/koalaman/shellcheck/wiki/SC2086
|
||||
# SC2119 - Use 'function "$@"' if function's $1 should mean script's $1 - https://github.com/koalaman/shellcheck/wiki/SC2119
|
||||
|
||||
4
tests/unit/10_apps.bats
Executable file → Normal file
4
tests/unit/10_apps.bats
Executable file → Normal file
@@ -2,11 +2,11 @@
|
||||
|
||||
load test_helper
|
||||
|
||||
setup () {
|
||||
setup() {
|
||||
global_setup
|
||||
}
|
||||
|
||||
teardown () {
|
||||
teardown() {
|
||||
global_teardown
|
||||
}
|
||||
|
||||
|
||||
@@ -134,6 +134,35 @@ teardown() {
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(ps:scale) dockerfile dokku-scale" {
|
||||
run /bin/bash -c "dokku ps:scale $TEST_APP web=2"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
deploy_app dockerfile-dokku-scale
|
||||
CIDS=""
|
||||
for CID_FILE in $DOKKU_ROOT/$TEST_APP/CONTAINER.web.*; do
|
||||
CIDS+=$(< $CID_FILE)
|
||||
CIDS+=" "
|
||||
done
|
||||
CIDS_PATTERN=$(echo $CIDS | sed -e "s: :|:g")
|
||||
run /bin/bash -c "docker ps -q --no-trunc | egrep \"$CIDS_PATTERN\" | wc -l | grep 1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku ps:scale $TEST_APP web=1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
|
||||
run /bin/bash -c "dokku ps:report $TEST_APP --ps-can-scale"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "false"
|
||||
}
|
||||
|
||||
@test "(ps) dockerfile with procfile" {
|
||||
deploy_app dockerfile-procfile
|
||||
run /bin/bash -c "dokku ps:stop $TEST_APP"
|
||||
|
||||
@@ -13,6 +13,7 @@ teardown() {
|
||||
}
|
||||
|
||||
@test "(ps) ps:inspect" {
|
||||
dokku config:set "$TEST_APP" key=value key=value=value
|
||||
deploy_app dockerfile
|
||||
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
|
||||
@@ -109,11 +109,11 @@ teardown() {
|
||||
assert_success
|
||||
done
|
||||
|
||||
run /bin/bash -c "dokku ps:scale $TEST_APP web=0 worker=0"
|
||||
run /bin/bash -c "dokku ps:scale $TEST_APP web=0 worker=0 invalid-process=0"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
for PROC_TYPE in web worker; do
|
||||
for PROC_TYPE in web worker invalid-process; do
|
||||
CIDS=""
|
||||
shopt -s nullglob
|
||||
for CID_FILE in $DOKKU_ROOT/$TEST_APP/CONTAINER.$PROC_TYPE.*; do
|
||||
|
||||
@@ -155,6 +155,32 @@ teardown() {
|
||||
run /bin/bash -c "dokku --app $TEST_APP config:show"
|
||||
echo "output: $output"
|
||||
echo "status: "$stat
|
||||
|
||||
assert_output "=====> $TEST_APP env vars"$'\nBKEY: true\naKey: true\nbKey: true\nzKey: true'
|
||||
}
|
||||
|
||||
@test "(config) config:export" {
|
||||
run /bin/bash -c "dokku --app $TEST_APP config:set zKey=true bKey=true BKEY=true aKey=true"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku config:export --format docker-args $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: "$stat
|
||||
assert_output "--env=BKEY='true' --env=aKey='true' --env=bKey='true' --env=zKey='true'"
|
||||
|
||||
run /bin/bash -c "dokku config:export --format shell $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: "$stat
|
||||
assert_output "BKEY='true' aKey='true' bKey='true' zKey='true' "
|
||||
|
||||
run /bin/bash -c "dokku config:export --format json $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: "$stat
|
||||
assert_output '{"BKEY":"true","aKey":"true","bKey":"true","zKey":"true"}'
|
||||
|
||||
run /bin/bash -c "dokku config:export --format json-list $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: "$stat
|
||||
assert_output '[{"name":"BKEY","value":"true"},{"name":"aKey","value":"true"},{"name":"bKey","value":"true"},{"name":"zKey","value":"true"}]'
|
||||
}
|
||||
|
||||
@@ -45,6 +45,11 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains:add $TEST_APP .dokku.me"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains $TEST_APP 2>/dev/null"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
@@ -173,6 +178,11 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains:report $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains:clear $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
@@ -183,6 +193,11 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
refute_line test.app.dokku.me
|
||||
|
||||
run /bin/bash -c "dokku domains:report $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(domains) domains:add-global" {
|
||||
@@ -191,6 +206,11 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains:report --global"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains 2>/dev/null | egrep -qw '^global.dokku.me\$'"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
@@ -219,6 +239,25 @@ teardown() {
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(domains) domains:clear-global" {
|
||||
run /bin/bash -c "dokku domains:add-global global.dokku.invalid"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains:add-global global.dokku.me"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku domains:clear-global"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
refute_line "global.dokku.invalid"
|
||||
refute_line "global.dokku.me"
|
||||
}
|
||||
|
||||
@test "(domains) domains:remove-global" {
|
||||
run /bin/bash -c "dokku domains:add-global global.dokku.me"
|
||||
echo "output: $output"
|
||||
@@ -269,3 +308,22 @@ teardown() {
|
||||
assert_line ${TEST_APP}.global3.dokku.me
|
||||
assert_line ${TEST_APP}.global4.dokku.me
|
||||
}
|
||||
|
||||
@test "(domains) app name overlaps with global domain.tld" {
|
||||
run /bin/bash -c "dokku domains:set-global dokku.test"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
# run domains:clear in order to invoke default vhost creation
|
||||
dokku --quiet apps:create test.dokku.test
|
||||
dokku --quiet domains:clear test.dokku.test
|
||||
|
||||
run /bin/bash -c "dokku domains:report test.dokku.test --domains-app-vhosts"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
assert_output "test.dokku.test"
|
||||
|
||||
dokku --force apps:destroy test.dokku.test
|
||||
}
|
||||
|
||||
@@ -136,7 +136,7 @@ teardown() {
|
||||
deploy_app
|
||||
|
||||
create_attach_network
|
||||
run dokku nginx:build-config "$TEST_APP"
|
||||
run /bin/bash -c "dokku nginx:build-config $TEST_APP"
|
||||
echo "output: "$output
|
||||
echo "status: "$status
|
||||
assert_success
|
||||
|
||||
194
tests/unit/20_resource.bats
Normal file
194
tests/unit/20_resource.bats
Normal file
@@ -0,0 +1,194 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
global_setup
|
||||
create_app
|
||||
}
|
||||
|
||||
teardown() {
|
||||
destroy_app
|
||||
global_teardown
|
||||
}
|
||||
|
||||
@test "(resource) resource:limit" {
|
||||
run /bin/bash -c "dokku resource:limit $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "resource limits $TEST_APP information"
|
||||
|
||||
deploy_app
|
||||
run /bin/bash -c "dokku resource:limit --memory 512MB $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.Memory}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "0"
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.Memory}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:limit --memory 1024MB --process-type worker $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.Memory}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:limit-clear --process-type worker $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.Memory}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:limit-clear --process-type web $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.Memory}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:limit-clear $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.Memory}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "0"
|
||||
}
|
||||
|
||||
@test "(resource) resource:reserve" {
|
||||
run /bin/bash -c "dokku resource:reserve $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "resource reservation $TEST_APP information"
|
||||
|
||||
deploy_app
|
||||
run /bin/bash -c "dokku resource:reserve --memory 512MB $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.MemoryReservation}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "0"
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.MemoryReservation}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:reserve --memory 1024MB --process-type worker $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku resource:reserve --cpu 0.5 --process-type worker $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.MemoryReservation}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
# run /bin/bash -c "docker inspect --format '{{.HostConfig.NanoCpus}}' $CID"
|
||||
# echo "output: $output"
|
||||
# echo "status: $status"
|
||||
# assert_output "500000000"
|
||||
|
||||
run /bin/bash -c "dokku resource:reserve-clear --process-type worker $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.MemoryReservation}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:reserve-clear --process-type web $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.MemoryReservation}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "536870912"
|
||||
|
||||
run /bin/bash -c "dokku resource:reserve-clear $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
dokku ps:rebuild "$TEST_APP"
|
||||
CID=$(< $DOKKU_ROOT/$TEST_APP/CONTAINER.web.1)
|
||||
run /bin/bash -c "docker inspect --format '{{.HostConfig.MemoryReservation}}' $CID"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output "0"
|
||||
}
|
||||
|
||||
@test "(resource) resource:limit-clear" {
|
||||
run /bin/bash -c "dokku resource:limit-clear $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku resource:limit-clear --process-type web $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(resource) resource:reserve-clear" {
|
||||
run /bin/bash -c "dokku resource:reserve-clear $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku resource:reserve-clear --process-type web $TEST_APP"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
@@ -209,3 +209,25 @@ teardown() {
|
||||
echo "status: $status"
|
||||
assert_output_not_exists
|
||||
}
|
||||
|
||||
@test "(buildpacks) buildpacks deploy" {
|
||||
destroy_app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
create_app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku buildpacks:set $TEST_APP https://github.com/heroku/heroku-buildpack-nodejs"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run deploy_app
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@@ -13,6 +13,9 @@ setup() {
|
||||
# now create key that will be really used
|
||||
create_key
|
||||
|
||||
# Test key without a trailing newline
|
||||
echo -n "$KEY" > /tmp/testkey-no-newline.pub
|
||||
|
||||
# the temporary key is useful for adding in the file with two keys
|
||||
# useful for a negative test
|
||||
{ cat /tmp/testkey.pub ; echo "$KEY" ; } > /tmp/testkey-double.pub
|
||||
@@ -50,6 +53,15 @@ teardown() {
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
run /bin/bash -c 'echo "" >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
||||
run /bin/bash -c 'echo "" >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
run /bin/bash -c "dokku ssh-keys:list"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
run /bin/bash -c "dokku ssh-keys:list | grep name1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
@@ -70,6 +82,10 @@ teardown() {
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
run /bin/bash -c "dokku ssh-keys:add name5 /tmp/testkey-no-newline.pub"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
# leave this as the last test in the sequence! It introduces an error in authorized_keys
|
||||
run /bin/bash -c 'echo invalid >> "${DOKKU_ROOT:-/home/dokku}/.ssh/authorized_keys"'
|
||||
|
||||
@@ -39,6 +39,18 @@ assert_url() {
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(core) run (with --env / -e)" {
|
||||
deploy_app
|
||||
run /bin/bash -c "dokku run --env TEST=testvalue -e TEST2=testvalue2 $TEST_APP env | egrep '^TEST=testvalue'"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
|
||||
run /bin/bash -c "dokku run --env TEST=testvalue -e TEST2=testvalue2 $TEST_APP env | egrep '^TEST2=testvalue2'"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(core) unknown command" {
|
||||
run /bin/bash -c "dokku fakecommand"
|
||||
echo "output: $output"
|
||||
|
||||
@@ -3,13 +3,20 @@
|
||||
load test_helper
|
||||
TEST_PLUGIN_NAME=smoke-test-plugin
|
||||
TEST_PLUGIN_GIT_REPO=https://github.com/dokku/${TEST_PLUGIN_NAME}.git
|
||||
TEST_PLUGIN_LOCAL_REPO="$(mktemp -d)/$TEST_PLUGIN_NAME"
|
||||
|
||||
clone_test_plugin() {
|
||||
git clone "$TEST_PLUGIN_GIT_REPO" "$TEST_PLUGIN_LOCAL_REPO"
|
||||
}
|
||||
|
||||
setup() {
|
||||
global_setup
|
||||
clone_test_plugin
|
||||
}
|
||||
|
||||
remove_test_plugin() {
|
||||
rm -rf $PLUGIN_ENABLED_PATH/$TEST_PLUGIN_NAME $PLUGIN_AVAILABLE_PATH/$TEST_PLUGIN_NAME
|
||||
rm -rf $TEST_PLUGIN_LOCAL_REPO
|
||||
}
|
||||
|
||||
teardown() {
|
||||
@@ -59,6 +66,48 @@ teardown() {
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "(plugin) plugin:install, plugin:disable, plugin:update plugin:uninstall (with file://)" {
|
||||
run /bin/bash -c "dokku plugin:install file://$TEST_PLUGIN_LOCAL_REPO --name $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku plugin:update $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku plugin | grep enabled | grep $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "sudo -E -u nobody dokku plugin:uninstall $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
|
||||
run /bin/bash -c "dokku plugin:disable $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku plugin | grep disabled | grep $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku plugin:uninstall $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku plugin | grep $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
}
|
||||
|
||||
@test "(plugin) plugin:install plugin:update (with tag)" {
|
||||
run /bin/bash -c "dokku plugin:install $TEST_PLUGIN_GIT_REPO --committish v0.2.0 --name $TEST_PLUGIN_NAME"
|
||||
echo "output: $output"
|
||||
|
||||
80
tests/unit/40_report.bats
Normal file
80
tests/unit/40_report.bats
Normal file
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
global_setup
|
||||
deploy_app
|
||||
rm -f /tmp/fake-docker-bin
|
||||
}
|
||||
|
||||
teardown() {
|
||||
rm -f /tmp/fake-docker-bin
|
||||
destroy_app
|
||||
global_teardown
|
||||
}
|
||||
|
||||
@test "(report) report" {
|
||||
run /bin/bash -c "dokku report"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "herokuish version:"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku report $TEST_APP 2>&1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "herokuish version:"
|
||||
assert_output_contains "not deployed" "0"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "dokku report fake-app-name"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
|
||||
run /bin/bash -c "dokku report fake-app-name 2>&1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "App fake-app-name does not exist"
|
||||
assert_failure
|
||||
|
||||
dokku apps:create "${TEST_APP}-2"
|
||||
run /bin/bash -c "dokku report ${TEST_APP}-2 2>&1"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "not deployed"
|
||||
assert_success
|
||||
|
||||
dokku --force apps:destroy "${TEST_APP}-2"
|
||||
}
|
||||
|
||||
@test "(report) custom docker bin" {
|
||||
export DOCKER_BIN="docker"
|
||||
run /bin/bash -c "dokku report"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "herokuish version:"
|
||||
assert_success
|
||||
|
||||
export DOCKER_BIN="/usr/bin/docker"
|
||||
run /bin/bash -c "dokku report"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "herokuish version:"
|
||||
assert_success
|
||||
|
||||
touch /tmp/fake-docker-bin
|
||||
echo '#!/usr/bin/env bash' >/tmp/fake-docker-bin
|
||||
echo '/usr/bin/docker "$@"' >>/tmp/fake-docker-bin
|
||||
chmod +x /tmp/fake-docker-bin
|
||||
|
||||
export DOCKER_BIN="/tmp/fake-docker-bin"
|
||||
run /bin/bash -c "dokku report"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_output_contains "herokuish version:"
|
||||
assert_success
|
||||
|
||||
unset DOCKER_BIN
|
||||
}
|
||||
62
tests/unit/40_trace.bats
Normal file
62
tests/unit/40_trace.bats
Normal file
@@ -0,0 +1,62 @@
|
||||
#!/usr/bin/env bats
|
||||
|
||||
load test_helper
|
||||
|
||||
setup() {
|
||||
global_setup
|
||||
rm -f "$DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
}
|
||||
|
||||
teardown() {
|
||||
rm -f "$DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
global_teardown
|
||||
}
|
||||
|
||||
@test "(trace) trace:on" {
|
||||
run /bin/bash -c "dokku trace:on"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(trace) trace on" {
|
||||
run /bin/bash -c "dokku trace on"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
}
|
||||
|
||||
@test "(trace) trace:off, trace off" {
|
||||
touch "$DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
run /bin/bash -c "dokku trace:off"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
run /bin/bash -c "test -f $DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
|
||||
touch "$DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
run /bin/bash -c "dokku trace off"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_success
|
||||
|
||||
|
||||
run /bin/bash -c "test -f $DOKKU_ROOT/.dokkurc/DOKKU_TRACE"
|
||||
echo "output: $output"
|
||||
echo "status: $status"
|
||||
assert_failure
|
||||
}
|
||||
Reference in New Issue
Block a user