From ac5623971055b3fca438ad5f515adf057d5ac1c5 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 20:38:40 +0530 Subject: [PATCH 1/9] tests: `Port 8080 exposed and accepting external connections` --- bitnami/tomcat/test.sh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100755 bitnami/tomcat/test.sh diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh new file mode 100755 index 000000000000..fd138eaab1be --- /dev/null +++ b/bitnami/tomcat/test.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bats +CONTAINER_NAME=bitnami-tomcat-test +IMAGE_NAME=${IMAGE_NAME:-bitnami/tomcat} +SLEEP_TIME=5 + +cleanup_running_containers() { + if [ "$(docker ps -a | grep $CONTAINER_NAME)" ]; then + docker rm -fv $CONTAINER_NAME + fi +} + +setup() { + cleanup_running_containers +} + +teardown() { + cleanup_running_containers +} + +create_container(){ + docker run --name $CONTAINER_NAME "$@" $IMAGE_NAME + sleep $SLEEP_TIME +} + +@test "Port 8080 exposed and accepting external connections" { + create_container -d + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://tomcat:8080 + [[ "$output" =~ '200 OK' ]] +} From d32f4fe9d3f2cb5a0790fb2393774c38a668d170 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 21:04:20 +0530 Subject: [PATCH 2/9] tests: Manager has access to management area --- bitnami/tomcat/test.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index fd138eaab1be..c89ee8e1294e 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -2,6 +2,7 @@ CONTAINER_NAME=bitnami-tomcat-test IMAGE_NAME=${IMAGE_NAME:-bitnami/tomcat} SLEEP_TIME=5 +TOMCAT_USER=manager cleanup_running_containers() { if [ "$(docker ps -a | grep $CONTAINER_NAME)" ]; then @@ -27,3 +28,9 @@ create_container(){ run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://tomcat:8080 [[ "$output" =~ '200 OK' ]] } + +@test "Manager has access to management area" { + create_container -d + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER@tomcat:8080/manager/html + [[ "$output" =~ '200 OK' ]] +} From 263481a2e7281178b8e8f57095a501e1b1e66d75 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 21:06:14 +0530 Subject: [PATCH 3/9] tests: User manager created with password --- bitnami/tomcat/test.sh | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index c89ee8e1294e..c75469c1af80 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -3,6 +3,7 @@ CONTAINER_NAME=bitnami-tomcat-test IMAGE_NAME=${IMAGE_NAME:-bitnami/tomcat} SLEEP_TIME=5 TOMCAT_USER=manager +TOMCAT_PASSWORD=test_password cleanup_running_containers() { if [ "$(docker ps -a | grep $CONTAINER_NAME)" ]; then @@ -34,3 +35,9 @@ create_container(){ run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER@tomcat:8080/manager/html [[ "$output" =~ '200 OK' ]] } + +@test "User manager created with password" { + create_container -d -e TOMCAT_PASSWORD=$TOMCAT_PASSWORD + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER:$TOMCAT_PASSWORD@tomcat:8080/manager/html + [[ "$output" =~ '200 OK' ]] +} From 1d02956986c8cf37a54df873696dab9c4844242b Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 21:33:01 +0530 Subject: [PATCH 4/9] tests: Can't access management area without password --- bitnami/tomcat/test.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index c75469c1af80..5264cb3cfe86 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -41,3 +41,9 @@ create_container(){ run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER:$TOMCAT_PASSWORD@tomcat:8080/manager/html [[ "$output" =~ '200 OK' ]] } + +@test "Can't access management area without password" { + create_container -d -e TOMCAT_PASSWORD=$TOMCAT_PASSWORD + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER@tomcat:8080/manager/html + [[ "$output" =~ '401 Unauthorized' ]] +} From 8bd8ee426f22054b9e219ffe1bf9452cbc73c052 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 22:05:00 +0530 Subject: [PATCH 5/9] tests: Password is preserved after restart --- bitnami/tomcat/test.sh | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index 5264cb3cfe86..20ebca7e917a 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -24,6 +24,12 @@ create_container(){ sleep $SLEEP_TIME } +create_full_container(){ + docker run -d --name $CONTAINER_NAME\ + -e TOMCAT_PASSWORD=$TOMCAT_PASSWORD $IMAGE_NAME + sleep $SLEEP_TIME +} + @test "Port 8080 exposed and accepting external connections" { create_container -d run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://tomcat:8080 @@ -47,3 +53,17 @@ create_container(){ run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER@tomcat:8080/manager/html [[ "$output" =~ '401 Unauthorized' ]] } + +@test "Password is preserved after restart" { + create_full_container + + docker stop $CONTAINER_NAME + docker start $CONTAINER_NAME + sleep $SLEEP_TIME + + run docker logs $CONTAINER_NAME + [[ "$output" =~ "The credentials were set on first boot." ]] + + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER:$TOMCAT_PASSWORD@tomcat:8080/manager/html + [[ "$output" =~ '200 OK' ]] +} From 6fd79affe405af5b16ffbaffba231a537142c755 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 22:08:39 +0530 Subject: [PATCH 6/9] tests: All the volumes exposed --- bitnami/tomcat/test.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index 20ebca7e917a..6422307d024d 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -67,3 +67,11 @@ create_full_container(){ run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER:$TOMCAT_PASSWORD@tomcat:8080/manager/html [[ "$output" =~ '200 OK' ]] } + +@test "All the volumes exposed" { + create_container -d + run docker inspect $CONTAINER_NAME + [[ "$output" =~ "/app" ]] + [[ "$output" =~ "$VOL_PREFIX/conf" ]] + [[ "$output" =~ "$VOL_PREFIX/logs" ]] +} From ae135e068438dd0e184bd9114090852aed97a95c Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 22:23:57 +0530 Subject: [PATCH 7/9] tests: Data gets generated in conf if bind mounted in the host --- bitnami/tomcat/test.sh | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index 6422307d024d..6dd48bcbcb88 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -4,6 +4,8 @@ IMAGE_NAME=${IMAGE_NAME:-bitnami/tomcat} SLEEP_TIME=5 TOMCAT_USER=manager TOMCAT_PASSWORD=test_password +VOL_PREFIX=/bitnami/tomcat +HOST_VOL_PREFIX=${HOST_VOL_PREFIX:-/tmp/bitnami/$CONTAINER_NAME} cleanup_running_containers() { if [ "$(docker ps -a | grep $CONTAINER_NAME)" ]; then @@ -13,12 +15,21 @@ cleanup_running_containers() { setup() { cleanup_running_containers + mkdir -p $HOST_VOL_PREFIX } teardown() { cleanup_running_containers } +cleanup_volumes_content() { + docker run --rm\ + -v $HOST_VOL_PREFIX/app:/app\ + -v $HOST_VOL_PREFIX/conf:$VOL_PREFIX/conf\ + -v $HOST_VOL_PREFIX/logs:$VOL_PREFIX/logs\ + $IMAGE_NAME rm -rf /app/ $VOL_PREFIX/logs/ $VOL_PREFIX/conf/ +} + create_container(){ docker run --name $CONTAINER_NAME "$@" $IMAGE_NAME sleep $SLEEP_TIME @@ -30,6 +41,16 @@ create_full_container(){ sleep $SLEEP_TIME } +create_full_container_mounted(){ + docker run -d --name $CONTAINER_NAME\ + -e TOMCAT_PASSWORD=$TOMCAT_PASSWORD\ + -v $HOST_VOL_PREFIX/app:/app\ + -v $HOST_VOL_PREFIX/conf:$VOL_PREFIX/conf\ + -v $HOST_VOL_PREFIX/logs:$VOL_PREFIX/logs\ + $IMAGE_NAME + sleep $SLEEP_TIME +} + @test "Port 8080 exposed and accepting external connections" { create_container -d run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://tomcat:8080 @@ -75,3 +96,10 @@ create_full_container(){ [[ "$output" =~ "$VOL_PREFIX/conf" ]] [[ "$output" =~ "$VOL_PREFIX/logs" ]] } + +@test "Data gets generated in conf if bind mounted in the host" { + create_full_container_mounted + run docker run -v $HOST_VOL_PREFIX:$HOST_VOL_PREFIX --rm $IMAGE_NAME ls -l $HOST_VOL_PREFIX/conf/server.xml + [ $status = 0 ] + cleanup_volumes_content +} From a612a571403d9a25917b3b0931c46bd26ed374ac Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 22:27:15 +0530 Subject: [PATCH 8/9] tests: If host mounted, password and settings are preserved after deletion --- bitnami/tomcat/test.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index 6dd48bcbcb88..37010e8b7c32 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -103,3 +103,20 @@ create_full_container_mounted(){ [ $status = 0 ] cleanup_volumes_content } + +@test "If host mounted, password and settings are preserved after deletion" { + cleanup_volumes_content + create_full_container_mounted + + docker rm -fv $CONTAINER_NAME + + run docker run -d --name $CONTAINER_NAME\ + -v $HOST_VOL_PREFIX/app:/app\ + -v $HOST_VOL_PREFIX/conf:$VOL_PREFIX/conf\ + $IMAGE_NAME + sleep $SLEEP_TIME + + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://$TOMCAT_USER:$TOMCAT_PASSWORD@tomcat:8080/manager/html + [[ "$output" =~ '200 OK' ]] + cleanup_volumes_content +} From 53c8959480ccb3c9a507d883f99e99ac8172ac78 Mon Sep 17 00:00:00 2001 From: Sameer Naik Date: Thu, 13 Aug 2015 22:53:22 +0530 Subject: [PATCH 9/9] Deploy sample application --- bitnami/tomcat/test.sh | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/bitnami/tomcat/test.sh b/bitnami/tomcat/test.sh index 37010e8b7c32..1e25d68b0678 100755 --- a/bitnami/tomcat/test.sh +++ b/bitnami/tomcat/test.sh @@ -120,3 +120,20 @@ create_full_container_mounted(){ [[ "$output" =~ '200 OK' ]] cleanup_volumes_content } + +@test "Deploy sample application" { + cleanup_volumes_content + create_full_container_mounted + + run docker run --rm \ + --link $CONTAINER_NAME:tomcat \ + -v $HOST_VOL_PREFIX/app:/app \ + $IMAGE_NAME curl http://tomcat:8080/docs/appdev/sample/sample.war -o /app/sample.war + [ $status = 0 ] + sleep 10 + + run docker run --link $CONTAINER_NAME:tomcat --rm $IMAGE_NAME curl -L -i http://tomcat:8080/sample/hello.jsp + [[ "$output" =~ '200 OK' ]] + + cleanup_volumes_content +}