bunkerweb 1.4.0
This commit is contained in:
@@ -1,12 +0,0 @@
|
||||
FROM archlinux:base
|
||||
|
||||
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
||||
rm -f /etc/systemd/system/*.wants/*;\
|
||||
rm -f /lib/systemd/system/local-fs.target.wants/*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
||||
rm -f /lib/systemd/system/anaconda.target.wants/*;
|
||||
|
||||
RUN pacman -Syu --noconfirm
|
||||
@@ -1,5 +1,8 @@
|
||||
FROM centos:7
|
||||
FROM quay.io/centos/centos:stream8
|
||||
|
||||
RUN yum install -y initscripts # for old "service"
|
||||
|
||||
ENV container=docker
|
||||
|
||||
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
||||
@@ -9,3 +12,13 @@ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
||||
rm -f /lib/systemd/system/anaconda.target.wants/*;
|
||||
|
||||
COPY linux/nginx.repo /etc/yum.repos.d/nginx.repo
|
||||
#COPY linux/nginx.repo /etc/yum.repos.d/nginx.repo
|
||||
|
||||
RUN dnf install yum-utils epel-release -y && \
|
||||
dnf install nginx-1.20.2 -y
|
||||
|
||||
VOLUME /run /tmp
|
||||
|
||||
CMD /usr/sbin/init
|
||||
@@ -1,12 +1,36 @@
|
||||
FROM debian:bullseye-slim
|
||||
FROM debian:bullseye
|
||||
|
||||
RUN apt update && apt install -y systemd init
|
||||
ENV container docker
|
||||
ENV LC_ALL C
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV NGINX_VERSION 1.20.2
|
||||
|
||||
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
||||
rm -f /etc/systemd/system/*.wants/*;\
|
||||
rm -f /lib/systemd/system/local-fs.target.wants/*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
||||
rm -f /lib/systemd/system/anaconda.target.wants/*;
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y systemd systemd-sysv \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
RUN cd /lib/systemd/system/sysinit.target.wants/ \
|
||||
&& rm $(ls | grep -v systemd-tmpfiles-setup)
|
||||
|
||||
RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
|
||||
/etc/systemd/system/*.wants/* \
|
||||
/lib/systemd/system/local-fs.target.wants/* \
|
||||
/lib/systemd/system/sockets.target.wants/*udev* \
|
||||
/lib/systemd/system/sockets.target.wants/*initctl* \
|
||||
/lib/systemd/system/basic.target.wants/* \
|
||||
/lib/systemd/system/anaconda.target.wants/* \
|
||||
/lib/systemd/system/plymouth* \
|
||||
/lib/systemd/system/systemd-update-utmp*
|
||||
|
||||
RUN apt update && \
|
||||
apt-get install gnupg2 ca-certificates python3-pip -y && \
|
||||
echo "deb https://nginx.org/packages/debian/ bullseye nginx" > /etc/apt/sources.list.d/nginx.list && \
|
||||
echo "deb-src https://nginx.org/packages/debian/ bullseye nginx" >> /etc/apt/sources.list.d/nginx.list && \
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62 && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends nginx=${NGINX_VERSION}-1~bullseye
|
||||
|
||||
VOLUME [ "/sys/fs/cgroup" ]
|
||||
|
||||
CMD ["/lib/systemd/systemd"]
|
||||
|
||||
@@ -1,18 +1,27 @@
|
||||
FROM fedora:34
|
||||
FROM fedora:latest
|
||||
|
||||
RUN dnf install -y systemd findutils
|
||||
ENV container docker
|
||||
|
||||
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
||||
rm -f /etc/systemd/system/*.wants/*;\
|
||||
rm -f /lib/systemd/system/local-fs.target.wants/*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
||||
rm -f /lib/systemd/system/anaconda.target.wants/*;\
|
||||
rm -f /lib/systemd/system/*tmpfiles*;\
|
||||
rm -f /lib/systemd/user/*tmpfiles*;\
|
||||
find /lib/systemd/ -type f -iname "*.service" -exec rm -f {} \;;\
|
||||
find /etc/systemd/ -type f -iname "*.service" -exec rm -f {} \;;\
|
||||
find /lib/systemd/ -type f -iname "*.timer" -exec rm -f {} \;;\
|
||||
find /etc/systemd/ -type f -iname "*.timer" -exec rm -f {} \;
|
||||
RUN dnf -y update \
|
||||
&& dnf -y install systemd \
|
||||
&& dnf clean all
|
||||
|
||||
RUN cd /lib/systemd/system/sysinit.target.wants/; \
|
||||
for i in *; do [ $i = systemd-tmpfiles-setup.service ] || rm -f $i; done
|
||||
|
||||
RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
|
||||
/etc/systemd/system/*.wants/* \
|
||||
/lib/systemd/system/local-fs.target.wants/* \
|
||||
/lib/systemd/system/sockets.target.wants/*udev* \
|
||||
/lib/systemd/system/sockets.target.wants/*initctl* \
|
||||
/lib/systemd/system/basic.target.wants/* \
|
||||
/lib/systemd/system/anaconda.target.wants/*
|
||||
|
||||
# Nginx
|
||||
RUN dnf update -y && \
|
||||
dnf install -y curl gnupg2 ca-certificates redhat-lsb-core python3-pip && \
|
||||
dnf install nginx-1.20.2 -y
|
||||
|
||||
VOLUME [ "/sys/fs/cgroup" ]
|
||||
|
||||
CMD ["/usr/sbin/init"]
|
||||
@@ -1,12 +1,36 @@
|
||||
FROM ubuntu:focal
|
||||
FROM ubuntu:22.04
|
||||
|
||||
RUN apt update && apt install -y systemd init
|
||||
ENV container docker
|
||||
ENV LC_ALL C
|
||||
ENV DEBIAN_FRONTEND noninteractive
|
||||
ENV NGINX_VERSION 1.20.2
|
||||
|
||||
RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
|
||||
rm -f /lib/systemd/system/multi-user.target.wants/*;\
|
||||
rm -f /etc/systemd/system/*.wants/*;\
|
||||
rm -f /lib/systemd/system/local-fs.target.wants/*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
|
||||
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
|
||||
rm -f /lib/systemd/system/basic.target.wants/*;\
|
||||
rm -f /lib/systemd/system/anaconda.target.wants/*;
|
||||
RUN apt-get update \
|
||||
&& apt-get install -y systemd systemd-sysv \
|
||||
&& apt-get clean \
|
||||
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
||||
|
||||
RUN cd /lib/systemd/system/sysinit.target.wants/ \
|
||||
&& rm $(ls | grep -v systemd-tmpfiles-setup)
|
||||
|
||||
RUN rm -f /lib/systemd/system/multi-user.target.wants/* \
|
||||
/etc/systemd/system/*.wants/* \
|
||||
/lib/systemd/system/local-fs.target.wants/* \
|
||||
/lib/systemd/system/sockets.target.wants/*udev* \
|
||||
/lib/systemd/system/sockets.target.wants/*initctl* \
|
||||
/lib/systemd/system/basic.target.wants/* \
|
||||
/lib/systemd/system/anaconda.target.wants/* \
|
||||
/lib/systemd/system/plymouth* \
|
||||
/lib/systemd/system/systemd-update-utmp*
|
||||
|
||||
RUN apt update && \
|
||||
apt-get install curl gnupg2 ca-certificates lsb-release ubuntu-keyring software-properties-common python3-pip -y && \
|
||||
echo "deb https://nginx.org/packages/ubuntu/ jammy nginx" > /etc/apt/sources.list.d/nginx.list && \
|
||||
echo "deb-src https://nginx.org/packages/ubuntu/ jammy nginx" >> /etc/apt/sources.list.d/nginx.list && \
|
||||
apt-key adv --keyserver keyserver.ubuntu.com --recv-keys ABF5BD827BD9BF62 && \
|
||||
apt-get update && \
|
||||
apt-get install -y --no-install-recommends nginx=${NGINX_VERSION}-1~jammy
|
||||
|
||||
VOLUME [ "/sys/fs/cgroup" ]
|
||||
|
||||
CMD ["/lib/systemd/systemd"]
|
||||
54
tests/README
Normal file
54
tests/README
Normal file
@@ -0,0 +1,54 @@
|
||||
###############################################################
|
||||
# HOW TO USE UBUNTU #
|
||||
###############################################################
|
||||
|
||||
# 1. Build the Dockerfile for Ubuntu
|
||||
sudo docker build -t ubuntu -f Container/Ubuntu/Dockerfile .
|
||||
|
||||
# 2. Run it as daemon
|
||||
sudo docker run -d --name ubuntu --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -v "Deb_Folder":/data ubuntu
|
||||
|
||||
# 3. Execute
|
||||
sudo docker exec -it ubuntu bash
|
||||
#______________________________________________________________________________________________________________________#
|
||||
|
||||
###############################################################
|
||||
# HOW TO USE DEBIAN #
|
||||
###############################################################
|
||||
# 1. Build the Dockerfile for Debian
|
||||
sudo docker build -t debian -f Container/Debian/Dockerfile .
|
||||
|
||||
# 2. Run it as daemon
|
||||
sudo docker run -d --name debian --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -v "Deb_Folder":/data debian
|
||||
|
||||
# 3. Execute
|
||||
sudo docker exec -it debian bash
|
||||
#______________________________________________________________________________________________________________________#
|
||||
|
||||
###############################################################
|
||||
# HOW TO USE FEDORA #
|
||||
###############################################################
|
||||
|
||||
# Build the Dockerfile for Debian
|
||||
sudo docker build -t fedora -f Container/Fedora/Dockerfile .
|
||||
|
||||
# Run it as daemon
|
||||
sudo docker run -d --name fedora --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -v "Deb_Folder":/data fedora
|
||||
|
||||
# Execute
|
||||
sudo docker exec -it fedora bash
|
||||
#______________________________________________________________________________________________________________________#
|
||||
|
||||
###############################################################
|
||||
# HOW TO USE CENTOS #
|
||||
###############################################################
|
||||
|
||||
# Build the Dockerfile for Debian
|
||||
sudo docker build -t centos -f Container/Centos8/Dockerfile .
|
||||
|
||||
# Run it as daemon
|
||||
sudo docker run -d --name centos --privileged -v /sys/fs/cgroup:/sys/fs/cgroup -v "Deb_Folder":/data centos
|
||||
|
||||
# Execute
|
||||
sudo docker exec -it centos bash
|
||||
#______________________________________________________________________________________________________________________#
|
||||
111
tests/autoconf.sh
Executable file
111
tests/autoconf.sh
Executable file
@@ -0,0 +1,111 @@
|
||||
#!/bin/bash
|
||||
|
||||
. ./tests/utils/utils.sh
|
||||
|
||||
. /opt/.runner_env
|
||||
|
||||
function single_autoconf_test() {
|
||||
example="$1"
|
||||
wait_time="$2"
|
||||
shift
|
||||
shift
|
||||
asserts=("$@")
|
||||
echo "Testing $example ..."
|
||||
exec_docker_example "$example"
|
||||
if [ $? -ne 0 ] ; then
|
||||
cd /tmp/autoconf
|
||||
docker-compose logs
|
||||
docker-compose down -v > /dev/null 2>&1
|
||||
echo "$example failed (exec) ..."
|
||||
exit 1
|
||||
fi
|
||||
for assert in "${asserts[@]}" ; do
|
||||
url="$(echo "$assert" | cut -d ' ' -f 1)"
|
||||
str="$(echo "$assert" | cut -d ' ' -f 2)"
|
||||
if [ "$(echo "$example" | grep websocket)" = "" ] ; then
|
||||
curl_assert "$url" "$str" "$wait_time"
|
||||
else
|
||||
curl_assert "$url" "$str" "$wait_time" "ws"
|
||||
fi
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ] ; then
|
||||
current_dir="$(pwd)"
|
||||
cd /tmp/autoconf
|
||||
docker-compose logs
|
||||
docker-compose down -v > /dev/null 2>&1
|
||||
cd "/tmp/tests/$example"
|
||||
docker-compose logs
|
||||
cd "$current_dir"
|
||||
rm_example "$example"
|
||||
echo "$example failed (assert) ..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
rm_example "$example"
|
||||
echo "$example success !"
|
||||
}
|
||||
|
||||
# Setup data folder if not present
|
||||
if [ ! -d "/tmp/bw-data" ] ; then
|
||||
mkdir /tmp/bw-data
|
||||
sudo chown root:101 /tmp/bw-data
|
||||
sudo chmod 770 /tmp/bw-data
|
||||
fi
|
||||
for folder in $(echo "configs plugins www") ; do
|
||||
sudo rm -rf "/tmp/bw-data/${folder}" > /dev/null 2>&1
|
||||
done
|
||||
|
||||
echo "Running autoconf tests ..."
|
||||
|
||||
# Start autoconf
|
||||
if [ ! -d "/tmp/autoconf" ] ; then
|
||||
mkdir /tmp/autoconf
|
||||
fi
|
||||
rm -rf /tmp/autoconf/*
|
||||
cp -r ./integrations/autoconf/* /tmp/autoconf
|
||||
sed -i 's@bunkerity/bunkerweb:.*$@10.20.1.1:5000/bw-tests:latest@g' /tmp/autoconf/docker-compose.yml
|
||||
sed -i 's@bunkerity/bunkerweb-autoconf:.*$@10.20.1.1:5000/bw-autoconf-tests:latest@g' /tmp/autoconf/docker-compose.yml
|
||||
sed -i 's@\./bw\-data:/@/tmp/bw\-data:/@g' /tmp/autoconf/docker-compose.yml
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/autoconf"
|
||||
echo "starting autoconf ..."
|
||||
docker-compose down -v > /dev/null 2>&1
|
||||
docker-compose pull > /dev/null 2>&1
|
||||
ret="$(docker-compose up -d 2>&1)"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "$ret"
|
||||
echo "autoconf failed (up)"
|
||||
fi
|
||||
current_wait=0
|
||||
healthy="no"
|
||||
while [ $current_wait -lt 30 ] ; do
|
||||
check="$(docker inspect --format "{{json .State.Health }}" autoconf_mybunker_1 | grep healthy)"
|
||||
if [ "$check" != "" ] ; then
|
||||
healthy="yes"
|
||||
break
|
||||
fi
|
||||
current_wait=$((current_wait+1))
|
||||
sleep 1
|
||||
done
|
||||
if [ "$healthy" = "no" ] ; then
|
||||
echo "$ret"
|
||||
docker-compose logs
|
||||
docker-compose down -v > /dev/null 2>&1
|
||||
echo "autoconf failed (not healthy)"
|
||||
exit 1
|
||||
fi
|
||||
cd "$current_dir"
|
||||
|
||||
# reverse
|
||||
single_autoconf_test "autoconf-reverse-proxy" "60" "https://$TEST_DOMAIN1_1 hello" "https://$TEST_DOMAIN1_2 hello" "https://$TEST_DOMAIN1_3 hello"
|
||||
|
||||
# php
|
||||
single_autoconf_test "autoconf-php" "60" "https://$TEST_DOMAIN1_1 app1" "https://$TEST_DOMAIN1_2 app2" "https://$TEST_DOMAIN1_3 app3"
|
||||
|
||||
# cleanup
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/autoconf"
|
||||
docker-compose down -v > /dev/null 2>&1
|
||||
cd "$current_dir"
|
||||
|
||||
exit 0
|
||||
110
tests/docker.sh
Executable file
110
tests/docker.sh
Executable file
@@ -0,0 +1,110 @@
|
||||
#!/bin/bash
|
||||
|
||||
. ./tests/utils/utils.sh
|
||||
|
||||
. /opt/.runner_env
|
||||
|
||||
function single_docker_test() {
|
||||
example="$1"
|
||||
wait_time="$2"
|
||||
shift
|
||||
shift
|
||||
asserts=("$@")
|
||||
echo "Testing $example ..."
|
||||
exec_docker_example "$example"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "$example failed (exec) ..."
|
||||
exit 1
|
||||
fi
|
||||
for assert in "${asserts[@]}" ; do
|
||||
url="$(echo "$assert" | cut -d ' ' -f 1)"
|
||||
str="$(echo "$assert" | cut -d ' ' -f 2)"
|
||||
if [ "$(echo "$example" | grep websocket)" = "" ] ; then
|
||||
curl_assert "$url" "$str" "$wait_time"
|
||||
else
|
||||
curl_assert "$url" "$str" "$wait_time" "ws"
|
||||
fi
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ] ; then
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/tests/$example"
|
||||
docker-compose logs
|
||||
cd "$current_dir"
|
||||
rm_example "$example"
|
||||
echo "$example failed (assert) ..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
rm_example "$example"
|
||||
echo "$example success !"
|
||||
}
|
||||
|
||||
# Setup data folder if not present
|
||||
if [ ! -d "/tmp/bw-data" ] ; then
|
||||
mkdir /tmp/bw-data
|
||||
sudo chown 101:101 /tmp/bw-data
|
||||
sudo chmod 777 /tmp/bw-data
|
||||
fi
|
||||
|
||||
echo "Running Docker tests ..."
|
||||
|
||||
# drupal
|
||||
single_docker_test "drupal" "60" "https://$TEST_DOMAIN1 drupal"
|
||||
|
||||
# ghost
|
||||
single_docker_test "ghost" "30" "https://$TEST_DOMAIN1 ghost"
|
||||
|
||||
# gogs
|
||||
single_docker_test "gogs" "30" "https://$TEST_DOMAIN1 gogs"
|
||||
|
||||
# hardened
|
||||
single_docker_test "hardened" "30" "https://$TEST_DOMAIN1 hello"
|
||||
|
||||
# joomla
|
||||
single_docker_test "joomla" "60" "https://$TEST_DOMAIN1 joomla"
|
||||
|
||||
# load-balancer
|
||||
single_docker_test "load-balancer" "30" "https://$TEST_DOMAIN1 hello"
|
||||
|
||||
# magento
|
||||
single_docker_test "magento" "180" "https://$TEST_DOMAIN1 magento"
|
||||
|
||||
# moodle
|
||||
single_docker_test "moodle" "300" "https://$TEST_DOMAIN1 moodle"
|
||||
|
||||
# nextcloud
|
||||
single_docker_test "nextcloud" "120" "https://$TEST_DOMAIN1 nextcloud"
|
||||
|
||||
# passbolt
|
||||
single_docker_test "passbolt" "120" "https://$TEST_DOMAIN1 passbolt"
|
||||
|
||||
# php-multisite
|
||||
single_docker_test "php-multisite" "30" "https://$TEST_DOMAIN1_1 app1" "https://$TEST_DOMAIN1_2 app2"
|
||||
|
||||
# php-singlesite
|
||||
single_docker_test "php-singlesite" "30" "https://$TEST_DOMAIN1 hello"
|
||||
|
||||
# prestashop
|
||||
single_docker_test "prestashop" "120" "https://$TEST_DOMAIN1 prestashop"
|
||||
|
||||
# redmine
|
||||
single_docker_test "redmine" "60" "https://$TEST_DOMAIN1 redmine"
|
||||
|
||||
# reverse-proxy-multisite
|
||||
single_docker_test "reverse-proxy-multisite" "30" "https://$TEST_DOMAIN1_1 app1" "https://$TEST_DOMAIN1_2 hello"
|
||||
|
||||
# reverse-proxy-singlesite
|
||||
single_docker_test "reverse-proxy-singlesite" "30" "https://$TEST_DOMAIN1/app1/ app1" "https://$TEST_DOMAIN1/app2/ hello"
|
||||
|
||||
# reverse-proxy-websocket
|
||||
cp ./tests/utils/websocat_amd64-linux /tmp/
|
||||
chmod +x ./tests/utils/websocat_amd64-linux
|
||||
# todo
|
||||
|
||||
# tomcat
|
||||
single_docker_test "tomcat" "30" "https://$TEST_DOMAIN1 tomcat"
|
||||
|
||||
# wordpress
|
||||
single_docker_test "wordpress" "30" "https://$TEST_DOMAIN1 wordpress"
|
||||
|
||||
exit 0
|
||||
@@ -1 +0,0 @@
|
||||
ok
|
||||
147
tests/kubernetes.sh
Executable file
147
tests/kubernetes.sh
Executable file
@@ -0,0 +1,147 @@
|
||||
#!/bin/bash
|
||||
|
||||
. ./tests/utils/utils.sh
|
||||
|
||||
. /opt/.runner_env
|
||||
|
||||
function single_k8s_test() {
|
||||
example="$1"
|
||||
wait_time="$2"
|
||||
shift
|
||||
shift
|
||||
asserts=("$@")
|
||||
echo "Testing $example ..."
|
||||
exec_k8s_example "$example"
|
||||
if [ $? -ne 0 ] ; then
|
||||
for pod in $(sudo kubectl get pods | cut -d ' ' -f 1 | grep -v NAME) ; do
|
||||
sudo kubectl logs $pod
|
||||
done
|
||||
cd "/tmp/k8s"
|
||||
sudo kubectl delete -f bunkerweb.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f rbac.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f k8s.yml > /dev/null 2>&1
|
||||
echo "$example failed (exec) ..."
|
||||
exit 1
|
||||
fi
|
||||
for assert in "${asserts[@]}" ; do
|
||||
url="$(echo "$assert" | cut -d ' ' -f 1)"
|
||||
str="$(echo "$assert" | cut -d ' ' -f 2)"
|
||||
if [ "$(echo "$example" | grep websocket)" = "" ] ; then
|
||||
curl_assert "$url" "$str" "$wait_time"
|
||||
else
|
||||
curl_assert "$url" "$str" "$wait_time" "ws"
|
||||
fi
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ] ; then
|
||||
for pod in $(sudo kubectl get pods | cut -d ' ' -f 1 | grep -v NAME) ; do
|
||||
sudo kubectl logs $pod
|
||||
done
|
||||
cd "/tmp/k8s"
|
||||
sudo kubectl delete -f bunkerweb.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f rbac.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f k8s.yml > /dev/null 2>&1
|
||||
cd "/tmp/tests/$example"
|
||||
for yml in $(ls *.yml) ; do
|
||||
sudo kubectl delete -f "$yml"
|
||||
done
|
||||
echo "$example failed (curl) ..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/tests/$example"
|
||||
for yml in $(ls *.yml) ; do
|
||||
sudo kubectl delete -f "$yml"
|
||||
done
|
||||
cd "$current_dir"
|
||||
echo "$example success !"
|
||||
}
|
||||
|
||||
echo "Running k8s tests ..."
|
||||
|
||||
# Start k8s
|
||||
if [ ! -d "/tmp/k8s" ] ; then
|
||||
mkdir /tmp/k8s
|
||||
fi
|
||||
rm -rf /tmp/k8s/*
|
||||
cp -r ./integrations/kubernetes/* /tmp/k8s
|
||||
cp ./tests/utils/k8s.yml /tmp/k8s
|
||||
sed -i 's@bunkerity/bunkerweb:.*$@10.20.1.1:5000/bw-tests:latest@g' /tmp/k8s/bunkerweb.yml
|
||||
sed -i 's@bunkerity/bunkerweb-autoconf:.*$@10.20.1.1:5000/bw-autoconf-tests:latest@g' /tmp/k8s/bunkerweb.yml
|
||||
sed -i 's@ifNotPresent@Always@g' /tmp/k8s/bunkerweb.yml
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/k8s"
|
||||
|
||||
# delete old objects
|
||||
sudo kubectl delete -f bunkerweb.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f rbac.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f k8s.yml > /dev/null 2>&1
|
||||
current_wait=0
|
||||
while [ 1 ] ; do
|
||||
if [ $current_wait -gt 30 ] ; then
|
||||
echo "can't remove old k8s objects"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$(sudo kubectl get pods | grep "bunkerweb")" = "" ] ; then
|
||||
break
|
||||
fi
|
||||
current_wait=$((current_wait+1))
|
||||
sleep 1
|
||||
done
|
||||
|
||||
# start the controller and instances
|
||||
sudo kubectl apply -f k8s.yml
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "k8s failed (deploy k8s.yml)"
|
||||
exit 1
|
||||
fi
|
||||
sudo kubectl apply -f rbac.yml
|
||||
if [ $? -ne 0 ] ; then
|
||||
sudo kubectl delete -f k8s.yml
|
||||
echo "k8s failed (deploy rbac.yml)"
|
||||
exit 1
|
||||
fi
|
||||
sudo kubectl apply -f bunkerweb.yml
|
||||
if [ $? -ne 0 ] ; then
|
||||
sudo kubectl delete -f rbac.yml
|
||||
sudo kubectl delete -f k8s.yml
|
||||
echo "k8s failed (deploy bunkerweb.yml)"
|
||||
exit 1
|
||||
fi
|
||||
current_wait=0
|
||||
healthy="no"
|
||||
while [ $current_wait -lt 30 ] ; do
|
||||
check="$(sudo kubectl get pods | grep bunkerweb | grep -v Running)"
|
||||
if [ "$check" = "" ] ; then
|
||||
healthy="yes"
|
||||
break
|
||||
fi
|
||||
current_wait=$((current_wait+1))
|
||||
sleep 1
|
||||
done
|
||||
if [ "$healthy" = "no" ] ; then
|
||||
sudo kubectl get pods
|
||||
sudo kubectl delete -f bunkerweb.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f rbac.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f k8s.yml > /dev/null 2>&1
|
||||
echo "k8s failed (not healthy)"
|
||||
exit 1
|
||||
fi
|
||||
cd "$current_dir"
|
||||
sleep 60
|
||||
|
||||
# reverse
|
||||
single_k8s_test "kubernetes-ingress" "120" "https://$TEST_DOMAIN1 hello" "https://$TEST_DOMAIN2 hello" "https://$TEST_DOMAIN3 hello"
|
||||
|
||||
# configs
|
||||
single_k8s_test "kubernetes-configs" "120" "https://$TEST_DOMAIN1/app1 app1" "https://$TEST_DOMAIN2/app2 app2" "https://$TEST_DOMAIN3/app3 app3" "https://$TEST_DOMAIN1/hello hello" "https://$TEST_DOMAIN2/hello hello" "https://$TEST_DOMAIN3/hello hello"
|
||||
|
||||
# cleanup
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/k8s"
|
||||
sudo kubectl delete -f bunkerweb.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f rbac.yml > /dev/null 2>&1
|
||||
sudo kubectl delete -f k8s.yml > /dev/null 2>&1
|
||||
cd "$current_dir"
|
||||
|
||||
exit 0
|
||||
@@ -1,99 +0,0 @@
|
||||
#!/bin/bash
|
||||
|
||||
function cleanup() {
|
||||
docker kill "$1"
|
||||
sleep 30
|
||||
docker volume rm "linux-tmp"
|
||||
}
|
||||
|
||||
image="$1"
|
||||
name="$2"
|
||||
do_cleanup="yes"
|
||||
if [ "$3" == "no" ] ; then
|
||||
do_cleanup="no"
|
||||
fi
|
||||
|
||||
echo "[*] Create volume"
|
||||
docker volume create linux-tmp
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker volume failed"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Run $image"
|
||||
id="$(docker run --rm -d -p 80:80 -p 443:443 --privileged=true --name "$name" -v linux-tmp:/tmp "$image" /sbin/init)"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker run failed"
|
||||
cleanup "$name"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "[*] Copy install.sh"
|
||||
docker cp helpers/install.sh "$name:/tmp"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker cp failed"
|
||||
cleanup "$name"
|
||||
exit 2
|
||||
fi
|
||||
|
||||
echo "[*] Copy bunkerized-nginx"
|
||||
docker cp . "$name:/tmp/bunkerized-nginx-test"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker cp failed"
|
||||
cleanup "$name"
|
||||
exit 3
|
||||
fi
|
||||
|
||||
echo "[*] Exec install.sh"
|
||||
docker exec "$name" /bin/bash -c 'chmod +x /tmp/install.sh && /tmp/install.sh'
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker exec failed"
|
||||
cleanup "$name"
|
||||
exit 4
|
||||
fi
|
||||
|
||||
echo "[*] Exec nginx -V"
|
||||
docker exec "$name" nginx -V
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker exec failed"
|
||||
cleanup "$name"
|
||||
exit 5
|
||||
fi
|
||||
|
||||
echo "[*] Copy variables.env"
|
||||
docker cp "tests/variables.env" "$name:/opt/bunkerized-nginx"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker cp failed"
|
||||
cleanup "$name"
|
||||
exit 6
|
||||
fi
|
||||
|
||||
echo "[*] Copy index.html"
|
||||
docker cp "tests/index.html" "$name:/opt/bunkerized-nginx/www"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker cp failed"
|
||||
cleanup "$name"
|
||||
exit 7
|
||||
fi
|
||||
|
||||
echo "[*] Exec bunkerized-nginx"
|
||||
docker exec "$name" bunkerized-nginx
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "[!] docker exec failed"
|
||||
cleanup "$name"
|
||||
exit 8
|
||||
fi
|
||||
|
||||
echo "[*] Exec curl"
|
||||
res="$(curl -s -H "User-Agent: LegitOne" http://localhost/)"
|
||||
if [ $? -ne 0 ] || [ "$res" != "ok" ] ; then
|
||||
echo "[!] curl failed"
|
||||
cleanup "$name"
|
||||
exit 9
|
||||
fi
|
||||
|
||||
if [ "$do_cleanup" == "yes" ] ; then
|
||||
cleanup "$name"
|
||||
fi
|
||||
|
||||
exit 0
|
||||
43
tests/linux.sh
Executable file
43
tests/linux.sh
Executable file
@@ -0,0 +1,43 @@
|
||||
#!/bin/bash
|
||||
|
||||
. ./tests/utils/utils.sh
|
||||
|
||||
function gen_package() {
|
||||
mode="$1"
|
||||
linux="$2"
|
||||
version="$(cat VERSION | tr -d '\n')"
|
||||
if [ "$linux" = "fedora" ] || [ "$linux" = "centos" ] ; then
|
||||
type="rpm"
|
||||
else
|
||||
type="deb"
|
||||
fi
|
||||
if [ "$mode" = "dev" ] ; then
|
||||
do_and_check_cmd docker run --rm -v "/tmp/packages/${linux}:/data" "bw-${linux}-${mode}:latest"
|
||||
fi
|
||||
name="bunkerweb_${version}-1_amd64"
|
||||
if [ "$type" = "rpm" ] ; then
|
||||
name="bunkerweb-${version}-1.x86_64"
|
||||
fi
|
||||
do_and_check_cmd cp "/tmp/packages/${linux}/bunkerweb.$type" "/opt/packages/${mode}/${linux}/${name}.${type}"
|
||||
}
|
||||
|
||||
|
||||
echo "Linux tests"
|
||||
|
||||
if [ ! -d /opt/packages ] ; then
|
||||
do_and_check_cmd sudo mkdir -p /opt/packages/{dev,prod}/{ubuntu,debian,fedora,centos}
|
||||
do_and_check_cmd sudo chmod -R 777 /opt/packages/
|
||||
fi
|
||||
|
||||
if [ -d /tmp/packages ] ; then
|
||||
do_and_check_cmd sudo rm -rf /tmp/packages
|
||||
fi
|
||||
do_and_check_cmd mkdir /tmp/packages
|
||||
|
||||
# Generate packages
|
||||
gen_package "$1" "ubuntu"
|
||||
gen_package "$1" "debian"
|
||||
gen_package "$1" "centos"
|
||||
gen_package "$1" "fedora"
|
||||
|
||||
exit 0
|
||||
125
tests/swarm.sh
Executable file
125
tests/swarm.sh
Executable file
@@ -0,0 +1,125 @@
|
||||
#!/bin/bash
|
||||
|
||||
. ./tests/utils/utils.sh
|
||||
|
||||
. /opt/.runner_env
|
||||
|
||||
function single_swarm_test() {
|
||||
example="$1"
|
||||
wait_time="$2"
|
||||
shift
|
||||
shift
|
||||
asserts=("$@")
|
||||
echo "Testing $example ..."
|
||||
exec_swarm_example "$example"
|
||||
if [ $? -ne 0 ] ; then
|
||||
docker service logs bunkerweb_mybunker
|
||||
docker service logs bunkerweb_myautoconf
|
||||
docker stack rm bunkerweb > /dev/null 2>&1
|
||||
for config in $(docker config ls --format "{{ .ID }}") ; do
|
||||
docker config rm $config
|
||||
done
|
||||
echo "$example failed (exec) ..."
|
||||
exit 1
|
||||
fi
|
||||
for assert in "${asserts[@]}" ; do
|
||||
url="$(echo "$assert" | cut -d ' ' -f 1)"
|
||||
str="$(echo "$assert" | cut -d ' ' -f 2)"
|
||||
if [ "$(echo "$example" | grep websocket)" = "" ] ; then
|
||||
curl_assert "$url" "$str" "$wait_time"
|
||||
else
|
||||
curl_assert "$url" "$str" "$wait_time" "ws"
|
||||
fi
|
||||
ret=$?
|
||||
if [ $ret -ne 0 ] ; then
|
||||
docker service logs bunkerweb_mybunker
|
||||
docker service logs bunkerweb_myautoconf
|
||||
for service in $(docker stack services --format "{{ .Name }}" "$example") ; do
|
||||
docker service logs "$service"
|
||||
done
|
||||
docker config ls
|
||||
docker stack rm bunkerweb > /dev/null 2>&1
|
||||
docker stack rm "$example" > /dev/null 2>&1
|
||||
docker network rm services_net autoconf_net > /dev/null 2>&1
|
||||
for config in $(docker config ls --format "{{ .ID }}") ; do
|
||||
docker config rm $config
|
||||
done
|
||||
echo "$example failed (curl) ..."
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
docker stack rm "$example"
|
||||
for config in $(docker config ls --format "{{ .ID }}") ; do
|
||||
docker config rm $config
|
||||
done
|
||||
echo "$example success !"
|
||||
}
|
||||
|
||||
echo "Running swarm tests ..."
|
||||
|
||||
# Start swarm
|
||||
if [ ! -d "/tmp/swarm" ] ; then
|
||||
mkdir /tmp/swarm
|
||||
fi
|
||||
rm -rf /tmp/swarm/*
|
||||
cp -r ./integrations/swarm/* /tmp/swarm
|
||||
sed -i 's@bunkerity/bunkerweb:.*$@10.20.1.1:5000/bw-tests:latest@g' /tmp/swarm/stack.yml
|
||||
sed -i 's@bunkerity/bunkerweb-autoconf:.*$@10.20.1.1:5000/bw-autoconf-tests:latest@g' /tmp/swarm/stack.yml
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/swarm"
|
||||
echo "starting swarm stack ..."
|
||||
docker stack rm bunkerweb > /dev/null 2>&1
|
||||
current_wait=0
|
||||
while [ 1 ] ; do
|
||||
if [ $current_wait -gt 30 ] ; then
|
||||
echo "can't remove old swarm stack"
|
||||
exit 1
|
||||
fi
|
||||
if [ "$(docker stack ls | grep bunkerweb)" = "" ] ; then
|
||||
break
|
||||
fi
|
||||
current_wait=$((current_wait+1))
|
||||
sleep 1
|
||||
done
|
||||
docker network rm services_net autoconf_net > /dev/null 2>&1
|
||||
ret="$(docker stack deploy -c stack.yml bunkerweb 2>&1)"
|
||||
if [ $? -ne 0 ] ; then
|
||||
echo "$ret"
|
||||
echo "swarm failed (deploy)"
|
||||
exit 1
|
||||
fi
|
||||
current_wait=0
|
||||
healthy="no"
|
||||
while [ $current_wait -lt 30 ] ; do
|
||||
check="$(docker stack ps --no-trunc --format "{{ .CurrentState }}" bunkerweb | grep -v "Running" 2>&1)"
|
||||
if [ "$check" = "" ] ; then
|
||||
healthy="yes"
|
||||
break
|
||||
fi
|
||||
current_wait=$((current_wait+1))
|
||||
sleep 1
|
||||
done
|
||||
if [ "$healthy" = "no" ] ; then
|
||||
echo "$ret"
|
||||
docker service logs bunkerweb_mybunker
|
||||
docker service logs bunkerweb_myautoconf
|
||||
docker stack rm bunkerweb > /dev/null 2>&1
|
||||
echo "swarm failed (not healthy)"
|
||||
exit 1
|
||||
fi
|
||||
cd "$current_dir"
|
||||
sleep 60
|
||||
|
||||
# reverse
|
||||
single_swarm_test "swarm-reverse-proxy" "120" "https://$TEST_DOMAIN1 hello" "https://$TEST_DOMAIN2 hello" "https://$TEST_DOMAIN3 hello"
|
||||
|
||||
# configs
|
||||
single_swarm_test "swarm-configs" "120" "https://$TEST_DOMAIN1/app1 app1" "https://$TEST_DOMAIN2/app2 app2" "https://$TEST_DOMAIN3/app3 app3" "https://$TEST_DOMAIN1/hello hello" "https://$TEST_DOMAIN2/hello hello" "https://$TEST_DOMAIN3/hello hello"
|
||||
|
||||
# cleanup
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/swarm"
|
||||
docker stack rm bunkerweb > /dev/null 2>&1
|
||||
cd "$current_dir"
|
||||
|
||||
exit 0
|
||||
11
tests/utils/k8s.yml
Normal file
11
tests/utils/k8s.yml
Normal file
@@ -0,0 +1,11 @@
|
||||
apiVersion: v1
|
||||
kind: PersistentVolume
|
||||
metadata:
|
||||
name: pv-bunkerweb
|
||||
spec:
|
||||
capacity:
|
||||
storage: 5Gi
|
||||
accessModes:
|
||||
- ReadWriteOnce
|
||||
hostPath:
|
||||
path: "/tmp/bw-data"
|
||||
200
tests/utils/utils.sh
Normal file
200
tests/utils/utils.sh
Normal file
@@ -0,0 +1,200 @@
|
||||
#!/bin/bash
|
||||
|
||||
function exec_docker_example() {
|
||||
if [ -d "/tmp/tests/$1" ] ; then
|
||||
sudo rm -rf "/tmp/tests/$1"
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if [ ! -d "/tmp/tests" ] ; then
|
||||
mkdir /tmp/tests
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
cp -r "examples/$1" "/tmp/tests"
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/tests/$1"
|
||||
sed -i 's@bunkerity/bunkerweb:.*$@10.20.1.1:5000/bw-tests:latest@g' docker-compose.yml
|
||||
sed -i 's@\./bw\-data:/@/tmp/bw\-data:/@g' docker-compose.yml
|
||||
sed -i 's@- bw_data:/@- /tmp/bw\-data:/@g' docker-compose.yml
|
||||
sed -i "s@www.example.com@${TEST_DOMAIN1}@g" docker-compose.yml
|
||||
sed -i "s@app1.example.com@${TEST_DOMAIN1_1}@g" docker-compose.yml
|
||||
sed -i "s@app2.example.com@${TEST_DOMAIN1_2}@g" docker-compose.yml
|
||||
sed -i "s@app3.example.com@${TEST_DOMAIN1_3}@g" docker-compose.yml
|
||||
find "/tmp/tests/$1" -name "www.example.com" -exec /usr/bin/rename "s/www.example.com/${TEST_DOMAIN1}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app1.example.com" -exec /usr/bin/rename "s/app1.example.com/${TEST_DOMAIN1_1}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app2.example.com" -exec /usr/bin/rename "s/app2.example.com/${TEST_DOMAIN1_2}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app3.example.com" -exec /usr/bin/rename "s/app3.example.com/${TEST_DOMAIN1_3}/" {} \+
|
||||
if [ -f setup.sh ] ; then
|
||||
sudo ./setup.sh
|
||||
fi
|
||||
for folder in $(echo "configs plugins www") ; do
|
||||
sudo bash -c "find /tmp/bw-data/$folder -type f -exec rm -f {} \;"
|
||||
done
|
||||
if [ -d ./bw-data ] ; then
|
||||
sudo bash -c "cp -a ./bw-data/* /tmp/bw-data"
|
||||
fi
|
||||
docker-compose pull > /dev/null 2>&1
|
||||
ret=$(docker-compose up -d 2>&1)
|
||||
if [ "$?" -ne 0 ] ; then
|
||||
sudo docker-compose down -v > /dev/null 2>&1
|
||||
cd "$current_dir"
|
||||
sudo rm -rf "/tmp/tests/$1"
|
||||
echo "$ret"
|
||||
return 1
|
||||
fi
|
||||
cd "$current_dir"
|
||||
}
|
||||
|
||||
function exec_swarm_example() {
|
||||
if [ -d "/tmp/tests/$1" ] ; then
|
||||
sudo rm -rf "/tmp/tests/$1"
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if [ ! -d "/tmp/tests" ] ; then
|
||||
mkdir /tmp/tests
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
cp -r "examples/$1" "/tmp/tests"
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/tests/$1"
|
||||
sed -i "s@www.example.com@${TEST_DOMAIN1}@g" stack.yml
|
||||
sed -i "s@app1.example.com@${TEST_DOMAIN1}@g" stack.yml
|
||||
sed -i "s@app2.example.com@${TEST_DOMAIN2}@g" stack.yml
|
||||
sed -i "s@app3.example.com@${TEST_DOMAIN3}@g" stack.yml
|
||||
sed -i "s@www.example.com@${TEST_DOMAIN1}@g" setup.sh
|
||||
sed -i "s@app1.example.com@${TEST_DOMAIN1}@g" setup.sh
|
||||
sed -i "s@app2.example.com@${TEST_DOMAIN2}@g" setup.sh
|
||||
sed -i "s@app3.example.com@${TEST_DOMAIN3}@g" setup.sh
|
||||
find "/tmp/tests/$1" -name "www.example.com" -exec /usr/bin/rename "s/www.example.com/${TEST_DOMAIN1}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app1.example.com" -exec /usr/bin/rename "s/app1.example.com/${TEST_DOMAIN1}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app2.example.com" -exec /usr/bin/rename "s/app2.example.com/${TEST_DOMAIN2}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app3.example.com" -exec /usr/bin/rename "s/app3.example.com/${TEST_DOMAIN3}/" {} \+
|
||||
if [ -f setup.sh ] ; then
|
||||
sudo ./setup.sh
|
||||
fi
|
||||
docker stack rm "$1" > /dev/null 2>&1
|
||||
docker stack deploy -c stack.yml "$1"
|
||||
if [ "$?" -ne 0 ] ; then
|
||||
cd "$current_dir"
|
||||
sudo rm -rf "/tmp/tests/$1"
|
||||
return 1
|
||||
fi
|
||||
cd "$current_dir"
|
||||
}
|
||||
|
||||
function exec_k8s_example() {
|
||||
if [ -d "/tmp/tests/$1" ] ; then
|
||||
sudo rm -rf "/tmp/tests/$1"
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
if [ ! -d "/tmp/tests" ] ; then
|
||||
mkdir /tmp/tests
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
cp -r "examples/$1" "/tmp/tests"
|
||||
if [ $? -ne 0 ] ; then
|
||||
return 1
|
||||
fi
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/tests/$1"
|
||||
sed -i "s@www.example.com@${TEST_DOMAIN1}@g" *.yml
|
||||
sed -i "s@app1.example.com@${TEST_DOMAIN1}@g" *.yml
|
||||
sed -i "s@app2.example.com@${TEST_DOMAIN2}@g" *.yml
|
||||
sed -i "s@app3.example.com@${TEST_DOMAIN3}@g" *.yml
|
||||
find "/tmp/tests/$1" -name "www.example.com" -exec /usr/bin/rename "s/www.example.com/${TEST_DOMAIN1}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app1.example.com" -exec /usr/bin/rename "s/app1.example.com/${TEST_DOMAIN1}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app2.example.com" -exec /usr/bin/rename "s/app2.example.com/${TEST_DOMAIN2}/" {} \+
|
||||
find "/tmp/tests/$1" -name "app3.example.com" -exec /usr/bin/rename "s/app3.example.com/${TEST_DOMAIN3}/" {} \+
|
||||
if [ -f setup.sh ] ; then
|
||||
sudo ./setup.sh
|
||||
fi
|
||||
for yml in $(ls *.yml) ; do
|
||||
if [ "$yml" != "ingress.yml" ] ; then
|
||||
sudo kubectl delete -f "$yml" > /dev/null 2> /dev/null
|
||||
sudo kubectl apply -f "$yml"
|
||||
if [ $? -ne 0 ] ; then
|
||||
cd "$current_dir"
|
||||
sudo kubectl delete -f "/tmp/tests/$1" > /dev/null 2>&1
|
||||
rm -rf "/tmp/tests/$1"
|
||||
return 1
|
||||
fi
|
||||
fi
|
||||
done
|
||||
sudo kubectl delete -f "ingress.yml" > /dev/null 2> /dev/null
|
||||
sudo kubectl apply -f "ingress.yml"
|
||||
if [ "$?" -ne 0 ] ; then
|
||||
cd "$current_dir"
|
||||
sudo kubectl delete -f "/tmp/tests/$1" > /dev/null 2>&1
|
||||
rm -rf "/tmp/tests/$1"
|
||||
return 1
|
||||
fi
|
||||
cd "$current_dir"
|
||||
}
|
||||
|
||||
function curl_assert() {
|
||||
url="$1"
|
||||
str="$2"
|
||||
max_wait=$3
|
||||
ws="$4"
|
||||
if [ "$ws" != "" ] ; then
|
||||
cp ./tests/utils/websocat_amd64-linux /tmp/
|
||||
chmod +x /tmp/websocat_amd64-linux
|
||||
fi
|
||||
current_wait=0
|
||||
while [ $current_wait -le $max_wait ] ; do
|
||||
if [ "$ws" = "" ] ; then
|
||||
data="$(curl -k -L -s --cookie /dev/null -H "User-Agent: LegitOne" "$url" | grep -i "$str")"
|
||||
else
|
||||
data="$(echo "test" | /tmp/websocat_amd64-linux - --text wss://test1.bunkerity.com/ws/ | grep -i "$str")"
|
||||
fi
|
||||
if [ "$data" != "" ] && [ $? -eq 0 ] ; then
|
||||
return 0
|
||||
fi
|
||||
current_wait=$((current_wait+1))
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
function rm_example() {
|
||||
if [ ! -d "/tmp/tests/$1" ] ; then
|
||||
return 1
|
||||
fi
|
||||
current_dir="$(pwd)"
|
||||
cd "/tmp/tests/$1"
|
||||
sudo docker-compose down -v > /dev/null 2>&1
|
||||
cd "$current_dir"
|
||||
sudo rm -rf "/tmp/tests/$1"
|
||||
}
|
||||
|
||||
function do_and_check_cmd() {
|
||||
if [ "$CHANGE_DIR" != "" ] ; then
|
||||
cd "$CHANGE_DIR"
|
||||
fi
|
||||
output=$("$@" 2>&1)
|
||||
ret="$?"
|
||||
if [ $ret -ne 0 ] ; then
|
||||
echo "❌ Error from command : $*"
|
||||
echo "$output"
|
||||
exit $ret
|
||||
fi
|
||||
#echo $output
|
||||
return 0
|
||||
}
|
||||
BIN
tests/utils/websocat_amd64-linux
Executable file
BIN
tests/utils/websocat_amd64-linux
Executable file
Binary file not shown.
@@ -1,3 +0,0 @@
|
||||
HTTP_PORT=80
|
||||
HTTPS_PORT=443
|
||||
SERVER_NAME=www.test.com
|
||||
Reference in New Issue
Block a user