diff --git a/tests/test_ntp.py b/tests/test_ntp.py index dfd80df21a31d7f98e8beaaaad968b168a7f212d..a43c6033627318985e0ab41f3fd18f5dbd4ae846 100755 --- a/tests/test_ntp.py +++ b/tests/test_ntp.py @@ -5,52 +5,58 @@ Criticality: Low Checks that the server is synchronized with the configured NTP server. ''' +import imp import os -import sys +import re import subprocess -import imp +import sys + +YELLOW = '\033[93m' +GREEN = '\033[92m' +RED = '\033[91m' +DEF = '\033[0m' # Check that ntpd is synced if os.path.isfile('/usr/bin/ntpq'): cmd = 'LANG=C ntpq -pd' expected = 'remote' ntpconf = '/etc/ntp.conf' - ntpconf_expected = 'server ' + ntpconf_expected = r'^(?:server|pool)\s(.*)$' else: cmd = 'LANG=C timedatectl' expected = 'NTP synchronized' ntpconf = '/etc/systemd/timesyncd.conf' - ntpconf_expected = 'NTP=' + ntpconf_expected = r'^NTP=(.*)$' print('Running %s' % cmd) status = subprocess.getoutput(cmd) if expected not in status: - print('NTP not working: %s' % status) + print('%sNTP not working: %s%s' % (RED, status, DEF)) sys.exit(1) -else: - print('System is NTP synchronized') +print('%sSystem is NTP synchronized.%s' % (GREEN, DEF)) os.chdir(os.path.dirname(__file__)) -print('Checking NTP server conforms to conf') -if os.path.isfile('../utils.py'): - es_utils = imp.load_source('es_utils', '../utils.py') - conf = es_utils.load_conf() - expected_servers = [s.strip() for s in (conf.get('NTP_SERVER') or 'ntp.ubuntu.com').split(',')] - - with open(ntpconf, 'r') as f: - d = f.read() - servers = list() - for l in d.split('\n'): - if l.startswith(ntpconf_expected): - servers.append(l[len(ntpconf_expected):].strip()) - for expected_server in expected_servers: - if expected_server not in servers: - print('Expected NTP server %s not found in %s, found %s instead.' % (expected_server, ntpconf, servers)) - sys.exit(1) - else: - print('Expected NTP server %s found in configuration (total servers: %s).' % (expected_server, len(servers))) - print('NTP OK') -else: - print('Could not find envsetup conf file or not running from expected location.') +print('Checking NTP server conforms to conf...') +if not os.path.isfile('../utils.py'): + print('%sCould not find envsetup conf file or not running from expected location.%s' % (RED, DEF)) sys.exit(1) + +es_utils = imp.load_source('es_utils', '../utils.py') +conf = es_utils.load_conf() +expected_servers = [s.strip() for s in (conf.get('NTP_SERVER') or 'ntp.ubuntu.com').split(',')] + +with open(ntpconf, 'r') as f: + content = f.read() +servers = list() +for l in content.split('\n'): + m = re.match(ntpconf_expected, l) + if m: + servers.append(m.groups()[0].strip()) +for expected_server in expected_servers: + if expected_server not in servers: + print('%sWarning: Expected NTP server %s not found in %s, found %s instead.%s' % (YELLOW, expected_server, ntpconf, ', '.join(servers), DEF)) + sys.exit(3) + else: + print('Expected NTP server %s found in configuration (total servers: %s).' % (expected_server, len(servers))) +print('%sNTP OK.%s' % (GREEN, DEF))