From dcaef2db7195f49d54beca77943847a2e4b61190 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20=C5=A0trauch?= Date: Sat, 4 Dec 2021 00:58:15 +0100 Subject: [PATCH] Dynamic testing --- Makefile | 2 +- tests2.fish | 22 -------------------- tests2.sh | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 60 insertions(+), 23 deletions(-) delete mode 100644 tests2.fish create mode 100644 tests2.sh diff --git a/Makefile b/Makefile index 7628314..1d6bff0 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ build: $(DOCKER) tag ${REPO}:dev ${REPO}:$(VERSION) test: - DOCKER=$(DOCKER) fish ./tests2.fish + DOCKER=$(DOCKER) bash ./tests2.fish ${REPO}:$(VERSION) squashed: $(DOCKER) pull debian:11 diff --git a/tests2.fish b/tests2.fish deleted file mode 100644 index 99c9161..0000000 --- a/tests2.fish +++ /dev/null @@ -1,22 +0,0 @@ -#!/usr/bin/fish - -if test -z "$DOCKER" - set DOCKER docker -end - -set CONTAINER_NAME dev_test - -for line in (cat Dockerfile | grep "RUN build_" | sed "s/RUN build_//" | sed "s/\.sh//" | sed "s/php8/php/") - set tech (string split " " $line)[1] - set tech_version (string split " " $line)[2] - - echo "Testing $tech $tech_version" - - $DOCKER run -d --rm --name $CONTAINER_NAME harbor.hq.rosti.cz/rosti/runtime:test > /dev/null; or exit 1 - - $DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=$tech-$tech_version $CONTAINER_NAME su app -c rosti > /dev/null; or exit 1 - sleep 3 - $DOCKER exec $CONTAINER_NAME curl --head http://localhost:8000 | grep "HTTP/1.1 200"; or exit 2 - - $DOCKER stop $CONTAINER_NAME; or exit 1 -end diff --git a/tests2.sh b/tests2.sh new file mode 100644 index 0000000..6d3cd4f --- /dev/null +++ b/tests2.sh @@ -0,0 +1,59 @@ +#!/bin/bash + +IMAGE=$1 +if [ -z "$1" ]; then + IMAGE=harbor.hq.rosti.cz/rosti/runtime:test +fi + +RCol='\e[0m' # Text Reset + +# Regular Bold Underline High Intensity BoldHigh Intens Background High Intensity Backgrounds +Bla='\e[0;30m'; BBla='\e[1;30m'; UBla='\e[4;30m'; IBla='\e[0;90m'; BIBla='\e[1;90m'; On_Bla='\e[40m'; On_IBla='\e[0;100m'; +Red='\e[0;31m'; BRed='\e[1;31m'; URed='\e[4;31m'; IRed='\e[0;91m'; BIRed='\e[1;91m'; On_Red='\e[41m'; On_IRed='\e[0;101m'; +Gre='\e[0;32m'; BGre='\e[1;32m'; UGre='\e[4;32m'; IGre='\e[0;92m'; BIGre='\e[1;92m'; On_Gre='\e[42m'; On_IGre='\e[0;102m'; +Yel='\e[0;33m'; BYel='\e[1;33m'; UYel='\e[4;33m'; IYel='\e[0;93m'; BIYel='\e[1;93m'; On_Yel='\e[43m'; On_IYel='\e[0;103m'; +Blu='\e[0;34m'; BBlu='\e[1;34m'; UBlu='\e[4;34m'; IBlu='\e[0;94m'; BIBlu='\e[1;94m'; On_Blu='\e[44m'; On_IBlu='\e[0;104m'; +Pur='\e[0;35m'; BPur='\e[1;35m'; UPur='\e[4;35m'; IPur='\e[0;95m'; BIPur='\e[1;95m'; On_Pur='\e[45m'; On_IPur='\e[0;105m'; +Cya='\e[0;36m'; BCya='\e[1;36m'; UCya='\e[4;36m'; ICya='\e[0;96m'; BICya='\e[1;96m'; On_Cya='\e[46m'; On_ICya='\e[0;106m'; +Whi='\e[0;37m'; BWhi='\e[1;37m'; UWhi='\e[4;37m'; IWhi='\e[0;97m'; BIWhi='\e[1;97m'; On_Whi='\e[47m'; On_IWhi='\e[0;107m'; + +if test -z "$DOCKER"; then + DOCKER=docker +fi + +CONTAINER_NAME=dev_test +$DOCKER stop $CONTAINER_NAME &>/dev/null + +COUNT=`cat Dockerfile | grep "RUN build_" | sed "s/RUN build_//" | sed "s/\.sh//" | sed "s/php8/php/" | wc -l` +I=1 + +cat Dockerfile | grep "RUN build_" | sed "s/RUN build_//" | sed "s/\.sh//" | sed "s/php8/php/" | \ +while read line +do + tech=`echo $line | cut -d " " -f 1` + tech_version=`echo $line | cut -d " " -f 2` + + echo -e "${BRed}:: ($I/$COUNT) ${Yel}Testing ${BWhi}$tech ${Gre}$tech_version${RCol}" + + set -e + + echo -e "${BRed}.. ${Yel}starting test container${RCol}" + $DOCKER run -d --rm --name $CONTAINER_NAME $IMAGE > /dev/null || exit 1 + echo -e "${BRed}.. ${Yel}ten seconds sleep${RCol}" + sleep 10 + + echo -e "${BRed}.. ${Yel}setting up the tech${RCol}" + $DOCKER exec -e TESTMODE=1 -e MENUITEM=tech -e TECH=$tech-$tech_version $CONTAINER_NAME su app -c rosti > /dev/null || exit 1 + echo -e "${BRed}.. ${Yel}three seconds sleep${RCol}" + sleep 3 + echo -e "${BRed}.. ${Yel}trying to get HTTP status code 200${RCol}" + $DOCKER exec $CONTAINER_NAME curl --head http://localhost:8000 | grep "HTTP/1.1 200" || exit 2 + + set +e + + echo -e "${BRed}.. ${Yel}cleaning this round${RCol}" + $DOCKER stop $CONTAINER_NAME &>/dev/null || exit 1 + + ((I++)) + +done