From 5c5af7155ae989664919de1f10ac17121fa12a36 Mon Sep 17 00:00:00 2001 From: Ryan Chu Date: Mon, 2 Jul 2018 15:13:12 +0200 Subject: [PATCH] Enable mDNS service discovery in Docker-based test servers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit To resolve the challenge of connecting Docker containers from the host without extra user-efforts, Avahi is used to publish the Docker-based test servers (Docker containers) on a local network. It is a free Zeroconf implementation, and it provides multicast DNS (mDNS) service discovery. By default, mDNS only resolves hostname ending with the ".local" domain. In this change, the domain name of test servers is changed to "test-net.qt.local". As stated in the standard, the DNS query for a local domain will be sent to the mDNS multicast address. It avoids the need for root access to modify system files. Task-number: QTQAINFRA-1686 Change-Id: I255fba0720ee6d0e84c9cb5ca9289d4466578922 Reviewed-by: Edward Welbourne Reviewed-by: Ryan Chu Reviewed-by: Jędrzej Nowacki --- tests/auto/testserver.pri | 2 +- tests/testserver/apache2/testdata/main.conf | 2 +- tests/testserver/common/startup.sh | 5 +++ .../testdata/ssl/qt-test-server-cert.pem | 24 ++++++------- tests/testserver/docker-compose.yml | 36 ++++++++----------- 5 files changed, 34 insertions(+), 35 deletions(-) diff --git a/tests/auto/testserver.pri b/tests/auto/testserver.pri index 6a2e6b9d917..2adf85a044a 100644 --- a/tests/auto/testserver.pri +++ b/tests/auto/testserver.pri @@ -73,7 +73,7 @@ equals(QMAKE_HOST.os, Windows)|isEmpty(TESTSERVER_VERSION) { isEmpty(TESTSERVER_IMAGES): error("Docker image qt-test-server-* not found") # The domain name is relevant to https keycert (qnetworkreply/crts/qt-test-net-cacert.pem). - DNSDOMAIN = test-net.qt + DNSDOMAIN = test-net.qt.local TEST_ENV += TESTSERVER_DOMAIN=$$DNSDOMAIN DEFINES += QT_TEST_SERVER QT_TEST_SERVER_DOMAIN=$$shell_quote(\"$${DNSDOMAIN}\") diff --git a/tests/testserver/apache2/testdata/main.conf b/tests/testserver/apache2/testdata/main.conf index 5cfa5446234..f3b13bb571a 100644 --- a/tests/testserver/apache2/testdata/main.conf +++ b/tests/testserver/apache2/testdata/main.conf @@ -1,4 +1,4 @@ -ServerName apache2.test-net.qt:80 +ServerName apache2.test-net.qt.local:80 NameVirtualHost *:443 diff --git a/tests/testserver/common/startup.sh b/tests/testserver/common/startup.sh index 10847d3524a..84d4003f86b 100755 --- a/tests/testserver/common/startup.sh +++ b/tests/testserver/common/startup.sh @@ -48,5 +48,10 @@ for RUN_CMD do $RUN_CMD done +# start multicast DNS service discovery (mDNS) +sed -i "s,#domain-name=local,domain-name=test-net.qt.local," /etc/avahi/avahi-daemon.conf +service dbus restart +service avahi-daemon restart + # keep-alive in docker detach mode sleep infinity diff --git a/tests/testserver/common/testdata/ssl/qt-test-server-cert.pem b/tests/testserver/common/testdata/ssl/qt-test-server-cert.pem index dae5641a889..43c8794ce21 100644 --- a/tests/testserver/common/testdata/ssl/qt-test-server-cert.pem +++ b/tests/testserver/common/testdata/ssl/qt-test-server-cert.pem @@ -1,16 +1,16 @@ -----BEGIN CERTIFICATE----- -MIICiTCCAfICCQCqBnF3SPSY7jANBgkqhkiG9w0BAQQFADCBiDELMAkGA1UEChMC +MIIClTCCAf4CCQC2xMhNhwvATDANBgkqhkiG9w0BAQQFADCBjjELMAkGA1UEChMC UXQxGTAXBgNVBAsTEENvcmUgQW5kIE5ldHdvcmsxGzAZBgkqhkiG9w0BCQEWDG5v Ym9keS5xdC5pbzENMAsGA1UEBxMET3NsbzENMAsGA1UECBMET3NsbzELMAkGA1UE -BhMCTk8xFjAUBgNVBAMUDSoudGVzdC1uZXQucXQwHhcNMTgwMzEzMDkyNjQ0WhcN -NDgwMzA1MDkyNjQ0WjCBiDELMAkGA1UEChMCUXQxGTAXBgNVBAsTEENvcmUgQW5k -IE5ldHdvcmsxGzAZBgkqhkiG9w0BCQEWDG5vYm9keS5xdC5pbzENMAsGA1UEBxME -T3NsbzENMAsGA1UECBMET3NsbzELMAkGA1UEBhMCTk8xFjAUBgNVBAMUDSoudGVz -dC1uZXQucXQwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM2q22/WNMmn8cC+ -5EEYGeICySLmp9W6Ay6eKHr0Xxp3X3epETuPfvAuxp7rOtkS18EMUegkUj8jw0IM -EcbyHKFC/rTCaYOt93CxGBXMIChiMPAsFeYzGa/D6xzAkfcRaJRQ+Ek3CDLXPnXf -o7xpABXezYcPXAJrgsgBfWrwHdxzAgMBAAEwDQYJKoZIhvcNAQEEBQADgYEAwNhw -aKznTaMj6JeHP/kEEwMppRkNjmh4ECdQfT9vYNs45UKSAvCa1dn6ZBZKIdhqKCLn -U2qiIS2783IoisRjFtg8x70S13EsBw/yEL/av+Ca1gQHOIFrOuLqwYbslTHrRXRA -RPzHOl3ZP9FD3mPZ8jyzxYs4x5EM0X26FkAR078= +BhMCTk8xHDAaBgNVBAMUEyoudGVzdC1uZXQucXQubG9jYWwwHhcNMTgwNzAxMTgz +NjI3WhcNNDgwNjIzMTgzNjI3WjCBjjELMAkGA1UEChMCUXQxGTAXBgNVBAsTEENv +cmUgQW5kIE5ldHdvcmsxGzAZBgkqhkiG9w0BCQEWDG5vYm9keS5xdC5pbzENMAsG +A1UEBxMET3NsbzENMAsGA1UECBMET3NsbzELMAkGA1UEBhMCTk8xHDAaBgNVBAMU +EyoudGVzdC1uZXQucXQubG9jYWwwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGB +AM2q22/WNMmn8cC+5EEYGeICySLmp9W6Ay6eKHr0Xxp3X3epETuPfvAuxp7rOtkS +18EMUegkUj8jw0IMEcbyHKFC/rTCaYOt93CxGBXMIChiMPAsFeYzGa/D6xzAkfcR +aJRQ+Ek3CDLXPnXfo7xpABXezYcPXAJrgsgBfWrwHdxzAgMBAAEwDQYJKoZIhvcN +AQEEBQADgYEAZu/lQPy8PXeyyYGamOVms/FZKJ48BH1y8KC3BeBU5FYnhvgG7pz8 +Wz9JKvt2t/r45wQeAkNL6HnGUBhPJsHMjPHl5KktqN+db3D+FQygBeS2V1+zmC0X +UZNRE4aWiHvt1Lq+pTx89SOMOpfqWfh4qTQKiE5jC2V4DeCNQ3u7uI8= -----END CERTIFICATE----- diff --git a/tests/testserver/docker-compose.yml b/tests/testserver/docker-compose.yml index 334818bc9b2..a151d6bfb07 100644 --- a/tests/testserver/docker-compose.yml +++ b/tests/testserver/docker-compose.yml @@ -1,9 +1,5 @@ version: '3.4' -x-domains: - &testdomain - ${TESTSERVER_DOMAIN:-test-net.qt} - # The tag of images is used by docker compose file to launch the corresponding # docker containers. The value of tag comes from the provisioning script # (coin/provisioning/.../testserver/docker_testserver.sh). The script gets SHA-1 @@ -16,9 +12,9 @@ x-domains: services: apache2: - image: qt-test-server-apache2:e2a70c8b169c204e762b375885bd3a26cc40ba48 + image: qt-test-server-apache2:cc9ea678b92bdda33acb9fa0159bb4ad0f3cd947 container_name: qt-test-server-apache2 - domainname: *testdomain + domainname: test-net.qt.local hostname: apache2 volumes: - ./common:/common:ro @@ -27,14 +23,14 @@ services: command: [common/ssl.sh, service/apache2.sh] squid: - image: qt-test-server-squid:276768104d3bbf097f4f3d9f3dc472a067852094 + image: qt-test-server-squid:577d99307eea9a8cccfec944d25be2bce2fe99cc container_name: qt-test-server-squid - domainname: *testdomain + domainname: test-net.qt.local hostname: squid depends_on: - apache2 external_links: - - apache2:apache2.test-net.qt + - apache2:apache2.test-net.qt.local volumes: - ./common:/common:ro - ./squid:/service:ro @@ -42,12 +38,10 @@ services: command: service/squid.sh vsftpd: - image: qt-test-server-vsftpd:ab7ecdbbace1bce7642a92ce04e9051c7630376c + image: qt-test-server-vsftpd:18896604c7e90b543e56d80c8a8aabdb65a590d0 container_name: qt-test-server-vsftpd - domainname: *testdomain + domainname: test-net.qt.local hostname: vsftpd - depends_on: - - squid volumes: - ./common:/common:ro - ./vsftpd:/service:ro @@ -55,14 +49,14 @@ services: command: service/vsftpd.sh ftp-proxy: - image: qt-test-server-ftp-proxy:4c5734fe60eb450cbf8a96165f67cba19851ec12 + image: qt-test-server-ftp-proxy:2c6c8f1ab6a364b540c43d705fb6f15a585cb2af container_name: qt-test-server-ftp-proxy - domainname: *testdomain + domainname: test-net.qt.local hostname: ftp-proxy depends_on: - vsftpd external_links: - - vsftpd:vsftpd.test-net.qt + - vsftpd:vsftpd.test-net.qt.local volumes: - ./common:/common:ro - ./ftp-proxy:/service:ro @@ -70,18 +64,18 @@ services: command: service/ftp-proxy.sh danted: - image: qt-test-server-danted:8404549745b5601ec3d22dc019258b70438864de + image: qt-test-server-danted:327dd56c3c35db85b26fac93213a5a1918475bc7 container_name: qt-test-server-danted - domainname: *testdomain + domainname: test-net.qt.local hostname: danted depends_on: - apache2 - vsftpd - ftp-proxy external_links: - - apache2:apache2.test-net.qt - - vsftpd:vsftpd.test-net.qt - - ftp-proxy:ftp-proxy.test-net.qt + - apache2:apache2.test-net.qt.local + - vsftpd:vsftpd.test-net.qt.local + - ftp-proxy:ftp-proxy.test-net.qt.local volumes: - ./common:/common:ro - ./danted:/service:ro