From b98b701c41b10667083ca7971ac52a8e8115bdfd Mon Sep 17 00:00:00 2001 From: mlabuda Date: Mon, 2 Jan 2017 16:08:02 +0100 Subject: [PATCH] Fixed launcher bats tests and minor refactoring of launcher scripts Signed-off-by: mlabuda --- dockerfiles/launcher/launcher.sh | 4 +- dockerfiles/launcher/launcher_funcs.sh | 18 +++-- ...er_test.bats => launcher_funcs_tests.bats} | 65 ++++++++++--------- 3 files changed, 48 insertions(+), 39 deletions(-) rename dockerfiles/launcher/{launcher_test.bats => launcher_funcs_tests.bats} (71%) diff --git a/dockerfiles/launcher/launcher.sh b/dockerfiles/launcher/launcher.sh index f47fed01d2..dce1c963dc 100755 --- a/dockerfiles/launcher/launcher.sh +++ b/dockerfiles/launcher/launcher.sh @@ -40,8 +40,8 @@ init_global_variables() { # Used to self-determine container version LAUNCHER_CONTAINER_ID=$(get_che_launcher_container_id) - LAUNCHER_IMAGE_NAME=$(docker inspect --format='{{.Config.Image}}' "${LAUNCHER_CONTAINER_ID}") - LAUNCHER_IMAGE_VERSION=$(echo "${LAUNCHER_IMAGE_NAME}" | cut -d : -f2 -s) + LAUNCHER_IMAGE_NAME=$(get_che_container_image_name ${LAUNCHER_CONTAINER_ID}) + LAUNCHER_IMAGE_VERSION=$(get_che_image_version ${LAUNCHER_IMAGE_NAME}) # Possible Docker install types are: # native, boot2docker or moby diff --git a/dockerfiles/launcher/launcher_funcs.sh b/dockerfiles/launcher/launcher_funcs.sh index b8ed1a9a76..af7a6fe9ae 100644 --- a/dockerfiles/launcher/launcher_funcs.sh +++ b/dockerfiles/launcher/launcher_funcs.sh @@ -64,11 +64,7 @@ get_che_launcher_container_id() { } get_che_launcher_version() { - if [ -n "${LAUNCHER_IMAGE_VERSION}" ]; then - echo "${LAUNCHER_IMAGE_VERSION}" - else - echo "latest" - fi + get_che_image_version ${LAUNCHER_IMAGE_VERSION} } is_boot2docker() { @@ -289,7 +285,7 @@ get_docker_host_os() { } get_docker_daemon_version() { - docker version | grep -i "server version:" | sed "s/^server version: //I" + docker version --format '{{.Server.Version}}' | grep "1\.[0-9]*\.[0-9]*" } get_che_hostname() { @@ -396,7 +392,6 @@ get_che_container_host_ip_from_container() { get_che_container_host_bind_folder() { BINDS=$(docker inspect --format="{{.HostConfig.Binds}}" "${2}" | cut -d '[' -f 2 | cut -d ']' -f 1) - IFS=$' ' for SINGLE_BIND in $BINDS; do case $SINGLE_BIND in @@ -423,6 +418,15 @@ get_che_container_image_name() { docker inspect --format="{{.Config.Image}}" "${1}" } +get_che_image_version() { + image_version=$(echo ${1} | cut -d : -f2 -s) + if [ -n "${image_version}" ]; then + echo "${image_version}" + else + echo "latest" + fi +} + get_che_server_container_id() { docker inspect -f '{{.Id}}' ${1} } diff --git a/dockerfiles/launcher/launcher_test.bats b/dockerfiles/launcher/launcher_funcs_tests.bats similarity index 71% rename from dockerfiles/launcher/launcher_test.bats rename to dockerfiles/launcher/launcher_funcs_tests.bats index fb8840df07..d1d2a92c84 100644 --- a/dockerfiles/launcher/launcher_test.bats +++ b/dockerfiles/launcher/launcher_funcs_tests.bats @@ -8,6 +8,7 @@ # Contributors: # Mario Loriedo - Initial implementation # Tyler Jewell - Improvements +# Marian Labuda - Improvements # # To run the tests: # docker run -w /tests/ -v $PWD:/tests dduportal/bats:0.4.0 /tests/launcher_test.bats @@ -15,6 +16,15 @@ source ./launcher_funcs.sh +#source ./launcher.sh + +# Set up clean environment +setup() { + if [ "$(docker ps -qa -f status=exited | wc -l)" -gt 0 ]; then + docker rm $(docker ps -qa -f status=exited) + fi +} + @test "clean folder path that is already clean" { result="$(get_clean_path /somefolder)" [ "$result" = "/somefolder" ] @@ -62,11 +72,11 @@ source ./launcher_funcs.sh # Given export CHE_SERVER_CONTAINER_NAME="che-test-get-container-conf-folder" CONF_FOLDER=$(pwd)/che-test-conf - mkdir ${CONF_FOLDER} - docker run --name ${CHE_SERVER_CONTAINER_NAME} -v ${CONF_FOLDER}:/conf alpine:3.4 true + mkdir ${CONF_FOLDER} -p + docker run --name ${CHE_SERVER_CONTAINER_NAME} -v ${CONF_FOLDER}:/conf:Z alpine:3.4 true # When - result="$(get_che_container_conf_folder)" + result=$(get_che_container_conf_folder $CHE_SERVER_CONTAINER_NAME) docker rm -f ${CHE_SERVER_CONTAINER_NAME} rmdir ${CONF_FOLDER} @@ -80,7 +90,7 @@ source ./launcher_funcs.sh docker run --name ${CHE_SERVER_CONTAINER_NAME} alpine:3.4 true # When - result="$(get_che_container_conf_folder)" + result=$(get_che_container_conf_folder $CHE_SERVER_CONTAINER_NAME) docker rm -f ${CHE_SERVER_CONTAINER_NAME} # Then @@ -91,11 +101,11 @@ source ./launcher_funcs.sh # Given export CHE_SERVER_CONTAINER_NAME="che-test-get-container-data-folder" DATA_FOLDER=$(pwd)/che-test-data - mkdir ${DATA_FOLDER} - docker run --name ${CHE_SERVER_CONTAINER_NAME} -v ${DATA_FOLDER}:/home/user/che/workspaces/ alpine:3.4 true + mkdir ${DATA_FOLDER} -p + docker run --name ${CHE_SERVER_CONTAINER_NAME} -v ${DATA_FOLDER}:/home/user/che/workspaces:Z alpine:3.4 true # When - result="$(get_che_container_data_folder)" + result=$(get_che_container_data_folder $CHE_SERVER_CONTAINER_NAME) docker rm -f ${CHE_SERVER_CONTAINER_NAME} rmdir ${DATA_FOLDER} @@ -109,7 +119,7 @@ source ./launcher_funcs.sh docker run --name ${CHE_SERVER_CONTAINER_NAME} alpine:3.4 true # When - result="$(get_che_container_image_name)" + result=$(get_che_container_image_name $CHE_SERVER_CONTAINER_NAME) docker rm -f ${CHE_SERVER_CONTAINER_NAME} # Then @@ -120,65 +130,60 @@ source ./launcher_funcs.sh # Given export CHE_SERVER_CONTAINER_NAME="che-test-get-container-id" long_id=$(docker run -d --name ${CHE_SERVER_CONTAINER_NAME} alpine:3.4 true) - short_id=${long_id:0:12} # When - result="$(get_che_server_container_id)" + result=$(get_che_server_container_id ${CHE_SERVER_CONTAINER_NAME}) docker rm -f ${CHE_SERVER_CONTAINER_NAME} # Then - [ "$result" = "$short_id" ] + [ "$result" = "$long_id" ] } @test "get docker daemon version" { # When - result="$(get_docker_daemon_version)" + result=$(get_docker_daemon_version) # Then [ "$result" ] } +# could be added check on host OS @test "get docker host os" { # When - result="$(get_docker_host_os)" + result=$(get_docker_host_os) # Then [ "$result" ] } -@test "get che get che launcher version with nightly" { +# get_che_launcher_container_id should be called in container +@test "get che launcher version with nightly" { # Given - export CHE_SERVER_CONTAINER_NAME="che-test-get-che-launcher-version" - long_id=$(docker run -d --name ${CHE_SERVER_CONTAINER_NAME} --entrypoint=true eclipse/che-launcher:nightly) - - get_che_launcher_container_id() { - echo ${long_id:0:12} - } + export CHE_LAUNCHER_CONTAINER_NAME="che-test-get-che-launcher-version" + long_id=$(docker run -d --name ${CHE_LAUNCHER_CONTAINER_NAME} --entrypoint=true eclipse/che-launcher:nightly) + image_name=$(get_che_container_image_name ${long_id}) # When - result="$(get_che_launcher_version)" - docker rm $CHE_SERVER_CONTAINER_NAME + wait_until_container_is_stopped 5 ${long_id} + result=$(get_che_image_version ${image_name}) + docker rm $CHE_LAUNCHER_CONTAINER_NAME # Then [ "$result" = "nightly" ] } +#get_che_launcher_container_id should run in container @test "get che get che launcher version with no specific version" { # Given export CHE_SERVER_CONTAINER_NAME="che-test-get-che-launcher-version" long_id=$(docker run -d --name ${CHE_SERVER_CONTAINER_NAME} --entrypoint=true eclipse/che-launcher) - - get_che_launcher_container_id() { - echo ${long_id:0:12} - } + image_name=$(get_che_container_image_name ${long_id}) # When - result="$(get_che_launcher_version)" + wait_until_container_is_stopped 5 ${long_id} + result=$(get_che_image_version ${image_name}) docker rm $CHE_SERVER_CONTAINER_NAME - echo "expected: latest" - echo "actual: $result" - # Then [ "$result" = "latest" ] }