Commit 724d5550 authored by Łukasz Nowak's avatar Łukasz Nowak
Browse files

Update Release Candidate

parents efca397e 17dc1232
......@@ -53,7 +53,7 @@ class Recipe(GenericBaseRecipe):
for line in (self.options.get('environment') or '').splitlines():
line = line.strip()
if line:
k, v = line.split('=')
k, v = line.split('=', 1)
environment[k.rstrip()] = v.lstrip()
kw = {}
......
......@@ -467,6 +467,18 @@ So it is required to ``DNAT`` from ``${public IP}`` of the computer to the compu
iptables -A DNAT -d ${public IP}/32 -p udp -m udp --dport ${port} -j DNAT --to-destination ${local IP}:${port}
Promises
========
Note that in some cases promises will fail:
* not possible to request frontend slave for monitoring (monitoring frontend promise)
* no slaves present (configuration promise and others)
* no cached slave present (configuration promise and others)
* no nginx style slave present (websocket, notebook) (configuration promise and others)
This is known issue and shall be tackled soon.
Notes
=====
......
......@@ -22,7 +22,7 @@ md5sum = c801b7f9f11f0965677c22e6bbe9281b
[template-apache-frontend]
filename = instance-apache-frontend.cfg.in
md5sum = da7b5804d50c727412885e8b818ca433
md5sum = 6fd023f0d29421d8579f0b3351473bb0
[template-apache-replicate]
filename = instance-apache-replicate.cfg.in
......@@ -30,7 +30,7 @@ md5sum = 86f15c85054800a55a7093d37b03cdce
[template-slave-list]
filename = templates/apache-custom-slave-list.cfg.in
md5sum = 5b91c0079b42780054da004f8fc6f26b
md5sum = 439a4e415bef9d44b37bee4d5e4aa924
[template-slave-configuration]
filename = templates/custom-virtualhost.conf.in
......
......@@ -75,6 +75,7 @@ run = ${:var}/run
service = ${:etc}/service
etc-run = ${:etc}/run
promise = ${:etc}/promise
plugin = ${:etc}/plugin
logrotate-backup = ${:backup}/logrotate
logrotate-entries = ${:etc}/logrotate.d
......@@ -194,6 +195,7 @@ extra-context =
section caddy_configuration caddy-configuration
section nginx_configuration nginx-configuration
key monitor_base_url monitor-instance-parameter:monitor-base-url
key plugin_directory directory:plugin
key promise_directory directory:promises
key report_directory directory:bin
key bin_directory :bin_directory
......@@ -510,11 +512,21 @@ filename = plugin.config
context =
key content trafficserver-variable:plugin-config
[promise-plugin-base]
recipe = slapos.cookbook:promise.plugin
eggs =
slapos.toolbox
content =
from slapos.promise.plugin.${:module} import RunPromise
output = ${directory:plugin}/${:name}
[trafficserver-promise-listen-port]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/trafficserver-port-listening
hostname = ${trafficserver-variable:local-ip}
port = ${trafficserver-variable:input-port}
<= promise-plugin-base
module = check_port_listening
name = trafficserver-port-listening.py
config-hostname = ${trafficserver-variable:local-ip}
config-port = ${trafficserver-variable:input-port}
[trafficserver-line]
recipe = slapos.cookbook:wrapper
......@@ -523,18 +535,10 @@ wrapper-path = ${directory:bin}/traffic_line
environment = TS_ROOT=${buildout:directory}
[trafficserver-promise-cache-availability]
recipe = collective.recipe.template
input =
inline:#!${buildout:executable}
import subprocess
import sys
traffic_line = "${trafficserver-line:wrapper-path}"
result = float(subprocess.check_output([traffic_line, '-r', 'proxy.node.cache.percent_free' ]))
if result != 0: sys.exit(0)
sys.stderr.write("Cache not available, availability: %s" % result)
sys.exit(127)
output = ${directory:promise}/trafficserver-cache-availability
mode = 700
<= promise-plugin-base
module = trafficserver_cache_availability
name = trafficserver-cache-availability.py
config-wrapper-path = ${trafficserver-line:wrapper-path}
### End of ATS sections
......@@ -607,45 +611,52 @@ extra-context =
# Promises checking configuration:
[promise-frontend-caddy-configuration]
recipe = slapos.cookbook:wrapper
command-line = ${caddy-configuration:frontend-configuration-verification}
wrapper-path = ${directory:promise}/frontend-caddy-configuration-promise
<= promise-plugin-base
module = validate_frontend_configuration
name = frontend-caddy-configuration-promise.py
config-verification-script = ${caddy-configuration:frontend-configuration-verification}
[promise-caddy-frontend-v4-https]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/caddy_frontend_ipv4_https
hostname = {{ instance_parameter['ipv4-random'] }}
port = ${configuration:port}
<= promise-plugin-base
module = check_port_listening
name = caddy_frontend_ipv4_https.py
config-hostname = {{ instance_parameter['ipv4-random'] }}
config-port = ${configuration:port}
[promise-caddy-frontend-v4-http]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/caddy_frontend_ipv4_http
hostname = {{ instance_parameter['ipv4-random'] }}
port = ${configuration:plain_http_port}
<= promise-plugin-base
module = check_port_listening
name = caddy_frontend_ipv4_http.py
config-hostname = {{ instance_parameter['ipv4-random'] }}
config-port = ${configuration:plain_http_port}
[promise-caddy-frontend-v6-https]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/caddy_frontend_ipv6_https
hostname = {{ instance_parameter['ipv6-random'] }}
port = ${configuration:port}
<= promise-plugin-base
module = check_port_listening
name = caddy_frontend_ipv6_https.py
config-hostname = {{ instance_parameter['ipv6-random'] }}
config-port = ${configuration:port}
[promise-caddy-frontend-v6-http]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/caddy_frontend_ipv6_http
hostname = {{ instance_parameter['ipv6-random'] }}
port = ${configuration:plain_http_port}
<= promise-plugin-base
module = check_port_listening
name = caddy_frontend_ipv6_http.py
config-hostname = {{ instance_parameter['ipv6-random'] }}
config-port = ${configuration:plain_http_port}
[promise-caddy-frontend-cached]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/caddy_cached
hostname = {{ instance_parameter['ipv4-random'] }}
port = ${caddy-configuration:cache-through-port}
<= promise-plugin-base
module = check_port_listening
name = caddy_cached.py
config-hostname = {{ instance_parameter['ipv4-random'] }}
config-port = ${caddy-configuration:cache-through-port}
[promise-caddy-frontend-ssl-cached]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/caddy_ssl_cached
hostname = {{ instance_parameter['ipv4-random'] }}
port = ${caddy-configuration:ssl-cache-through-port}
<= promise-plugin-base
module = check_port_listening
name = caddy_ssl_cached.py
config-hostname = {{ instance_parameter['ipv4-random'] }}
config-port = ${caddy-configuration:ssl-cache-through-port}
[promise-caddy-is-process-older-than-dependency-set]
recipe = slapos.cookbook:wrapper
......@@ -707,11 +718,10 @@ context =
raw content show:cache-stats
[monitor-verify-re6st-connectivity]
recipe = slapos.cookbook:check_url_available
path = ${directory:promise}/re6st-connectivity
url = ${configuration:re6st-verification-url}
dash_path = {{ parameter_dict['dash'] }}/bin/dash
curl_path = {{ parameter_dict['curl'] }}/bin/curl
<= promise-plugin-base
module = check_url_available
name = re6st-connectivity.py
config-url = ${configuration:re6st-verification-url}
#######################
# Nginx
......@@ -772,33 +782,38 @@ ssl_certificate = ${ca-frontend:cert-file}
ssl_key = ${ca-frontend:key-file}
[promise-nginx-configuration]
recipe = slapos.cookbook:wrapper
command-line = ${nginx-configuration:nginx-configuration-verification}
wrapper-path = ${directory:promise}/nginx-configuration-promise
<= promise-plugin-base
module = validate_frontend_configuration
name = nginx-configuration-promise.py
config-verification-script = ${nginx-configuration:nginx-configuration-verification}
[promise-nginx-frontend-v4-https]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/nginx_frontend_ipv4_https
hostname = {{ instance_parameter['ipv4-random'] }}
port = ${configuration:nginx_port}
<= promise-plugin-base
module = check_port_listening
name = nginx_frontend_ipv4_https.py
config-hostname = {{ instance_parameter['ipv4-random'] }}
config-port = ${configuration:nginx_port}
[promise-nginx-frontend-v4-http]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/nginx_frontend_ipv4_http
hostname = {{ instance_parameter['ipv4-random'] }}
port = ${configuration:plain_nginx_port}
<= promise-plugin-base
module = check_port_listening
name = nginx_frontend_ipv4_http.py
config-hostname = {{ instance_parameter['ipv4-random'] }}
config-port = ${configuration:plain_nginx_port}
[promise-nginx-frontend-v6-https]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/nginx_frontend_ipv6_https
hostname = {{ instance_parameter['ipv6-random'] }}
port = ${configuration:nginx_port}
<= promise-plugin-base
module = check_port_listening
name = nginx_frontend_ipv6_https.py
config-hostname = {{ instance_parameter['ipv6-random'] }}
config-port = ${configuration:nginx_port}
[promise-nginx-frontend-v6-http]
recipe = slapos.cookbook:check_port_listening
path = ${directory:promise}/nginx_frontend_ipv6_http
hostname = {{ instance_parameter['ipv6-random'] }}
port = ${configuration:plain_nginx_port}
<= promise-plugin-base
module = check_port_listening
name = nginx_frontend_ipv6_http.py
config-hostname = {{ instance_parameter['ipv6-random'] }}
config-port = ${configuration:plain_nginx_port}
[promise-nginx-is-process-older-than-dependency-set]
recipe = slapos.cookbook:wrapper
......
......@@ -44,6 +44,14 @@ certs = {{ custom_ssl_directory }}/certs/
newcerts = {{ custom_ssl_directory }}/newcerts/
crl = {{ custom_ssl_directory }}/crl/
[promise-plugin-base]
recipe = slapos.cookbook:promise.plugin
eggs =
slapos.toolbox
content =
from slapos.promise.plugin.${:module} import RunPromise
output = {{ plugin_directory }}/${:name}
{# Loop thought slave list to set up slaves #}
{% for slave_instance in slave_instance_list %}
{% set slave_reference = slave_instance.get('slave_reference') %}
......@@ -276,28 +284,36 @@ extra-context =
{% set check_error_log_section_title = 'check-%s-error-log-last-hour' % slave_instance.get('slave_reference') %}
{% do part_list.append(check_error_log_section_title) %}
[{{ check_error_log_section_title }}]
recipe = slapos.cookbook:wrapper
command-line = {{ bin_directory }}/check-error-on-apache-log -l {{ slave_instance.get('error_log') }} -d 3600
filename = {{ check_error_log_section_title }}
wrapper-path = {{ promise_directory }}/${:filename}
<= promise-plugin-base
module = check_error_on_http_log
name = {{ check_error_log_section_title }}.py
config-log-file = {{ slave_instance.get('error_log') }}
config-maximum-delay = 3600
# promise frequency in minutes (2 times/day)
config-frequency = 720
{% set check_error_log_section_title = 'check-%s-error-log-last-day' % slave_instance.get('slave_reference') %}
{% do part_list.append(check_error_log_section_title) %}
[{{ check_error_log_section_title }}]
recipe = slapos.cookbook:wrapper
command-line = {{ bin_directory }}/check-error-on-apache-log -l {{ slave_instance.get('error_log') }} -d 86400
filename = {{ check_error_log_section_title }}
wrapper-path = {{ promise_directory }}/${:filename}
<= promise-plugin-base
module = check_error_on_http_log
name = {{ check_error_log_section_title }}.py
config-log-file = {{ slave_instance.get('error_log') }}
config-maximum-delay = 86400
# promise frequency in minutes (2 times/day)
config-frequency = 720
{% set monitor_ipv6_test = slave_instance.get('monitor-ipv6-test', '') %}
{% if monitor_ipv6_test %}
{% set monitor_ipv6_section_title = 'check-%s-ipv6-packet-list-test' % slave_instance.get('slave_reference') %}
{% do part_list.append(monitor_ipv6_section_title) %}
[{{ monitor_ipv6_section_title }}]
recipe = slapos.cookbook:wrapper
command-line = {{ dumps(bin_directory ~ '/is-icmp-packet-lost -a ' ~ monitor_ipv6_test) }}
filename = {{ monitor_ipv6_section_title }}
wrapper-path = {{ promise_directory }}/${:filename}
<= promise-plugin-base
module = check_icmp_packet_lost
name = {{ monitor_ipv6_section_title }}.py
config-address = {{ dumps(monitor_ipv6_test) }}
# promise frequency in minutes (2 times/day)
config-frequency = 720
{% endif %}
{% set monitor_ipv4_test = slave_instance.get('monitor-ipv4-test', '') %}
......@@ -305,10 +321,13 @@ wrapper-path = {{ promise_directory }}/${:filename}
{% set monitor_ipv4_section_title = 'check-%s-ipv4-packet-list-test' % slave_instance.get('slave_reference') %}
{% do part_list.append(monitor_ipv4_section_title) %}
[{{ monitor_ipv4_section_title }}]
recipe = slapos.cookbook:wrapper
command-line = {{ dumps(bin_directory ~ '/is-icmp-packet-lost -4 -a ' ~ monitor_ipv4_test) }}
filename = {{ monitor_ipv4_section_title }}
wrapper-path = {{ promise_directory }}/${:filename}
<= promise-plugin-base
module = check_icmp_packet_lost
name = {{ monitor_ipv4_section_title }}.py
config-address = {{ dumps(monitor_ipv4_test) }}
config-ipv4 = true
# promise frequency in minutes (2 times/day)
config-frequency = 720
{% endif %}
{% set re6st_optimal_test = '' ~ slave_instance.get('re6st-optimal-test', '') %}
......@@ -322,10 +341,13 @@ wrapper-path = {{ promise_directory }}/${:filename}
{% do part_list.append(re6st_optimal_test_section_title) %}
[{{ re6st_optimal_test_section_title }}]
recipe = slapos.cookbook:wrapper
command-line = {{ dumps(bin_directory ~ '/check-re6st-optimal-status -4 ' ~ re6st_ipv4 ~ ' -6 ' ~ re6st_ipv6) }}
filename = {{ re6st_optimal_test_section_title }}
wrapper-path = {{ promise_directory }}/${:filename}
<= promise-plugin-base
module = check_re6st_optimal_status
name = {{ re6st_optimal_test_section_title }}.py
config-ipv4 = {{ dumps(re6st_ipv4) }}
config-ipv6 = {{ dumps(re6st_ipv6) }}
# promise frequency in minutes (2 times/day)
config-frequency = 720
{% endif %}
......
......@@ -187,16 +187,18 @@ class CertificateAuthority(object):
return certificate, certificate.public_bytes(serialization.Encoding.PEM)
def subprocess_output(*args, **kwargs):
def subprocess_status_output(*args, **kwargs):
prc = subprocess.Popen(
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
*args,
**kwargs
)
**kwargs)
out, err = prc.communicate()
return out
return prc.returncode, out
def subprocess_output(*args, **kwargs):
return subprocess_status_output(*args, **kwargs)[1]
def isHTTP2(domain, ip):
......@@ -224,6 +226,31 @@ def getQUIC(url, ip, port):
return False, e.output
def getPluginParameterDict(software_path, filepath):
bin_file = os.path.join(software_path, 'bin', 'test-plugin-promise')
with open(bin_file, 'w') as f:
f.write("""#!%s/bin/pythonwitheggs
import os
import importlib
import sys
import json
filepath = sys.argv[1]
sys.path[0:0] = [os.path.dirname(filepath)]
filename = os.path.basename(filepath)
module = importlib.import_module(os.path.splitext(filename)[0])
print json.dumps(module.extra_config_dict)
""" % software_path)
os.chmod(bin_file, 0755)
result = subprocess_output([bin_file, filepath]).strip()
try:
return json.loads(result)
except ValueError, e:
raise ValueError("%s\nResult was: %s" % (e, result))
class TestDataMixin(object):
@staticmethod
def generateHashFromFiles(file_list):
......@@ -269,24 +296,6 @@ class TestDataMixin(object):
finally:
self.maxDiff = maxDiff
def test_plugin_list(self):
runtime_data = '\n'.join(sorted([
q[len(self.instance_path) + 1:]
for q in glob.glob(os.path.join(
self.instance_path, '*', 'etc', 'plugin', '*'))
if not q.endswith('pyc') # ignore compiled python
]))
self.assertTestData(runtime_data)
def test_promise_list(self):
runtime_data = '\n'.join(sorted([
q[len(self.instance_path) + 1:]
for q in glob.glob(os.path.join(
self.instance_path, '*', 'etc', 'promise', '*'))]))
self.assertTestData(runtime_data)
def _test_file_list(self, slave_dir, IGNORE_PATH_LIST):
runtime_data = []
for slave_var in glob.glob(os.path.join(self.instance_path, '*', 'var')):
......@@ -335,6 +344,56 @@ class TestDataMixin(object):
runtime_data = self.getTrimmedProcessInfo()
self.assertTestData(runtime_data, hash_value=h)
def test_promise_run_plugin(self):
ignored_plugin_list = [
'__init__.py', # that's not a plugin
'monitor-http-frontend.py', # can't check w/o functioning frontend
]
runpromise_bin = os.path.join(
self.software_path, 'bin', 'monitor.runpromise')
partition_path_list = glob.glob(os.path.join(self.instance_path, '*'))
promise_status_list = []
for partition_path in sorted(partition_path_list):
plugin_path_list = sorted(glob.glob(
os.path.join(partition_path, 'etc', 'plugin', '*.py')
))
strip = len(os.path.join(partition_path, 'etc', 'plugin')) + 1
for plugin_path in plugin_path_list:
monitor_conf = os.path.join(partition_path, 'etc', 'monitor.conf')
plugin = plugin_path[strip:]
if plugin in ignored_plugin_list:
continue
plugin_status, plugin_result = subprocess_status_output([
runpromise_bin,
'-c', monitor_conf,
'--run-only', plugin
])
# sanity check
if 'Checking promise %s' % plugin not in plugin_result:
plugin_status = 1
promise_status_list.append(
'%s: %s' % (
plugin_path[len(self.instance_path) + 1:],
plugin_status == 0 and 'OK' or 'ERROR'))
self.assertTestData('\n'.join(promise_status_list))
def test_promise_run_promise(self):
partition_path_list = glob.glob(os.path.join(self.instance_path, '*'))
promise_status_list = []
for partition_path in sorted(partition_path_list):
promise_path_list = sorted(glob.glob(
os.path.join(partition_path, 'etc', 'promise', '*')
))
for promise_path in promise_path_list:
promise_result = subprocess.call([promise_path])
promise_status_list.append(
'%s: %s' % (
promise_path[len(self.instance_path) + 1:],
promise_result == 0 and 'OK' or 'ERROR'))
self.assertTestData('\n'.join(promise_status_list))
class HttpFrontendTestCase(SlapOSInstanceTestCase):
# show full diffs, as it is required for proper analysis of problems
......@@ -1030,8 +1089,6 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
self.assertEqual(
set([
'monitor-http-frontend',
'monitor-httpd-listening-on-tcp',
'promise-monitor-httpd-is-process-older-than-dependency-set',
]),
set(os.listdir(os.path.join(partition_path, 'etc', 'promise'))))
......@@ -1040,6 +1097,8 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
set([
'monitor-bootstrap-status.py',
'check-free-disk-space.py',
'monitor-http-frontend.py',
'monitor-httpd-listening-on-tcp.py',
'buildout-%s-0-status.py' % (type(self).__name__,),
'__init__.py',
]),
......@@ -1055,17 +1114,6 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
os.path.join(
partition_path, 'etc', 'httpd-cors.cfg'), 'r').read().strip())
def test_promise_monitor_httpd_listening_on_tcp(self):
result = set([
subprocess.call(q) for q in glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'monitor-httpd-listening-on-tcp'))])
self.assertEqual(
set([0]),
result
)
def test_slave_partition_state(self):
partition_path = self.getSlavePartitionPath()
self.assertTrue(
......@@ -2410,18 +2458,17 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(httplib.NOT_FOUND, result_http.status_code)
# rewrite SR/bin/is-icmp-packet-lost
fname = os.path.join(self.software_path, 'bin', 'is-icmp-packet-lost')
self.assertTrue(os.path.isfile(fname))
open(fname, 'w').write('echo "$@"')
# call the monitor for this partition
monitor_file = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_monitor-ipv6-test-ipv6-packet-list-test'))[0]
self.instance_path, '*', 'etc', 'plugin',
'check-_monitor-ipv6-test-ipv6-packet-list-test.py'))[0]
# get promise module and check that parameters are ok
self.assertEqual(
'-a monitor-ipv6-test',
subprocess_output(monitor_file).strip()
getPluginParameterDict(self.software_path, monitor_file),
{
'frequency': '720',
'address': 'monitor-ipv6-test'
}
)
def test_monitor_ipv4_test(self):
......@@ -2452,18 +2499,18 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(httplib.NOT_FOUND, result_http.status_code)
# rewrite SR/bin/is-icmp-packet-lost
fname = os.path.join(self.software_path, 'bin', 'is-icmp-packet-lost')
self.assertTrue(os.path.isfile(fname))
open(fname, 'w').write('echo "$@"')
# call the monitor for this partition
monitor_file = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_monitor-ipv4-test-ipv4-packet-list-test'))[0]
self.instance_path, '*', 'etc', 'plugin',
'check-_monitor-ipv4-test-ipv4-packet-list-test.py'))[0]
# get promise module and check that parameters are ok
self.assertEqual(
'-4 -a monitor-ipv4-test',
subprocess_output(monitor_file).strip()
getPluginParameterDict(self.software_path, monitor_file),
{
'frequency': '720',
'ipv4': 'true',
'address': 'monitor-ipv4-test',
}
)
def test_re6st_optimal_test(self):
......@@ -2494,19 +2541,18 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(httplib.NOT_FOUND, result_http.status_code)
# rewrite SR/bin/is-icmp-packet-lost
fname = os.path.join(
self.software_path, 'bin', 'check-re6st-optimal-status')
self.assertTrue(os.path.isfile(fname))
open(fname, 'w').write('echo "$@"')
# call the monitor for this partition
monitor_file = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_re6st-optimal-test-re6st-optimal-test'))[0]
self.instance_path, '*', 'etc', 'plugin',
'check-_re6st-optimal-test-re6st-optimal-test.py'))[0]
# get promise module and check that parameters are ok
self.assertEqual(
'-4 ipv4 -6 ipv6',
subprocess_output(monitor_file).strip()
getPluginParameterDict(self.software_path, monitor_file),
{
'frequency': '720',
'ipv4': 'ipv4',
'ipv6': 'ipv6'
}
)
def test_enable_cache(self):
......@@ -3370,14 +3416,18 @@ class TestRe6stVerificationUrlDefaultSlave(SlaveHttpFrontendTestCase,
re6st_connectivity_promise_list = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
're6st-connectivity'))
self.instance_path, '*', 'etc', 'plugin',
're6st-connectivity.py'))
self.assertEqual(1, len(re6st_connectivity_promise_list))
re6st_connectivity_promise_file = re6st_connectivity_promise_list[0]
self.assertTrue(
'URL="http://[2001:67c:1254:4::1]/index.html"' in
open(re6st_connectivity_promise_list[0]).read()
self.assertEqual(
getPluginParameterDict(
self.software_path, re6st_connectivity_promise_file),
{
'url': 'http://[2001:67c:1254:4::1]/index.html',
}
)
......@@ -3419,14 +3469,18 @@ class TestRe6stVerificationUrlSlave(SlaveHttpFrontendTestCase,
re6st_connectivity_promise_list = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
're6st-connectivity'))
self.instance_path, '*', 'etc', 'plugin',
're6st-connectivity.py'))
self.assertEqual(1, len(re6st_connectivity_promise_list))
re6st_connectivity_promise_file = re6st_connectivity_promise_list[0]
self.assertTrue(
'URL="some-re6st-verification-url"' in
open(re6st_connectivity_promise_list[0]).read()
self.assertEqual(
getPluginParameterDict(
self.software_path, re6st_connectivity_promise_file),
{
'url': 'some-re6st-verification-url',
}
)
......@@ -3716,7 +3770,7 @@ https://www.google.com {}""",
},
're6st-optimal-test-unsafe': {
're6st-optimal-test':
'new\nline;rm -fr ~;,new\\line\n[s${esection:eoption}',
'new\nline;rm -fr ~;,new line\n[s${esection:eoption}',
},
'custom_domain-unsafe': {
'custom_domain': '${section:option} afterspace\nafternewline',
......@@ -3835,23 +3889,21 @@ https://www.google.com {}""",
self.assertEqual(httplib.NOT_FOUND, result.status_code)
# rewrite SR/bin/is-icmp-packet-lost
fname = os.path.join(
self.software_path, 'bin', 'check-re6st-optimal-status')
self.assertTrue(os.path.isfile(fname))
open(fname, 'w').write('echo "$@"')
# call the monitor for this partition
monitor_file = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_re6st-optimal-test-unsafe-re6st-optimal-test'))[0]
self.instance_path, '*', 'etc', 'plugin',
'check-_re6st-optimal-test-unsafe-re6st-optimal-test.py'))[0]
# Note: The result is a bit differnt from the request (newlines stripped),
# but good enough to prove, that ${esection:eoption} has been
# correctly passed to the script.
self.assertEqual(
'-4 newline [s${esection:eoption} -6 new line;rm -fr ~;',
subprocess_output(monitor_file).strip()
getPluginParameterDict(self.software_path, monitor_file),
{
'frequency': '720',
'ipv4': 'new line\n[s${esection:eoption}',
'ipv6': 'new\nline;rm -fr ~;',
}
)
def test_re6st_optimal_test_nocomma(self):
......@@ -3881,8 +3933,8 @@ https://www.google.com {}""",
# assert that there is no nocomma file
monitor_file_list = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_re6st-optimal-test-nocomma-re6st-optimal-test'))
self.instance_path, '*', 'etc', 'plugin',
'check-_re6st-optimal-test-nocomma-re6st-optimal-test.py'))
self.assertEqual(
[],
monitor_file_list
......@@ -4029,19 +4081,19 @@ https://www.google.com {}""",
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(httplib.NOT_FOUND, result_http.status_code)
# rewrite SR/bin/is-icmp-packet-lost
fname = os.path.join(
self.software_path, 'bin', 'is-icmp-packet-lost')
self.assertTrue(os.path.isfile(fname))
open(fname, 'w').write('echo "$@"')
# call the monitor for this partition
monitor_file = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_monitor-ipv4-test-unsafe-ipv4-packet-list-test'))[0]
self.instance_path, '*', 'etc', 'plugin',
'check-_monitor-ipv4-test-unsafe-ipv4-packet-list-test.py'))[0]
# get promise module and check that parameters are ok
self.assertEqual(
'-4 -a ${section:option} afternewline ipv4',
subprocess_output(monitor_file).strip()
getPluginParameterDict(self.software_path, monitor_file),
{
'frequency': '720',
'ipv4': 'true',
'address': '${section:option}\nafternewline ipv4',
}
)
def test_monitor_ipv6_test_unsafe(self):
......@@ -4072,19 +4124,17 @@ https://www.google.com {}""",
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(httplib.NOT_FOUND, result_http.status_code)
# rewrite SR/bin/is-icmp-packet-lost
fname = os.path.join(
self.software_path, 'bin', 'is-icmp-packet-lost')
self.assertTrue(os.path.isfile(fname))
open(fname, 'w').write('echo "$@"')
# call the monitor for this partition
monitor_file = glob.glob(
os.path.join(
self.instance_path, '*', 'etc', 'promise',
'check-_monitor-ipv6-test-unsafe-ipv6-packet-list-test'))[0]
self.instance_path, '*', 'etc', 'plugin',
'check-_monitor-ipv6-test-unsafe-ipv6-packet-list-test.py'))[0]
# get promise module and check that parameters are ok
self.assertEqual(
'-a ${section:option} afternewline ipv6',
subprocess_output(monitor_file).strip()
getPluginParameterDict(self.software_path, monitor_file),
{
'frequency': '720',
'address': '${section:option}\nafternewline ipv6'
}
)
def test_ssl_key_ssl_crt_unsafe(self):
......
TestDefaultMonitorHttpdPort-0/etc/plugin/__init__.py
TestDefaultMonitorHttpdPort-0/etc/plugin/buildout-TestDefaultMonitorHttpdPort-0-status.py
TestDefaultMonitorHttpdPort-0/etc/plugin/check-free-disk-space.py
TestDefaultMonitorHttpdPort-0/etc/plugin/monitor-bootstrap-status.py
TestDefaultMonitorHttpdPort-1/etc/plugin/buildout-TestDefaultMonitorHttpdPort-1-status.py
TestDefaultMonitorHttpdPort-1/etc/plugin/check-free-disk-space.py
TestDefaultMonitorHttpdPort-1/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
TestDefaultMonitorHttpdPort-0/etc/promise/monitor-http-frontend
TestDefaultMonitorHttpdPort-0/etc/promise/monitor-httpd-listening-on-tcp
TestDefaultMonitorHttpdPort-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestDefaultMonitorHttpdPort-1/etc/promise/caddy-frontend-is-running-actual-software-release
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_cached
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv4_http
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv4_https
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv6_http
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_frontend_ipv6_https
TestDefaultMonitorHttpdPort-1/etc/promise/caddy_ssl_cached
TestDefaultMonitorHttpdPort-1/etc/promise/check-_test-error-log-last-day
TestDefaultMonitorHttpdPort-1/etc/promise/check-_test-error-log-last-hour
TestDefaultMonitorHttpdPort-1/etc/promise/frontend-caddy-configuration-promise
TestDefaultMonitorHttpdPort-1/etc/promise/monitor-http-frontend
TestDefaultMonitorHttpdPort-1/etc/promise/monitor-httpd-listening-on-tcp
TestDefaultMonitorHttpdPort-1/etc/promise/nginx-configuration-promise
TestDefaultMonitorHttpdPort-1/etc/promise/nginx_frontend_ipv4_http
TestDefaultMonitorHttpdPort-1/etc/promise/nginx_frontend_ipv4_https
TestDefaultMonitorHttpdPort-1/etc/promise/nginx_frontend_ipv6_http
TestDefaultMonitorHttpdPort-1/etc/promise/nginx_frontend_ipv6_https
TestDefaultMonitorHttpdPort-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestDefaultMonitorHttpdPort-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestDefaultMonitorHttpdPort-1/etc/promise/re6st-connectivity
TestDefaultMonitorHttpdPort-1/etc/promise/trafficserver-cache-availability
TestDefaultMonitorHttpdPort-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestDefaultMonitorHttpdPort-0/etc/plugin/buildout-TestDefaultMonitorHttpdPort-0-status.py: OK
TestDefaultMonitorHttpdPort-0/etc/plugin/check-free-disk-space.py: OK
TestDefaultMonitorHttpdPort-0/etc/plugin/monitor-bootstrap-status.py: OK
TestDefaultMonitorHttpdPort-0/etc/plugin/monitor-httpd-listening-on-tcp.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/buildout-TestDefaultMonitorHttpdPort-1-status.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/caddy_cached.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/caddy_frontend_ipv4_http.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/caddy_frontend_ipv4_https.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/caddy_frontend_ipv6_http.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/caddy_frontend_ipv6_https.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/caddy_ssl_cached.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/check-_test-error-log-last-day.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/check-_test-error-log-last-hour.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/check-free-disk-space.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/frontend-caddy-configuration-promise.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/monitor-bootstrap-status.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/monitor-httpd-listening-on-tcp.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/nginx-configuration-promise.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/nginx_frontend_ipv4_http.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/nginx_frontend_ipv4_https.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/nginx_frontend_ipv6_http.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/nginx_frontend_ipv6_https.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/re6st-connectivity.py: OK
TestDefaultMonitorHttpdPort-1/etc/plugin/trafficserver-cache-availability.py: ERROR
TestDefaultMonitorHttpdPort-1/etc/plugin/trafficserver-port-listening.py: ERROR
\ No newline at end of file
TestDefaultMonitorHttpdPort-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set: OK
TestDefaultMonitorHttpdPort-1/etc/promise/caddy-frontend-is-running-actual-software-release: OK
TestDefaultMonitorHttpdPort-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set: OK
TestDefaultMonitorHttpdPort-1/etc/promise/promise-nginx-is-process-older-than-dependency-set: OK
\ No newline at end of file
TestDuplicateSiteKeyProtection-0/etc/plugin/__init__.py
TestDuplicateSiteKeyProtection-0/etc/plugin/buildout-TestDuplicateSiteKeyProtection-0-status.py
TestDuplicateSiteKeyProtection-0/etc/plugin/check-free-disk-space.py
TestDuplicateSiteKeyProtection-0/etc/plugin/monitor-bootstrap-status.py
TestDuplicateSiteKeyProtection-1/etc/plugin/__init__.py
TestDuplicateSiteKeyProtection-1/etc/plugin/buildout-TestDuplicateSiteKeyProtection-1-status.py
TestDuplicateSiteKeyProtection-1/etc/plugin/check-free-disk-space.py
TestDuplicateSiteKeyProtection-1/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
TestDuplicateSiteKeyProtection-0/etc/promise/monitor-http-frontend
TestDuplicateSiteKeyProtection-0/etc/promise/monitor-httpd-listening-on-tcp
TestDuplicateSiteKeyProtection-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestDuplicateSiteKeyProtection-1/etc/promise/caddy-frontend-is-running-actual-software-release
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_cached
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv4_http
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv4_https
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv6_http
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_frontend_ipv6_https
TestDuplicateSiteKeyProtection-1/etc/promise/caddy_ssl_cached
TestDuplicateSiteKeyProtection-1/etc/promise/check-_site_2-error-log-last-day
TestDuplicateSiteKeyProtection-1/etc/promise/check-_site_2-error-log-last-hour
TestDuplicateSiteKeyProtection-1/etc/promise/frontend-caddy-configuration-promise
TestDuplicateSiteKeyProtection-1/etc/promise/monitor-http-frontend
TestDuplicateSiteKeyProtection-1/etc/promise/monitor-httpd-listening-on-tcp
TestDuplicateSiteKeyProtection-1/etc/promise/nginx-configuration-promise
TestDuplicateSiteKeyProtection-1/etc/promise/nginx_frontend_ipv4_http
TestDuplicateSiteKeyProtection-1/etc/promise/nginx_frontend_ipv4_https
TestDuplicateSiteKeyProtection-1/etc/promise/nginx_frontend_ipv6_http
TestDuplicateSiteKeyProtection-1/etc/promise/nginx_frontend_ipv6_https
TestDuplicateSiteKeyProtection-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestDuplicateSiteKeyProtection-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestDuplicateSiteKeyProtection-1/etc/promise/re6st-connectivity
TestDuplicateSiteKeyProtection-1/etc/promise/trafficserver-cache-availability
TestDuplicateSiteKeyProtection-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestDuplicateSiteKeyProtection-0/etc/plugin/buildout-TestDuplicateSiteKeyProtection-0-status.py: OK
TestDuplicateSiteKeyProtection-0/etc/plugin/check-free-disk-space.py: OK
TestDuplicateSiteKeyProtection-0/etc/plugin/monitor-bootstrap-status.py: OK
TestDuplicateSiteKeyProtection-0/etc/plugin/monitor-httpd-listening-on-tcp.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/buildout-TestDuplicateSiteKeyProtection-1-status.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/caddy_cached.py: ERROR
TestDuplicateSiteKeyProtection-1/etc/plugin/caddy_frontend_ipv4_http.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/caddy_frontend_ipv4_https.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/caddy_frontend_ipv6_http.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/caddy_frontend_ipv6_https.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/caddy_ssl_cached.py: ERROR
TestDuplicateSiteKeyProtection-1/etc/plugin/check-_site_2-error-log-last-day.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/check-_site_2-error-log-last-hour.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/check-free-disk-space.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/frontend-caddy-configuration-promise.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/monitor-bootstrap-status.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/monitor-httpd-listening-on-tcp.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/nginx-configuration-promise.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/nginx_frontend_ipv4_http.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/nginx_frontend_ipv4_https.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/nginx_frontend_ipv6_http.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/nginx_frontend_ipv6_https.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/re6st-connectivity.py: OK
TestDuplicateSiteKeyProtection-1/etc/plugin/trafficserver-cache-availability.py: ERROR
TestDuplicateSiteKeyProtection-1/etc/plugin/trafficserver-port-listening.py: OK
\ No newline at end of file
TestDuplicateSiteKeyProtection-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set: OK
TestDuplicateSiteKeyProtection-1/etc/promise/caddy-frontend-is-running-actual-software-release: OK
TestDuplicateSiteKeyProtection-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set: OK
TestDuplicateSiteKeyProtection-1/etc/promise/promise-nginx-is-process-older-than-dependency-set: OK
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/__init__.py
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/buildout-TestEnableHttp2ByDefaultDefaultSlave-0-status.py
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/check-free-disk-space.py
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/monitor-bootstrap-status.py
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/__init__.py
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/buildout-TestEnableHttp2ByDefaultDefaultSlave-1-status.py
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-free-disk-space.py
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy-frontend-is-running-actual-software-release
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy_ssl_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-_enable-http2-true-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/frontend-caddy-configuration-promise
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx-configuration-promise
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/nginx_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/re6st-connectivity
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/trafficserver-cache-availability
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/buildout-TestEnableHttp2ByDefaultDefaultSlave-0-status.py: OK
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/check-free-disk-space.py: OK
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/monitor-bootstrap-status.py: OK
TestEnableHttp2ByDefaultDefaultSlave-0/etc/plugin/monitor-httpd-listening-on-tcp.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/buildout-TestEnableHttp2ByDefaultDefaultSlave-1-status.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/caddy_cached.py: ERROR
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/caddy_frontend_ipv4_http.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/caddy_frontend_ipv4_https.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/caddy_frontend_ipv6_http.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/caddy_frontend_ipv6_https.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/caddy_ssl_cached.py: ERROR
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-_enable-http2-default-error-log-last-day.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-_enable-http2-default-error-log-last-hour.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-_enable-http2-false-error-log-last-day.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-_enable-http2-false-error-log-last-hour.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-_enable-http2-true-error-log-last-day.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-_enable-http2-true-error-log-last-hour.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/check-free-disk-space.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/frontend-caddy-configuration-promise.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/monitor-bootstrap-status.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/monitor-httpd-listening-on-tcp.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/nginx-configuration-promise.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/nginx_frontend_ipv4_http.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/nginx_frontend_ipv4_https.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/nginx_frontend_ipv6_http.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/nginx_frontend_ipv6_https.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/re6st-connectivity.py: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/trafficserver-cache-availability.py: ERROR
TestEnableHttp2ByDefaultDefaultSlave-1/etc/plugin/trafficserver-port-listening.py: ERROR
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/caddy-frontend-is-running-actual-software-release: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set: OK
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set: OK
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/plugin/__init__.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/plugin/buildout-TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0-status.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/plugin/check-free-disk-space.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/plugin/monitor-bootstrap-status.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/plugin/__init__.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/plugin/buildout-TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1-status.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/plugin/check-free-disk-space.py
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy-frontend-is-running-actual-software-release
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy_cached
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/caddy_ssl_cached
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/check-_enable-http2-true-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/frontend-caddy-configuration-promise
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/nginx-configuration-promise
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/nginx_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/nginx_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/nginx_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/nginx_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/re6st-connectivity
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/trafficserver-cache-availability
TestEnableHttp2ByDefaultDefaultSlaveGlobalDisableHttp2-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment