aboutsummaryrefslogtreecommitdiffstats
path: root/coin/provisioning/common/shared/testserver
diff options
context:
space:
mode:
Diffstat (limited to 'coin/provisioning/common/shared/testserver')
-rw-r--r--coin/provisioning/common/shared/testserver/.gitattributes1
-rw-r--r--coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/californium/Dockerfile15
-rw-r--r--coin/provisioning/common/shared/testserver/cyrus/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile4
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_images.sh68
-rwxr-xr-xcoin/provisioning/common/shared/testserver/docker_machine.sh7
-rwxr-xr-x[-rw-r--r--]coin/provisioning/common/shared/testserver/docker_testserver.sh (renamed from coin/provisioning/common/shared/testserver/testserver_util.sh)30
-rw-r--r--coin/provisioning/common/shared/testserver/echo/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/freecoap/Dockerfile20
-rw-r--r--coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/iptables/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/settings.sh5
-rw-r--r--coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile4
-rw-r--r--coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile4
18 files changed, 179 insertions, 11 deletions
diff --git a/coin/provisioning/common/shared/testserver/.gitattributes b/coin/provisioning/common/shared/testserver/.gitattributes
new file mode 100644
index 00000000..fcadb2cf
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/.gitattributes
@@ -0,0 +1 @@
+* text eol=lf
diff --git a/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile
new file mode 100644
index 00000000..dff9fe43
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/apache2_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="apache2 libcgi-session-perl avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 80 443
diff --git a/coin/provisioning/common/shared/testserver/californium/Dockerfile b/coin/provisioning/common/shared/testserver/californium/Dockerfile
new file mode 100644
index 00000000..90722510
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/californium/Dockerfile
@@ -0,0 +1,15 @@
+FROM ubuntu:18.04
+
+RUN apt-get update && apt-get -y install git maven default-jdk avahi-daemon
+
+RUN mkdir -p /root/src/
+
+# Get californium-based CoAP test server
+WORKDIR /root/src
+RUN git clone https://github.com/selart/californium.git
+WORKDIR /root/src/californium
+RUN mvn clean install -q -DskipTests
+
+WORKDIR /
+
+EXPOSE 5683/udp 5684/udp
diff --git a/coin/provisioning/common/shared/testserver/cyrus/Dockerfile b/coin/provisioning/common/shared/testserver/cyrus/Dockerfile
new file mode 100644
index 00000000..55486175
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/cyrus/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:16.04
+ARG packages="cyrus-imapd avahi-daemon"
+RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages && dpkg -l $packages
+EXPOSE 143 993
diff --git a/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile
new file mode 100644
index 00000000..2e525ec6
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/cyrus_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="cyrus-imapd avahi-daemon"
+RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y $packages && dpkg -l $packages
+EXPOSE 143 993
diff --git a/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile
new file mode 100644
index 00000000..f48794af
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/danted_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="dante-server avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 1080-1081
diff --git a/coin/provisioning/common/shared/testserver/docker_images.sh b/coin/provisioning/common/shared/testserver/docker_images.sh
new file mode 100755
index 00000000..e98183d8
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/docker_images.sh
@@ -0,0 +1,68 @@
+#!/usr/bin/env bash
+
+#############################################################################
+##
+## Copyright (C) 2019 The Qt Company Ltd.
+## Contact: http://www.qt.io/licensing/
+##
+## This file is part of the provisioning scripts of the Qt Toolkit.
+##
+## $QT_BEGIN_LICENSE:LGPL21$
+## Commercial License Usage
+## Licensees holding valid commercial Qt licenses may use this file in
+## accordance with the commercial license agreement provided with the
+## Software or, alternatively, in accordance with the terms contained in
+## a written agreement between you and The Qt Company. For licensing terms
+## and conditions see http://www.qt.io/terms-conditions. For further
+## information use the contact form at http://www.qt.io/contact-us.
+##
+## GNU Lesser General Public License Usage
+## Alternatively, this file may be used under the terms of the GNU Lesser
+## General Public License version 2.1 or version 3 as published by the Free
+## Software Foundation and appearing in the file LICENSE.LGPLv21 and
+## LICENSE.LGPLv3 included in the packaging of this file. Please review the
+## following information to ensure the GNU Lesser General Public License
+## requirements will be met: https://www.gnu.org/licenses/lgpl.html and
+## http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+##
+## As a special exception, The Qt Company gives you certain additional
+## rights. These rights are described in The Qt Company LGPL Exception
+## version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+##
+## $QT_END_LICENSE$
+##
+#############################################################################
+
+set -ex
+
+[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]}
+case $FILE in
+ */*) SERVER_PATH="${FILE%/*}" ;;
+ *) SERVER_PATH="." ;;
+esac
+
+# Sort files by their SHA-1, and then return the accumulated result
+sha1tree () {
+ # For example, macOS doesn't install sha1sum by default. In such case, it uses shasum instead.
+ [ -x "$(command -v sha1sum)" ] || SHASUM=shasum
+
+ find "$@" -type f -print0 | \
+ xargs -0 ${SHASUM-sha1sum} | cut -d ' ' -f 1 | \
+ sort | ${SHASUM-sha1sum} | cut -d ' ' -f 1
+}
+
+# Using SHA-1 of each server context as the tag of docker images. A tag labels a
+# specific image version. It is used by docker compose file (docker-compose.yml)
+# to launch the corresponding docker containers. If one of the server contexts
+# (./apache2, ./danted, ...) gets changes, all the related compose files in
+# qtbase should be updated as well.
+
+source "$SERVER_PATH/settings.sh"
+
+for server in $testserver
+do
+ context="$SERVER_PATH/$server"
+ docker build -t qt-test-server-$server:$(sha1tree $context) $context
+done
+
+docker images
diff --git a/coin/provisioning/common/shared/testserver/docker_machine.sh b/coin/provisioning/common/shared/testserver/docker_machine.sh
index 601056a4..8d791074 100755
--- a/coin/provisioning/common/shared/testserver/docker_machine.sh
+++ b/coin/provisioning/common/shared/testserver/docker_machine.sh
@@ -2,7 +2,7 @@
#############################################################################
##
-## Copyright (C) 2018 The Qt Company Ltd.
+## Copyright (C) 2019 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -40,8 +40,11 @@ TestMachine='qt-test-server'
# Deploy docker virtual machine (Boot2Docker) into VirtualBox only if it doesn't exist
if [ -z $(docker-machine ls -q --filter "name=$TestMachine") ]
then
- docker-machine create -d virtualbox $TestMachine
+ docker-machine create $@ $TestMachine
docker-machine ip $TestMachine
+else
+ # Otherwise, start the docker machine and update with new TLS certificates.
+ docker-machine start $TestMachine && docker-machine regenerate-certs -f $TestMachine
fi
# Switch the docker engine to $TestMachine
diff --git a/coin/provisioning/common/shared/testserver/testserver_util.sh b/coin/provisioning/common/shared/testserver/docker_testserver.sh
index c42fb5e0..3a7c87e8 100644..100755
--- a/coin/provisioning/common/shared/testserver/testserver_util.sh
+++ b/coin/provisioning/common/shared/testserver/docker_testserver.sh
@@ -1,6 +1,8 @@
+#!/usr/bin/env bash
+
#############################################################################
##
-## Copyright (C) 2018 The Qt Company Ltd.
+## Copyright (C) 2019 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -33,9 +35,23 @@
set -ex
-# Sort files by their SHA-1, and then return the accumulated result
-sha1tree () {
- find "$@" -type f -print0 | \
- xargs -0 shasum | cut -d ' ' -f 1 | \
- sort | shasum | cut -d ' ' -f 1
-}
+[ -x "$(command -v realpath)" ] && FILE=$(realpath ${BASH_SOURCE[0]}) || FILE=${BASH_SOURCE[0]}
+case $FILE in
+ */*) SERVER_PATH="${FILE%/*}" ;;
+ *) SERVER_PATH="." ;;
+esac
+
+# Create docker virtual machine (Boot2docker)
+case $1 in
+ VMX) source "$SERVER_PATH/docker_machine.sh" "-d virtualbox" ;;
+ Hyper-V)
+ # The Hyper-v has been enabled in Windows 10. Disable checking the hardware virtualization.
+ source "$SERVER_PATH/docker_machine.sh" "-d virtualbox --virtualbox-no-vtx-check" ;;
+ *) ;;
+esac
+
+# Display system-wide information of docker-engine
+docker info
+
+# Create images
+$SERVER_PATH/docker_images.sh
diff --git a/coin/provisioning/common/shared/testserver/echo/Dockerfile b/coin/provisioning/common/shared/testserver/echo/Dockerfile
new file mode 100644
index 00000000..653ca714
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/echo/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:16.04
+ARG packages="xinetd avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 7 7/UDP 13
diff --git a/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile
new file mode 100644
index 00000000..37f488cb
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/echo_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="xinetd avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 7 7/UDP 13
diff --git a/coin/provisioning/common/shared/testserver/freecoap/Dockerfile b/coin/provisioning/common/shared/testserver/freecoap/Dockerfile
new file mode 100644
index 00000000..2c665bd5
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/freecoap/Dockerfile
@@ -0,0 +1,20 @@
+FROM ubuntu:18.04
+
+RUN apt-get update && apt-get -y install git avahi-daemon autoconf automake libtool make libgnutls28-dev
+
+RUN mkdir -p /root/src/
+
+# Get FreeCoAP test server
+WORKDIR /root/src
+RUN git clone https://github.com/keith-cullen/FreeCoAP.git
+WORKDIR /root/src/FreeCoAP
+RUN autoreconf --install
+RUN ./configure
+RUN make
+RUN make install
+WORKDIR /root/src/FreeCoAP/sample/time_server
+RUN make
+
+WORKDIR /
+
+EXPOSE 5685/udp
diff --git a/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile
new file mode 100644
index 00000000..0e7146ba
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/ftp-proxy_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="ftp-proxy avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 2121
diff --git a/coin/provisioning/common/shared/testserver/iptables/Dockerfile b/coin/provisioning/common/shared/testserver/iptables/Dockerfile
new file mode 100644
index 00000000..cbee61d4
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/iptables/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:16.04
+ARG packages="iptables avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 1357
diff --git a/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile
new file mode 100644
index 00000000..5865e9c8
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/iptables_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="iptables avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 1357
diff --git a/coin/provisioning/common/shared/testserver/settings.sh b/coin/provisioning/common/shared/testserver/settings.sh
index 041661f2..27832773 100644
--- a/coin/provisioning/common/shared/testserver/settings.sh
+++ b/coin/provisioning/common/shared/testserver/settings.sh
@@ -1,6 +1,6 @@
#############################################################################
##
-## Copyright (C) 2018 The Qt Company Ltd.
+## Copyright (C) 2019 The Qt Company Ltd.
## Contact: http://www.qt.io/licensing/
##
## This file is part of the provisioning scripts of the Qt Toolkit.
@@ -34,4 +34,5 @@
set -ex
# A list of test servers to be provisioned
-testserver='apache2 squid vsftpd ftp-proxy danted'
+testserver='apache2 squid vsftpd ftp-proxy danted echo cyrus iptables californium freecoap'
+testserver="$testserver apache2_18.04 squid_18.04 vsftpd_18.04 ftp-proxy_18.04 danted_18.04 echo_18.04 cyrus_18.04 iptables_18.04"
diff --git a/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile
new file mode 100644
index 00000000..208feec7
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/squid_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="squid avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 3128-3130
diff --git a/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile b/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile
new file mode 100644
index 00000000..843472fd
--- /dev/null
+++ b/coin/provisioning/common/shared/testserver/vsftpd_18.04/Dockerfile
@@ -0,0 +1,4 @@
+FROM ubuntu:18.04
+ARG packages="vsftpd avahi-daemon"
+RUN apt-get update && apt-get install -y $packages && dpkg -l $packages
+EXPOSE 20-21