From 4be100e01da0d1564be412b040f3a24357ecaf85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Diemer?= <stephane.diemer@ubicast.eu> Date: Thu, 19 Jan 2017 15:54:41 +0100 Subject: [PATCH] Added /streaming/ test in Nginx test (refs #20017). --- tests/test_apt.sh | 5 +- tests/test_nginx_vhosts.py | 105 +++++++++++++++++++++++-------------- tests/test_ntp.sh | 4 +- 3 files changed, 71 insertions(+), 43 deletions(-) diff --git a/tests/test_apt.sh b/tests/test_apt.sh index 74a15877..63152276 100755 --- a/tests/test_apt.sh +++ b/tests/test_apt.sh @@ -1,5 +1,5 @@ #!/bin/bash -source /root/envsetup/conf.sh +set -e echo "Testing apt-get upgrade" @@ -7,9 +7,8 @@ echo "Clean repository" apt-get clean #Testing if sl package exists and remove it -dpkg -l | awk '{print $2}' | grep '^sl$' -if [ "$?" -eq "0" ]; then +if ( dpkg -s sl >/dev/null 2>&1 ); then echo "Removing already installed testing package" apt-get -y remove sl fi diff --git a/tests/test_nginx_vhosts.py b/tests/test_nginx_vhosts.py index b4ae969a..9383b71c 100755 --- a/tests/test_nginx_vhosts.py +++ b/tests/test_nginx_vhosts.py @@ -3,6 +3,7 @@ ''' Check the response status code of all enabled vhosts. Allowed status code are: 403 and 200. +Also check Wowza response for all mediaserver vhosts. ''' import os import re @@ -10,47 +11,75 @@ import requests import sys +# check that Nginx dir exists nginx_dir = '/etc/nginx/sites-enabled' if not os.path.exists(nginx_dir): print('Nginx dir does not exists ("%s").' % nginx_dir) + +# check that Wowza is installed +wowza_dir = '/usr/local/WowzaStreamingEngine' +if not os.path.exists(wowza_dir): + print('Info: Wowza is not installed ("%s" does not exist).' % wowza_dir) + wowza_dir = None else: - requests.packages.urllib3.disable_warnings() - found = False - errors = 0 - for name in os.listdir(nginx_dir): - path = os.path.join(nginx_dir, name) - with open(path, 'r') as fo: - conf = fo.read() - conf = conf.replace('\t', ' ') - matching = re.search(r'.*server_name\ +([0-9a-zA-Z\.\-\_\ ]+);.*', conf) - if not matching: - print('The server_name was not found in: "%s".' % path) + print('Info: Wowza is installed, /streaming/ will be tested on mediaserver vhosts.' % wowza_dir) + +# get enabled vhosts +requests.packages.urllib3.disable_warnings() +found = False +errors = 0 +for name in os.listdir(nginx_dir): + path = os.path.join(nginx_dir, name) + with open(path, 'r') as fo: + conf = fo.read() + conf = conf.replace('\t', ' ') + matching = re.search(r'.*server_name\ +([0-9a-zA-Z\.\-\_\ ]+);.*', conf) + if not matching: + print('The server_name was not found in: "%s".' % path) + errors += 1 + continue + domains = matching.groups()[0].strip().split(' ') + https = re.search(r'listen +\w* +ssl;', conf) is not None \ + or re.search(r'ssl +on;', conf) is not None + for domain in domains: + if domain == 'localhost': + continue # status vhost + found = True + url = '%s://%s' % ('https' if https else 'http', domain) + sys.stdout.write('Testing url "%s": ' % url) + try: + req = requests.get(url, verify=False, proxies={'http': '', 'https': ''}, timeout=10) + except Exception as e: + code = str(e) + else: + code = req.status_code + if code not in (200, 403): + sys.stdout.write('\033[91mKO (%s)\033[0m' % code) errors += 1 - continue - domains = matching.groups()[0].strip().split(' ') - https = re.search(r'listen +\w* +ssl;', conf) is not None \ - or re.search(r'ssl +on;', conf) is not None - for domain in domains: - if domain == 'localhost': - continue # status vhost - found = True - url = '%s://%s' % ('https' if https else 'http', domain) - sys.stdout.write('Testing url "%s": ' % url) - try: - req = requests.get(url, verify=False, proxies={'http': '', 'https': ''}, timeout=10) - except Exception as e: - code = str(e) - else: - code = req.status_code - if code == 200 or code == 403: - sys.stdout.write('\033[92mOK (%s).\033[0m\n' % code) - else: - sys.stdout.write('\033[91mKO (%s).\033[0m\n' % code) - errors += 1 + else: + sys.stdout.write('\033[92mOK (%s)\033[0m' % code) + if 'mediaserver' in name and wowza_dir: + # test /streaming url + sys.stdout.write(', streaming: ') + try: + req = requests.get(url + '/streaming/', verify=False, proxies={'http': '', 'https': ''}, timeout=10) + except Exception as e: + code = str(e) + else: + code = req.status_code + if code != 200: + sys.stdout.write('\033[91mKO (%s)\033[0m' % code) + errors += 1 + elif 'Wowza Streaming Engine' not in req.text: + sys.stdout.write('\033[91mKO (%s, %s)\033[0m' % (code, req.text.replace('\n', ' ')[:200])) + errors += 1 + else: + sys.stdout.write('\033[92mOK (%s)\033[0m' % code) + sys.stdout.write('.\n') - if errors: - print('%s vhost(s) did not correctly responded.' % errors) - sys.exit(1) - if not found: - print('No vhost found in Nginx sites-enabled dir.') - sys.exit(1) +if errors: + print('%s vhost(s) did not correctly responded.' % errors) + sys.exit(1) +if not found: + print('No vhost found in Nginx sites-enabled dir.') + sys.exit(1) diff --git a/tests/test_ntp.sh b/tests/test_ntp.sh index 1a68cacb..b8917be5 100755 --- a/tests/test_ntp.sh +++ b/tests/test_ntp.sh @@ -1,8 +1,8 @@ #!/bin/bash -source /root/envsetup/conf.sh - set -e +source /root/envsetup/conf.sh + NTP_SERVER="$NTP_SERVER1" if [ "${NTP_SERVER}" = "" ]; then NTP_SERVER="ntp.ubuntu.com" -- GitLab