Commit 49650a85 authored by Alain Takoudjou's avatar Alain Takoudjou

Update Release Candidate

parents 0d06f59a f047919f
......@@ -33,5 +33,5 @@ environment =
[ghostscript-9]
<= ghostscript-common
url = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs920/ghostscript-9.20.tar.xz
md5sum = 8f3d383d48da22345937b66b01ab2960
url = https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs925/ghostscript-9.25.tar.xz
md5sum = d5ac3f3d76cf82a549bafdf86d58395b
......@@ -18,8 +18,8 @@ parts =
[git]
recipe = slapos.recipe.cmmi
shared = true
url = https://www.kernel.org/pub/software/scm/git/git-2.11.0.tar.xz
md5sum = dd4e3360e28aec5bb902fb34dd7fce3b
url = https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.17.1.tar.xz
md5sum = 5179245515c637357b4a134e8d4e9a6f
configure-options =
--with-curl=${curl:location}
--with-openssl=${openssl:location}
......
......@@ -35,8 +35,8 @@ make-targets= cd src && ./make.bash && cp -alf .. ${:location}
[golang19]
<= golang-common
url = https://dl.google.com/go/go1.9.4.src.tar.gz
md5sum = 6816441fd6680c63865cdd5cb8bc1960
url = https://dl.google.com/go/go1.9.7.src.tar.gz
md5sum = 3c2cf876ed6612a022574a565206c6ea
# go1.9 needs go1.4 to bootstrap
environment-extra =
......
......@@ -10,3 +10,4 @@ md5sum = 085b6aa253e0f91cae70b3cdbe8c1ac2
configure-options =
--disable-static
--enable-unicode-properties
--enable-jit
Generally things to be done with ``caddy-frontend``:
* tests: drop APACHE switches, as it is not taken care anymore
* tests: add assertion with results of promises in etc/promise for each partition
* check the whole frontend slave snippet with ``caddy -validate`` during buildout run, and reject if does not pass validation
* ``apache-ca-certificate`` shall be merged with ``apache-certificate``
......
......@@ -26,7 +26,7 @@ md5sum = 750e2b1c922bf14511a3bc8a42468b1b
[template-apache-replicate]
filename = instance-apache-replicate.cfg.in
md5sum = e5e537052c533c6d6f1c2197428f77fd
md5sum = 1576859772052bcb85ff2b5a7b786410
[template-slave-list]
filename = templates/apache-custom-slave-list.cfg.in
......@@ -38,7 +38,7 @@ md5sum = 54ae95597a126ae552c3a913ddf29e5e
[template-replicate-publish-slave-information]
filename = templates/replicate-publish-slave-information.cfg.in
md5sum = 6a308c29b54d53cfd82ae23ba77a35dd
md5sum = 01efde8febafcff6dde2ebb43e75a9e4
[template-caddy-frontend-configuration]
filename = templates/Caddyfile.in
......
......@@ -66,24 +66,25 @@ context =
{% set authorized_slave_string = slapparameter_dict.pop('-frontend-authorized-slave-string', '') %}
{% set authorized_slave_list = [] %}
{% set rejected_slave_list = [] %}
{% set rejected_slave_dict = {} %}
{% set used_host_list = [] %}
{% set unauthorised_message = 'slave not authorised' %}
{% for slave in slave_instance_list %}
{% set slave_dict = {'state': True} %}
{% set slave_error_list = [] %}
{# BBB: apache_custom_https AND apache_custom_http #}
{% set custom_domain = slave.get('custom_domain') %}
{% if custom_domain and custom_domain in used_host_list %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('custom_domain %r clashes' % (custom_domain,)) %}
{% else %}
{% do used_host_list.append(custom_domain) %}
{% endif %}
{% if slave.get('server-alias') %}
{% for slave_alias in slave['server-alias'].split() %}
{% if not validators.domain(slave_alias) %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('server-alias %r not valid' % (slave_alias,)) %}
{% else %}
{% if slave_alias in used_host_list %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('server-alias %r clashes' % (slave_alias,)) %}
{% else %}
{% do used_host_list.append(slave_alias) %}
{% endif %}
......@@ -93,20 +94,22 @@ context =
{% for key in ['caddy_custom_http', 'caddy_custom_https', 'apache_custom_http', 'apache_custom_https'] %}
{% if slave.get(key) %}
{% if not slave.get('slave_reference') in authorized_slave_string %}
{% do slave_dict.__setitem__('state', False) %}
{% if not unauthorised_message in slave_error_list %}
{% do slave_error_list.append(unauthorised_message) %}
{% endif %}
{% elif subprocess_module.call([caddy_custom_http_validator, slave[key]]) == 1 %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('slave %s configuration invalid' % (key,)) %}
{% endif %}
{% endif %}
{% endfor %} {# for key in ['caddy_custom_http', 'caddy_custom_https', 'apache_custom_http', 'apache_custom_https'] #}
{% if slave.get('url') %}
{% if subprocess_module.call([caddy_backend_url_validator, slave['url']]) == 1 %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('slave url %r invalid' % (slave['url'],)) %}
{% endif %}
{% endif %}
{% if slave.get('https-url') %}
{% if subprocess_module.call([caddy_backend_url_validator, slave['https-url']]) == 1 %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('slave https-url %r invalid' % (slave['https-url'],)) %}
{% endif %}
{% endif %}
{% if slave.get('ssl_key') and slave.get('ssl_crt') %}
......@@ -115,18 +118,18 @@ context =
{% set key_modulus = key_popen.communicate(slave['ssl_key'])[0] | trim %}
{% set crt_modulus = crt_popen.communicate(slave['ssl_crt'])[0] | trim %}
{% if not key_modulus or key_modulus != crt_modulus %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('slave ssl_key and ssl_crt does not match') %}
{% endif %}
{% endif %}
{% if slave.get('custom_domain') %}
{% if not validators.domain(slave['custom_domain']) %}
{% do slave_dict.__setitem__('state', False) %}
{% do slave_error_list.append('custom_domain %r invalid' % (slave['custom_domain'],)) %}
{% endif %}
{% endif %}
{% if slave_dict['state'] %}
{% if len(slave_error_list) == 0 %}
{% do authorized_slave_list.append(slave) %}
{% else %}
{% do rejected_slave_list.append(slave.get('slave_reference')) %}
{% do rejected_slave_dict.__setitem__(slave.get('slave_reference'), slave_error_list) %}
{% endif %}
{% endfor %}
......@@ -177,8 +180,8 @@ recipe = slapos.cookbook:publish
domain = {{ slapparameter_dict.get('domain') }}
slave-amount = {{ slave_instance_list | length }}
accepted-slave-amount = {{ authorized_slave_list | length }}
rejected-slave-amount = {{ rejected_slave_list | length }}
rejected-slave-list = {{ json_module.dumps(rejected_slave_list) }}
rejected-slave-amount = {{ rejected_slave_dict | length }}
rejected-slave-dict = {{ dumps(json_module.dumps(rejected_slave_dict)) }}
#----------------------------
#--
......@@ -191,6 +194,11 @@ replicate = ${dynamic-publish-slave-information:rendered}
custom-personal = ${dynamic-publish-slave-information:rendered}
custom-group = ${dynamic-publish-slave-information:rendered}
[rejected-slave-information]
{% for slave_id, rejected_list in rejected_slave_dict.iteritems() %}
{{ slave_id }} = {{ dumps(json_module.dumps(rejected_list)) }}
{% endfor %}
[slave-information]
{% for frontend_section in frontend_section_list %}
{{ frontend_section }} = {{ "${%s:connection-slave-instance-information-list}" % frontend_section }}
......@@ -203,6 +211,7 @@ filename = dynamic-publish-slave-information.cfg
extensions = jinja2.ext.do
extra-context =
section slave_information slave-information
section rejected_slave_information rejected-slave-information
[monitor-conf-parameters]
monitor-url-list +=
......
......@@ -26,12 +26,12 @@
"description": "User to access the monitor",
"type": "string"
},
"reject-slave-amount": {
"rejected-slave-amount": {
"description": "Rejected Amount of Slaves allocated to the Instance which are not deployed",
"type": "integer"
},
"rejected-slave-list": {
"description": "List of slave instances references which are rejected",
"rejected-slave-dict": {
"description": "Dict of slaves which were rejected. Keys are slave references, values are lists of errors on slaves.",
"type": "array"
},
"slave-amount": {
......
......@@ -29,6 +29,10 @@
"url": {
"description": "Default URL provided",
"type": "string"
},
"request-error-list": {
"description": "In case if slave has been rejected by master or has error in the request, the list contains information about each problem",
"type": "string"
}
},
"type": "object"
......
......@@ -27,6 +27,13 @@
{% endfor %}
{% endfor %}
{% for slave_reference, rejected_info_list in rejected_slave_information.iteritems() %}
{% if slave_reference not in slave_information_dict %}
{% do slave_information_dict.__setitem__(slave_reference, {}) %}
{% endif %}
{% do slave_information_dict[slave_reference].__setitem__('request-error-list', rejected_info_list) %}
{% endfor %}
# Publish information for each slave
{% for slave_reference, slave_information in slave_information_dict.iteritems() %}
{% set publish_section_title = 'publish-%s' % slave_reference %}
......@@ -34,9 +41,12 @@
[{{ publish_section_title }}]
recipe = slapos.cookbook:publish
-slave-reference = {{ slave_reference }}
log-access-url = {{ json_module.dumps(slave_information.pop('log-access-urls', 1000)) }}
{% set log_access_url = slave_information.pop('log-access-urls', None) %}
{% if log_access_url %}
log-access-url = {{ dumps(json_module.dumps(log_access_url)) }}
{% endif %}
{% for key, value in slave_information.iteritems() %}
{{ key }} = {{ value }}
{{ key }} = {{ dumps(value) }}
{% endfor %}
{% endfor %}
......
......@@ -36,11 +36,12 @@
import glob
import os
import requests
import httplib
from requests_toolbelt.adapters import source
import json
import multiprocessing
import subprocess
from unittest import skipIf, skip
from unittest import skip
import ssl
from BaseHTTPServer import HTTPServer
from BaseHTTPServer import BaseHTTPRequestHandler
......@@ -63,116 +64,6 @@ MONITOR_F1_HTTPD_PORT = '13001'
MONITOR_F2_HTTPD_PORT = '13002'
if os.environ['TEST_SR'].endswith('caddy-frontend/software.cfg'):
IS_CADDY = True
else:
IS_CADDY = False
# response_code difference
if IS_CADDY:
no_backend_response_code = 404
else:
no_backend_response_code = 502
caddy_custom_https = '''# caddy_custom_https_filled_in_accepted
https://caddycustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
caddy_custom_http = '''# caddy_custom_http_filled_in_accepted
http://caddycustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
# apache_custom_http[s] difference
if IS_CADDY:
LOG_REGEXP = '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} SOME_REMOTE_USER ' \
'\[\d{2}\/.{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4}\] ' \
'"GET \/test-path HTTP\/1.1" 404 \d+ "-" "python-requests.*" \d+'
apache_custom_https = '''# apache_custom_https_filled_in_accepted
https://apachecustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
apache_custom_http = '''# apache_custom_http_filled_in_accepted
http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
else:
LOG_REGEXP = '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} - - ' \
'\[\d{2}\/.{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4}\] ' \
'"GET \/test-path HTTP\/1.1" 502 \d+ "-" "python-requests.*" \d+'
apache_custom_https = '''# apache_custom_https_filled_in_accepted
ServerName apachecustomhttpsaccepted.example.com
ServerAlias apachecustomhttpsaccepted.example.com
SSLEngine on
SSLProxyEngine on
ErrorLog %%(error_log)s
LogLevel notice
CustomLog %%(access_log)s combined
# Rewrite part
ProxyPreserveHost On
ProxyTimeout 600
RewriteEngine On
RewriteRule ^/(.*)$ %(url)s/$1 [L,P]
'''
apache_custom_http = '''# apache_custom_http_filled_in_accepted
ServerName apachecustomhttpsaccepted.example.com
ServerAlias apachecustomhttpsaccepted.example.com
ErrorLog %%(error_log)s
LogLevel notice
CustomLog %%(access_log)s combined
# Rewrite part
ProxyPreserveHost On
ProxyTimeout 600
RewriteEngine On
RewriteRule ^/(.*)$ %(url)s/$1 [L,P]
'''
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
import logging
......@@ -212,7 +103,7 @@ class TestDataMixin(object):
in self.getSupervisorRPCServer().supervisor.getAllProcessInfo()]))
def assertTestData(self, runtime_data):
filename = '%s-%s.txt' % (self.id(), self.frontend_type)
filename = '%s-%s.txt' % (self.id(), 'CADDY')
test_data_file = os.path.join(
os.path.dirname(os.path.realpath(__file__)), 'test_data', filename)
......@@ -291,7 +182,6 @@ class TestDataMixin(object):
'monitor/monitor-collect.pid',
])
@skipIf(not IS_CADDY, 'Feature not needed for Apache')
def test_supervisor_state(self):
# give a chance for etc/run scripts to finish
time.sleep(1)
......@@ -300,8 +190,6 @@ class TestDataMixin(object):
class HttpFrontendTestCase(SlapOSInstanceTestCase):
frontend_type = 'CADDY' if IS_CADDY else 'APACHE'
@classmethod
def getSoftwareURLList(cls):
return [os.path.realpath(os.environ['TEST_SR'])]
......@@ -374,7 +262,7 @@ class TestMasterRequest(HttpFrontendTestCase, TestDataMixin):
'accepted-slave-amount': '0',
'rejected-slave-amount': '0',
'slave-amount': '0',
'rejected-slave-list': '[]'},
'rejected-slave-dict': '{}'},
parameter_dict
)
......@@ -408,7 +296,7 @@ class TestMasterRequestDomain(HttpFrontendTestCase, TestDataMixin):
'accepted-slave-amount': '0',
'rejected-slave-amount': '0',
'slave-amount': '0',
'rejected-slave-list': '[]'
'rejected-slave-dict': '{}'
},
parameter_dict
)
......@@ -576,6 +464,66 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase):
class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
caddy_custom_https = '''# caddy_custom_https_filled_in_accepted
https://caddycustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
caddy_custom_http = '''# caddy_custom_http_filled_in_accepted
http://caddycustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
apache_custom_https = '''# apache_custom_https_filled_in_accepted
https://apachecustomhttpsaccepted.example.com:%%(https_port)s {
bind %%(local_ipv4)s
tls %%(ssl_crt)s %%(ssl_key)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
apache_custom_http = '''# apache_custom_http_filled_in_accepted
http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
bind %%(local_ipv4)s
log / %%(access_log)s {combined}
errors %%(error_log)s
proxy / %(url)s {
transparent
timeout 600s
insecure_skip_verify
}
}
'''
@classmethod
def getInstanceParameterDict(cls):
return {
......@@ -720,8 +668,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
},
'apache_custom_http_s-accepted': {
'url': cls.backend_url,
'apache_custom_https': apache_custom_https % dict(url=cls.backend_url),
'apache_custom_http': apache_custom_http % dict(url=cls.backend_url),
'apache_custom_https': cls.apache_custom_https % dict(
url=cls.backend_url),
'apache_custom_http': cls.apache_custom_http % dict(
url=cls.backend_url),
},
'caddy_custom_http_s-rejected': {
'url': cls.backend_url,
......@@ -730,8 +680,10 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
},
'caddy_custom_http_s-accepted': {
'url': cls.backend_url,
'caddy_custom_https': caddy_custom_https % dict(url=cls.backend_url),
'caddy_custom_http': caddy_custom_http % dict(url=cls.backend_url),
'caddy_custom_https': cls.caddy_custom_https % dict(
url=cls.backend_url),
'caddy_custom_http': cls.caddy_custom_http % dict(
url=cls.backend_url),
},
'prefer-gzip-encoding-to-backend': {
'url': cls.backend_url,
......@@ -769,24 +721,16 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
parameter_dict = self.computer_partition.getConnectionParameterDict()
self.assertKeyWithPop('monitor-setup-url', parameter_dict)
if IS_CADDY:
expected_parameter_dict = {
'monitor-base-url': None,
'domain': 'example.com',
'accepted-slave-amount': '33',
'rejected-slave-amount': '2',
'slave-amount': '35',
'rejected-slave-list':
'["_caddy_custom_http_s-rejected", "_apache_custom_http_s-rejected"]'}
else:
expected_parameter_dict = {
'monitor-base-url': None,
'domain': 'example.com',
'accepted-slave-amount': '34',
'rejected-slave-amount': '1',
'slave-amount': '35',
'rejected-slave-list':
'["_apache_custom_http_s-rejected"]'}
'rejected-slave-dict':
'{"_apache_custom_http_s-rejected": ["slave not authorised"], '
'"_caddy_custom_http_s-rejected": ["slave not authorised"]}'
}
self.assertEqual(
expected_parameter_dict,
......@@ -837,7 +781,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
set([0])
)
@skipIf(not IS_CADDY, 'Will NOT be covered on apache-frontend')
def test_slave_partition_state(self):
partition_path = self.getSlavePartitionPath()
self.assertTrue(
......@@ -873,7 +816,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
# check that log file contains verbose log
log_file = glob.glob(
......@@ -881,17 +824,22 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.instance_path, '*', 'var', 'log', 'httpd', '_empty_access_log'
))[0]
log_regexp = '^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} SOME_REMOTE_USER ' \
'\[\d{2}\/.{3}\/\d{4}\:\d{2}\:\d{2}\:\d{2} \+\d{4}\] ' \
'"GET \/test-path HTTP\/1.1" 404 \d+ "-" '\
'"python-requests.*" \d+'
self.assertRegexpMatches(
open(log_file, 'r').read(),
LOG_REGEXP)
log_regexp)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code)
self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# check that 404 is as configured
result_missing = self.fakeHTTPSResult(
'forsuredoesnotexists.example.com', parameter_dict['public-ipv4'], '')
self.assertEqual(404, result_missing.status_code)
self.assertEqual(httplib.NOT_FOUND, result_missing.status_code)
self.assertEqual(
"""<html>
<head>
......@@ -968,7 +916,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
'secured=value;secure, nonsecured=value'
)
@skipIf(IS_CADDY, 'Feature postponed')
@skip('Feature postponed')
def test_url_ipv6_access(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'url'].copy()
......@@ -1339,7 +1287,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
# merge with apache-certificate
raise NotImplementedError
@skipIf(IS_CADDY, 'Feature postponed')
@skip('Feature postponed')
def test_type_eventsource(self):
# Caddy: For event source, if I understand
# https://github.com/mholt/caddy/issues/1355 correctly, we could use
......@@ -1440,10 +1388,9 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
if IS_CADDY:
self.assertEqual(
result.status_code,
501
httplib.NOT_IMPLEMENTED
)
result_http = self.fakeHTTPResult(
......@@ -1451,45 +1398,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual(
result_http.status_code,
501
)
else:
self.assertEqualResultJson(result, 'Path', '/test-path')
try:
j = result.json()
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (result.text,))
self.assertFalse('remote_user' in j['Incoming Headers'].keys())
self.assertEqual(
result.headers['Content-Encoding'],
'gzip'
)
self.assertEqual(
result.headers['Set-Cookie'],
'secured=value;secure, nonsecured=value'
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqualResultJson(result_http, 'Path', '/test-path')
try:
j = result_http.json()
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (result.text,))
self.assertFalse('remote_user' in j['Incoming Headers'].keys())
self.assertEqual(
result_http.headers['Content-Encoding'],
'gzip'
)
self.assertEqual(
result_http.headers['Set-Cookie'],
'secured=value;secure, nonsecured=value'
httplib.NOT_IMPLEMENTED
)
def test_ssl_proxy_verify_unverified(self):
......@@ -1549,10 +1458,9 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
if IS_CADDY:
self.assertEqual(
result.status_code,
501
httplib.NOT_IMPLEMENTED
)
result_http = self.fakeHTTPResult(
......@@ -1560,52 +1468,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual(
result_http.status_code,
501
)
else:
self.assertEqualResultJson(result, 'Path', '/test-path')
headers = result.headers.copy()
self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
# drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None)
headers.pop('Content-Length', None)
headers.pop('Connection', None)
headers.pop('Keep-Alive', None)
self.assertEqual(
headers,
{'Age': '0', 'Content-type': 'application/json',
'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip',
'Set-Cookie': 'secured=value;secure, nonsecured=value'}
)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqualResultJson(result_http, 'Path', '/test-path')
headers = result_http.headers.copy()
self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
# drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None)
headers.pop('Content-Length', None)
headers.pop('Connection', None)
headers.pop('Keep-Alive', None)
self.assertEqual(
headers,
{'Age': '0', 'Content-type': 'application/json',
'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip',
'Set-Cookie': 'secured=value;secure, nonsecured=value'}
httplib.NOT_IMPLEMENTED
)
def test_enable_cache_ssl_proxy_verify_unverified(self):
......@@ -1665,10 +1528,9 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
if IS_CADDY:
self.assertEqual(
result.status_code,
501
httplib.NOT_IMPLEMENTED
)
result_http = self.fakeHTTPResult(
......@@ -1676,30 +1538,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual(
result_http.status_code,
501
)
else:
try:
j = result.json()
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (result.text,))
self.assertFalse('remote_user' in j['Incoming Headers'].keys())
self.assertEqualResultJson(
result,
'Path',
'/VirtualHostBase/https//typezopesslproxyverifysslproxycacrt.example'
'.com:443//VirtualHostRoot/test-path'
)
result = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqualResultJson(
result,
'Path',
'/VirtualHostBase/http//typezopesslproxyverifysslproxycacrt.example'
'.com:80//VirtualHostRoot/test-path'
httplib.NOT_IMPLEMENTED
)
def test_type_zope_ssl_proxy_verify_unverified(self):
......@@ -1756,11 +1595,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code)
self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost
open(
......@@ -1799,11 +1638,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code)
self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost
open(
......@@ -1842,11 +1681,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code)
self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost
open(
......@@ -1893,6 +1732,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
self.assertKeyWithPop('Age', headers)
# drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None)
......@@ -1902,7 +1742,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual(
headers,
{'Age': '0', 'Content-type': 'application/json',
{'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value',
'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
)
......@@ -1986,6 +1826,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Via', headers)
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
self.assertKeyWithPop('Age', headers)
# drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None)
......@@ -1995,7 +1836,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual(
headers,
{'Age': '0', 'Content-type': 'application/json',
{'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value',
'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
)
......@@ -2037,6 +1878,7 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Server', headers)
self.assertKeyWithPop('Date', headers)
self.assertKeyWithPop('Age', headers)
# drop keys appearing randomly in headers
headers.pop('Transfer-Encoding', None)
......@@ -2046,12 +1888,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertEqual(
headers,
{'Age': '0', 'Content-type': 'application/json',
{'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value',
'Content-Encoding': 'gzip', 'Vary': 'Accept-Encoding'}
)
@skipIf(not IS_CADDY, 'Will NOT be fixed for apache-frontend')
def test_enable_http2_false(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'enable-http2-false']
......@@ -2228,7 +2069,11 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
def test_apache_custom_http_s_rejected(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'apache_custom_http_s-rejected']
self.assertEqual({}, parameter_dict)
self.assertEqual(
{
'request-error-list': '["slave not authorised"]'
},
parameter_dict)
slave_configuration_file_list = glob.glob(os.path.join(
self.instance_path, '*', 'etc', '*slave-conf.d', '*.conf'))
# no configuration file contains provided custom http
......@@ -2273,7 +2118,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
headers.pop('Connection', None)
headers.pop('Keep-Alive', None)
if IS_CADDY:
self.assertEqual(
headers,
{
......@@ -2281,15 +2125,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
'Set-Cookie': 'secured=value;secure, nonsecured=value'
}
)
else:
self.assertEqual(
headers,
{
'Vary': 'Accept-Encoding', 'Content-Encoding': 'gzip',
'Content-type': 'application/json',
'Set-Cookie': 'secured=value;secure, nonsecured=value'
}
)
result_http = self.fakeHTTPResult(
'apachecustomhttpsaccepted.example.com',
......@@ -2309,11 +2144,14 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
if 'apache_custom_http_filled_in_accepted' in open(q).read()]
self.assertEqual(1, len(configuration_file_with_custom_http_list))
@skipIf(not IS_CADDY, 'Feature not applicable')
def test_caddy_custom_http_s_rejected(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'caddy_custom_http_s-rejected']
self.assertEqual({}, parameter_dict)
self.assertEqual(
{
'request-error-list': '["slave not authorised"]'
},
parameter_dict)
slave_configuration_file_list = glob.glob(os.path.join(
self.instance_path, '*', 'etc', '*slave-conf.d', '*.conf'))
# no configuration file contains provided custom http
......@@ -2327,7 +2165,6 @@ class TestSlave(SlaveHttpFrontendTestCase, TestDataMixin):
if 'caddy_custom_http_filled_in_rejected' in open(q).read()]
self.assertEqual([], configuration_file_with_custom_http_list)
@skipIf(not IS_CADDY, 'Feature not applicable')
def test_caddy_custom_http_s_accepted(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'caddy_custom_http_s-accepted']
......@@ -2486,7 +2323,6 @@ class TestReplicateSlave(SlaveHttpFrontendTestCase, TestDataMixin):
2, len(slave_configuration_file_list), slave_configuration_file_list)
@skipIf(not IS_CADDY, 'Will NOT be fixed for apache-frontend')
class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
TestDataMixin):
@classmethod
......@@ -2580,7 +2416,6 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
isHTTP2(parameter_dict['domain'], parameter_dict['public-ipv4']))
@skipIf(not IS_CADDY, 'Will NOT be fixed for apache-frontend')
class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase,
TestDataMixin):
@classmethod
......@@ -2813,7 +2648,11 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase,
'accepted-slave-amount': '1',
'rejected-slave-amount': '2',
'slave-amount': '3',
'rejected-slave-list': '["_url", "_https-url"]'}
'rejected-slave-dict':
'{"_https-url": ["slave https-url \\"https://[fd46::c2ae]:!py!u\'123123'
'\'\\" invalid"], "_url": ["slave url \\"https://[fd46::c2ae]:!py!u\''
'123123\'\\" invalid"]}'
}
self.assertEqual(
expected_parameter_dict,
......@@ -2843,20 +2682,28 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase,
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
def test_url(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'url'].copy()
self.assertEqual(
parameter_dict, {}
parameter_dict,
{
'request-error-list': '["slave url \\"https://[fd46::c2ae]:!py!'
'u\'123123\'\\" invalid"]'
}
)
def test_https_url(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'https-url'].copy()
self.assertEqual(
parameter_dict, {}
parameter_dict,
{
'request-error-list': '["slave https-url \\"https://[fd46::c2ae]:'
'!py!u\'123123\'\\" invalid"]'
}
)
......@@ -3092,9 +2939,15 @@ https://www.google.com {}""",
'accepted-slave-amount': '8',
'rejected-slave-amount': '4',
'slave-amount': '12',
'rejected-slave-list':
'["_caddy_custom_http_s-reject", "_ssl_key-ssl_crt-unsafe", '
'"_custom_domain-unsafe", "_server-alias-unsafe"]'}
'rejected-slave-dict':
'{"_caddy_custom_http_s-reject": ["slave caddy_custom_http '
'configuration invalid", "slave caddy_custom_https configuration '
'invalid"], "_server-alias-unsafe": ["server-alias \'${section:option}\''
' not valid", "server-alias \'afterspace\' not valid"], '
'"_custom_domain-unsafe": ["custom_domain \'${section:option} '
'afterspace\\\\nafternewline\' invalid"], "_ssl_key-ssl_crt-unsafe": '
'["slave ssl_key and ssl_crt does not match"]}'
}
self.assertEqual(
expected_parameter_dict,
......@@ -3149,7 +3002,7 @@ https://www.google.com {}""",
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost
open(
......@@ -3194,7 +3047,7 @@ https://www.google.com {}""",
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
# assert that there is no nocomma file
monitor_file_list = glob.glob(
......@@ -3211,7 +3064,11 @@ https://www.google.com {}""",
'custom_domain-unsafe']
self.assertEqual(
parameter_dict,
{}
{
'request-error-list':
'["custom_domain \'${section:option} afterspace\\\\nafternewline\' '
'invalid"]'
}
)
def test_server_alias_unsafe(self):
......@@ -3219,7 +3076,11 @@ https://www.google.com {}""",
'server-alias-unsafe']
self.assertEqual(
parameter_dict,
{}
{
'request-error-list':
'["server-alias \'${section:option}\' not valid", "server-alias '
'\'afterspace\' not valid"]'
}
)
def test_virtualhostroot_http_port_unsafe(self):
......@@ -3334,11 +3195,11 @@ https://www.google.com {}""",
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code)
self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost
open(
......@@ -3377,11 +3238,11 @@ https://www.google.com {}""",
der2pem(result.peercert),
open('wildcard.example.com.crt').read())
self.assertEqual(result.status_code, no_backend_response_code)
self.assertEqual(result.status_code, httplib.NOT_FOUND)
result_http = self.fakeHTTPResult(
parameter_dict['domain'], parameter_dict['public-ipv4'], 'test-path')
self.assertEqual(result_http.status_code, no_backend_response_code)
self.assertEqual(result_http.status_code, httplib.NOT_FOUND)
# rewrite SR/bin/is-icmp-packet-lost
open(
......@@ -3402,7 +3263,7 @@ https://www.google.com {}""",
'ssl_key-ssl_crt-unsafe']
self.assertEqual(
parameter_dict,
{}
{'request-error-list': '["slave ssl_key and ssl_crt does not match"]'}
)
def test_caddy_custom_http_s_reject(self):
......@@ -3410,7 +3271,11 @@ https://www.google.com {}""",
'caddy_custom_http_s-reject']
self.assertEqual(
parameter_dict,
{}
{
'request-error-list':
'["slave caddy_custom_http configuration invalid", '
'"slave caddy_custom_https configuration invalid"]'
}
)
......@@ -3461,13 +3326,29 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
'accepted-slave-amount': '1',
'rejected-slave-amount': '3',
'slave-amount': '4',
'rejected-slave-list': '["_site_3", "_site_1", "_site_4"]'}
'rejected-slave-dict':
'{"_site_4": ["custom_domain \'duplicate.example.com\' clashes", '
'"server-alias \'duplicate.example.com\' clashes"], "_site_1": '
'["custom_domain \'duplicate.example.com\' clashes"], "_site_3": '
'["server-alias \'duplicate.example.com\' clashes"]}'
}
self.assertEqual(
expected_parameter_dict,
parameter_dict
)
def test_site_1(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_1']
self.assertEqual(
parameter_dict,
{
'request-error-list':
'["custom_domain \'duplicate.example.com\' clashes"]'
}
)
def test_site_2(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_2']
......@@ -3483,3 +3364,26 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
'public-ipv4': LOCAL_IPV4,
}
)
def test_site_3(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_3']
self.assertEqual(
parameter_dict,
{
'request-error-list':
'["server-alias \'duplicate.example.com\' clashes"]'
}
)
def test_site_4(self):
parameter_dict = self.slave_connection_parameter_dict_dict[
'site_4']
self.assertEqual(
parameter_dict,
{
'request-error-list':
'["custom_domain \'duplicate.example.com\' clashes", "server-alias '
'\'duplicate.example.com\' clashes"]'
}
)
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/frontend-apache-access.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/frontend-apache-error.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-default_access_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-default_error_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-false_access_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-false_error_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-true_access_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/httpd/_enable-http2-true_error_log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/monitor-httpd-error.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/nginx-access.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/nginx-error.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/trafficserver/manager.log
TestEnableHttp2ByDefaultDefaultSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/apache_configuration.signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/httpd.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/napache_configuration.signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx.pid
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultDefaultSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-hour
\ No newline at end of file
TestEnableHttp2ByDefaultDefaultSlave-0/etc/promise/check-free-disk-space
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/apache-frontend-is-running-actual-software-release
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache-mpm-watchdog
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv4_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv4_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv6_http
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_frontend_ipv6_https
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/apache_ssl_cached
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultDefaultSlave-1/etc/promise/frontend-apache-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:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultDefaultSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:crond RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:crond-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:frontend-apache-safe-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:frontend-nginx-safe-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:frontend_apache-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:frontend_nginx-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:trafficserver-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-1/var/log/frontend-apache-access.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/frontend-apache-error.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-default_access_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-default_error_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-false_access_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-false_error_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-true_access_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/httpd/_enable-http2-true_error_log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/monitor-httpd-error.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/nginx-access.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/nginx-error.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/trafficserver/manager.log
TestEnableHttp2ByDefaultFalseSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-0/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/apache_configuration.signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/httpd.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/napache_configuration.signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx.pid
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-hour
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-day
TestEnableHttp2ByDefaultFalseSlave-1/etc/monitor-promise/check-_enable-http2-true-error-log-last-hour
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultFalseSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache-mpm-watchdog
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_cached
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv4_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv4_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv6_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_frontend_ipv6_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/apache_ssl_cached
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/check-free-disk-space
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/frontend-apache-configuration-promise
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/monitor-http-frontend
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx-configuration-promise
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv4_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv4_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv6_http
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/nginx_frontend_ipv6_https
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/re6st-connectivity
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/trafficserver-cache-availability
TestEnableHttp2ByDefaultFalseSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestEnableHttp2ByDefaultFalseSlave-0:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultFalseSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:crond RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultFalseSlave-1:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:crond-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:frontend-apache-safe-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:frontend-nginx-safe-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:frontend_apache-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:frontend_nginx-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:monitor-httpd-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:trafficserver-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestMasterRequest-1/var/log/frontend-apache-access.log
TestMasterRequest-1/var/log/frontend-apache-error.log
TestMasterRequest-1/var/log/monitor-httpd-error.log
TestMasterRequest-1/var/log/nginx-access.log
TestMasterRequest-1/var/log/nginx-error.log
TestMasterRequest-1/var/log/trafficserver/manager.log
TestMasterRequest-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestMasterRequest-0/var/run/monitor/monitor-bootstrap.pid
TestMasterRequest-1/var/run/apache_configuration.signature
TestMasterRequest-1/var/run/httpd.pid
TestMasterRequest-1/var/run/monitor-httpd.pid
TestMasterRequest-1/var/run/monitor/monitor-bootstrap.pid
TestMasterRequest-1/var/run/napache_configuration.signature
TestMasterRequest-1/var/run/nginx.pid
\ No newline at end of file
TestMasterRequest-0/etc/promise/check-free-disk-space
TestMasterRequest-0/etc/promise/monitor-http-frontend
TestMasterRequest-0/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequest-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequest-1/etc/promise/apache-frontend-is-running-actual-software-release
TestMasterRequest-1/etc/promise/apache-mpm-watchdog
TestMasterRequest-1/etc/promise/apache_cached
TestMasterRequest-1/etc/promise/apache_frontend_ipv4_http
TestMasterRequest-1/etc/promise/apache_frontend_ipv4_https
TestMasterRequest-1/etc/promise/apache_frontend_ipv6_http
TestMasterRequest-1/etc/promise/apache_frontend_ipv6_https
TestMasterRequest-1/etc/promise/apache_ssl_cached
TestMasterRequest-1/etc/promise/check-free-disk-space
TestMasterRequest-1/etc/promise/frontend-apache-configuration-promise
TestMasterRequest-1/etc/promise/monitor-http-frontend
TestMasterRequest-1/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequest-1/etc/promise/nginx-configuration-promise
TestMasterRequest-1/etc/promise/nginx_frontend_ipv4_http
TestMasterRequest-1/etc/promise/nginx_frontend_ipv4_https
TestMasterRequest-1/etc/promise/nginx_frontend_ipv6_http
TestMasterRequest-1/etc/promise/nginx_frontend_ipv6_https
TestMasterRequest-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequest-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestMasterRequest-1/etc/promise/re6st-connectivity
TestMasterRequest-1/etc/promise/trafficserver-cache-availability
TestMasterRequest-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestMasterRequest-0:bootstrap-monitor EXITED
TestMasterRequest-0:certificate_authority-on-watch RUNNING
TestMasterRequest-0:crond RUNNING
TestMasterRequest-0:monitor-httpd-graceful EXITED
TestMasterRequest-0:monitor-httpd-on-watch RUNNING
TestMasterRequest-1:bootstrap-monitor EXITED
TestMasterRequest-1:certificate_authority-on-watch RUNNING
TestMasterRequest-1:crond-on-watch RUNNING
TestMasterRequest-1:frontend-apache-safe-graceful EXITED
TestMasterRequest-1:frontend-nginx-safe-graceful EXITED
TestMasterRequest-1:frontend_apache-on-watch RUNNING
TestMasterRequest-1:frontend_nginx-on-watch RUNNING
TestMasterRequest-1:monitor-httpd-graceful EXITED
TestMasterRequest-1:monitor-httpd-on-watch RUNNING
TestMasterRequest-1:trafficserver-on-watch RUNNING
TestMasterRequest-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestMasterRequestDomain-1/var/log/frontend-apache-access.log
TestMasterRequestDomain-1/var/log/frontend-apache-error.log
TestMasterRequestDomain-1/var/log/monitor-httpd-error.log
TestMasterRequestDomain-1/var/log/nginx-access.log
TestMasterRequestDomain-1/var/log/nginx-error.log
TestMasterRequestDomain-1/var/log/trafficserver/manager.log
TestMasterRequestDomain-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestMasterRequestDomain-0/var/run/monitor/monitor-bootstrap.pid
TestMasterRequestDomain-1/var/run/apache_configuration.signature
TestMasterRequestDomain-1/var/run/httpd.pid
TestMasterRequestDomain-1/var/run/monitor-httpd.pid
TestMasterRequestDomain-1/var/run/monitor/monitor-bootstrap.pid
TestMasterRequestDomain-1/var/run/napache_configuration.signature
TestMasterRequestDomain-1/var/run/nginx.pid
\ No newline at end of file
TestMasterRequestDomain-0/etc/promise/check-free-disk-space
TestMasterRequestDomain-0/etc/promise/monitor-http-frontend
TestMasterRequestDomain-0/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequestDomain-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequestDomain-1/etc/promise/apache-frontend-is-running-actual-software-release
TestMasterRequestDomain-1/etc/promise/apache-mpm-watchdog
TestMasterRequestDomain-1/etc/promise/apache_cached
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv4_http
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv4_https
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv6_http
TestMasterRequestDomain-1/etc/promise/apache_frontend_ipv6_https
TestMasterRequestDomain-1/etc/promise/apache_ssl_cached
TestMasterRequestDomain-1/etc/promise/check-free-disk-space
TestMasterRequestDomain-1/etc/promise/frontend-apache-configuration-promise
TestMasterRequestDomain-1/etc/promise/monitor-http-frontend
TestMasterRequestDomain-1/etc/promise/monitor-httpd-listening-on-tcp
TestMasterRequestDomain-1/etc/promise/nginx-configuration-promise
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv4_http
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv4_https
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv6_http
TestMasterRequestDomain-1/etc/promise/nginx_frontend_ipv6_https
TestMasterRequestDomain-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestMasterRequestDomain-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestMasterRequestDomain-1/etc/promise/re6st-connectivity
TestMasterRequestDomain-1/etc/promise/trafficserver-cache-availability
TestMasterRequestDomain-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestMasterRequestDomain-0:bootstrap-monitor EXITED
TestMasterRequestDomain-0:certificate_authority-on-watch RUNNING
TestMasterRequestDomain-0:crond RUNNING
TestMasterRequestDomain-0:monitor-httpd-graceful EXITED
TestMasterRequestDomain-0:monitor-httpd-on-watch RUNNING
TestMasterRequestDomain-1:bootstrap-monitor EXITED
TestMasterRequestDomain-1:certificate_authority-on-watch RUNNING
TestMasterRequestDomain-1:crond-on-watch RUNNING
TestMasterRequestDomain-1:frontend-apache-safe-graceful EXITED
TestMasterRequestDomain-1:frontend-nginx-safe-graceful EXITED
TestMasterRequestDomain-1:frontend_apache-on-watch RUNNING
TestMasterRequestDomain-1:frontend_nginx-on-watch RUNNING
TestMasterRequestDomain-1:monitor-httpd-graceful EXITED
TestMasterRequestDomain-1:monitor-httpd-on-watch RUNNING
TestMasterRequestDomain-1:trafficserver-on-watch RUNNING
TestMasterRequestDomain-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-1/var/log/frontend-apache-access.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/frontend-apache-error.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/httpd/_default_access_log
TestRe6stVerificationUrlDefaultSlave-1/var/log/httpd/_default_error_log
TestRe6stVerificationUrlDefaultSlave-1/var/log/monitor-httpd-error.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/nginx-access.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/nginx-error.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/trafficserver/manager.log
TestRe6stVerificationUrlDefaultSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-0/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/apache_configuration.signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/httpd.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/monitor-httpd.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/napache_configuration.signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx.pid
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-1/etc/monitor-promise/check-_default-error-log-last-day
TestRe6stVerificationUrlDefaultSlave-1/etc/monitor-promise/check-_default-error-log-last-hour
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/check-free-disk-space
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlDefaultSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache-mpm-watchdog
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_cached
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv4_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv4_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv6_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_frontend_ipv6_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/apache_ssl_cached
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/check-free-disk-space
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/frontend-apache-configuration-promise
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx-configuration-promise
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv4_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv4_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv6_http
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/nginx_frontend_ipv6_https
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/re6st-connectivity
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/trafficserver-cache-availability
TestRe6stVerificationUrlDefaultSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestRe6stVerificationUrlDefaultSlave-0:bootstrap-monitor EXITED
TestRe6stVerificationUrlDefaultSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:crond RUNNING
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:bootstrap-monitor EXITED
TestRe6stVerificationUrlDefaultSlave-1:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:crond-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:frontend-apache-safe-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:frontend-nginx-safe-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:frontend_apache-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:frontend_nginx-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:trafficserver-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestRe6stVerificationUrlSlave-1/var/log/frontend-apache-access.log
TestRe6stVerificationUrlSlave-1/var/log/frontend-apache-error.log
TestRe6stVerificationUrlSlave-1/var/log/httpd/_default_access_log
TestRe6stVerificationUrlSlave-1/var/log/httpd/_default_error_log
TestRe6stVerificationUrlSlave-1/var/log/monitor-httpd-error.log
TestRe6stVerificationUrlSlave-1/var/log/nginx-access.log
TestRe6stVerificationUrlSlave-1/var/log/nginx-error.log
TestRe6stVerificationUrlSlave-1/var/log/trafficserver/manager.log
TestRe6stVerificationUrlSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestRe6stVerificationUrlSlave-0/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlSlave-1/var/run/apache_configuration.signature
TestRe6stVerificationUrlSlave-1/var/run/httpd.pid
TestRe6stVerificationUrlSlave-1/var/run/monitor-httpd.pid
TestRe6stVerificationUrlSlave-1/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlSlave-1/var/run/napache_configuration.signature
TestRe6stVerificationUrlSlave-1/var/run/nginx.pid
\ No newline at end of file
TestRe6stVerificationUrlSlave-1/etc/monitor-promise/check-_default-error-log-last-day
TestRe6stVerificationUrlSlave-1/etc/monitor-promise/check-_default-error-log-last-hour
\ No newline at end of file
TestRe6stVerificationUrlSlave-0/etc/promise/check-free-disk-space
TestRe6stVerificationUrlSlave-0/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestRe6stVerificationUrlSlave-1/etc/promise/apache-mpm-watchdog
TestRe6stVerificationUrlSlave-1/etc/promise/apache_cached
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv4_http
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv4_https
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv6_http
TestRe6stVerificationUrlSlave-1/etc/promise/apache_frontend_ipv6_https
TestRe6stVerificationUrlSlave-1/etc/promise/apache_ssl_cached
TestRe6stVerificationUrlSlave-1/etc/promise/check-free-disk-space
TestRe6stVerificationUrlSlave-1/etc/promise/frontend-apache-configuration-promise
TestRe6stVerificationUrlSlave-1/etc/promise/monitor-http-frontend
TestRe6stVerificationUrlSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestRe6stVerificationUrlSlave-1/etc/promise/nginx-configuration-promise
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv4_http
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv4_https
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv6_http
TestRe6stVerificationUrlSlave-1/etc/promise/nginx_frontend_ipv6_https
TestRe6stVerificationUrlSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestRe6stVerificationUrlSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestRe6stVerificationUrlSlave-1/etc/promise/re6st-connectivity
TestRe6stVerificationUrlSlave-1/etc/promise/trafficserver-cache-availability
TestRe6stVerificationUrlSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestRe6stVerificationUrlSlave-0:bootstrap-monitor EXITED
TestRe6stVerificationUrlSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:crond RUNNING
TestRe6stVerificationUrlSlave-0:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlSlave-0:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:bootstrap-monitor EXITED
TestRe6stVerificationUrlSlave-1:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:crond-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:frontend-apache-safe-graceful EXITED
TestRe6stVerificationUrlSlave-1:frontend-nginx-safe-graceful EXITED
TestRe6stVerificationUrlSlave-1:frontend_apache-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:frontend_nginx-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlSlave-1:monitor-httpd-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:trafficserver-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestReplicateSlave-1/var/log/frontend-apache-access.log
TestReplicateSlave-1/var/log/frontend-apache-error.log
TestReplicateSlave-1/var/log/httpd/_replicate_access_log
TestReplicateSlave-1/var/log/httpd/_replicate_error_log
TestReplicateSlave-1/var/log/monitor-httpd-error.log
TestReplicateSlave-1/var/log/nginx-access.log
TestReplicateSlave-1/var/log/nginx-error.log
TestReplicateSlave-1/var/log/trafficserver/manager.log
TestReplicateSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestReplicateSlave-0/var/run/monitor/monitor-bootstrap.pid
TestReplicateSlave-1/var/run/apache_configuration.signature
TestReplicateSlave-1/var/run/httpd.pid
TestReplicateSlave-1/var/run/monitor-httpd.pid
TestReplicateSlave-1/var/run/monitor/monitor-bootstrap.pid
TestReplicateSlave-1/var/run/napache_configuration.signature
TestReplicateSlave-1/var/run/nginx.pid
\ No newline at end of file
TestReplicateSlave-1/etc/monitor-promise/check-_replicate-error-log-last-day
TestReplicateSlave-1/etc/monitor-promise/check-_replicate-error-log-last-hour
TestReplicateSlave-2/etc/monitor-promise/check-_replicate-error-log-last-day
TestReplicateSlave-2/etc/monitor-promise/check-_replicate-error-log-last-hour
\ No newline at end of file
TestReplicateSlave-0/etc/promise/check-free-disk-space
TestReplicateSlave-0/etc/promise/monitor-http-frontend
TestReplicateSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestReplicateSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestReplicateSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestReplicateSlave-1/etc/promise/apache-mpm-watchdog
TestReplicateSlave-1/etc/promise/apache_cached
TestReplicateSlave-1/etc/promise/apache_frontend_ipv4_http
TestReplicateSlave-1/etc/promise/apache_frontend_ipv4_https
TestReplicateSlave-1/etc/promise/apache_frontend_ipv6_http
TestReplicateSlave-1/etc/promise/apache_frontend_ipv6_https
TestReplicateSlave-1/etc/promise/apache_ssl_cached
TestReplicateSlave-1/etc/promise/check-free-disk-space
TestReplicateSlave-1/etc/promise/frontend-apache-configuration-promise
TestReplicateSlave-1/etc/promise/monitor-http-frontend
TestReplicateSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestReplicateSlave-1/etc/promise/nginx-configuration-promise
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv4_http
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv4_https
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv6_http
TestReplicateSlave-1/etc/promise/nginx_frontend_ipv6_https
TestReplicateSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestReplicateSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestReplicateSlave-1/etc/promise/re6st-connectivity
TestReplicateSlave-1/etc/promise/trafficserver-cache-availability
TestReplicateSlave-1/etc/promise/trafficserver-port-listening
TestReplicateSlave-2/etc/promise/apache-frontend-is-running-actual-software-release
TestReplicateSlave-2/etc/promise/apache-mpm-watchdog
TestReplicateSlave-2/etc/promise/apache_cached
TestReplicateSlave-2/etc/promise/apache_frontend_ipv4_http
TestReplicateSlave-2/etc/promise/apache_frontend_ipv4_https
TestReplicateSlave-2/etc/promise/apache_frontend_ipv6_http
TestReplicateSlave-2/etc/promise/apache_frontend_ipv6_https
TestReplicateSlave-2/etc/promise/apache_ssl_cached
TestReplicateSlave-2/etc/promise/check-free-disk-space
TestReplicateSlave-2/etc/promise/frontend-apache-configuration-promise
TestReplicateSlave-2/etc/promise/monitor-http-frontend
TestReplicateSlave-2/etc/promise/monitor-httpd-listening-on-tcp
TestReplicateSlave-2/etc/promise/nginx-configuration-promise
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv4_http
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv4_https
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv6_http
TestReplicateSlave-2/etc/promise/nginx_frontend_ipv6_https
TestReplicateSlave-2/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestReplicateSlave-2/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestReplicateSlave-2/etc/promise/re6st-connectivity
TestReplicateSlave-2/etc/promise/trafficserver-cache-availability
TestReplicateSlave-2/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestReplicateSlave-0:bootstrap-monitor EXITED
TestReplicateSlave-0:certificate_authority-on-watch RUNNING
TestReplicateSlave-0:crond RUNNING
TestReplicateSlave-0:monitor-httpd-graceful EXITED
TestReplicateSlave-0:monitor-httpd-on-watch RUNNING
TestReplicateSlave-1:bootstrap-monitor EXITED
TestReplicateSlave-1:certificate_authority-on-watch RUNNING
TestReplicateSlave-1:crond-on-watch RUNNING
TestReplicateSlave-1:frontend-apache-safe-graceful EXITED
TestReplicateSlave-1:frontend-nginx-safe-graceful EXITED
TestReplicateSlave-1:frontend_apache-on-watch RUNNING
TestReplicateSlave-1:frontend_nginx-on-watch RUNNING
TestReplicateSlave-1:monitor-httpd-graceful EXITED
TestReplicateSlave-1:monitor-httpd-on-watch RUNNING
TestReplicateSlave-1:trafficserver-on-watch RUNNING
TestReplicateSlave-1:trafficserver-reload EXITED
TestReplicateSlave-2:bootstrap-monitor STOPPED
TestReplicateSlave-2:certificate_authority-on-watch STOPPED
TestReplicateSlave-2:crond-on-watch STOPPED
TestReplicateSlave-2:frontend-apache-safe-graceful STOPPED
TestReplicateSlave-2:frontend-nginx-safe-graceful STOPPED
TestReplicateSlave-2:frontend_apache-on-watch STOPPED
TestReplicateSlave-2:frontend_nginx-on-watch STOPPED
TestReplicateSlave-2:monitor-httpd-graceful STOPPED
TestReplicateSlave-2:monitor-httpd-on-watch STOPPED
TestReplicateSlave-2:trafficserver-on-watch STOPPED
TestReplicateSlave-2:trafficserver-reload STOPPED
watchdog:watchdog RUNNING
\ No newline at end of file
TestSlave-1/var/log/frontend-apache-access.log
TestSlave-1/var/log/frontend-apache-error.log
TestSlave-1/var/log/httpd/_apache_custom_http_s-accepted_access_log
TestSlave-1/var/log/httpd/_apache_custom_http_s-accepted_error_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-accepted_access_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-accepted_error_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-rejected_access_log
TestSlave-1/var/log/httpd/_caddy_custom_http_s-rejected_error_log
TestSlave-1/var/log/httpd/_custom_domain_access_log
TestSlave-1/var/log/httpd/_custom_domain_error_log
TestSlave-1/var/log/httpd/_custom_domain_ssl_crt_ssl_key_access_log
TestSlave-1/var/log/httpd/_custom_domain_ssl_crt_ssl_key_error_log
TestSlave-1/var/log/httpd/_disabled-cookie-list_access_log
TestSlave-1/var/log/httpd/_disabled-cookie-list_error_log
TestSlave-1/var/log/httpd/_empty_access_log
TestSlave-1/var/log/httpd/_empty_error_log
TestSlave-1/var/log/httpd/_enable-http2-default_access_log
TestSlave-1/var/log/httpd/_enable-http2-default_error_log
TestSlave-1/var/log/httpd/_enable-http2-false_access_log
TestSlave-1/var/log/httpd/_enable-http2-false_error_log
TestSlave-1/var/log/httpd/_enable_cache-disable-no-cache-request_access_log
TestSlave-1/var/log/httpd/_enable_cache-disable-no-cache-request_error_log
TestSlave-1/var/log/httpd/_enable_cache-disable-via-header_access_log
TestSlave-1/var/log/httpd/_enable_cache-disable-via-header_error_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify-unverified_access_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify-unverified_error_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt_access_log
TestSlave-1/var/log/httpd/_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt_error_log
TestSlave-1/var/log/httpd/_enable_cache_access_log
TestSlave-1/var/log/httpd/_enable_cache_error_log
TestSlave-1/var/log/httpd/_https-only_access_log
TestSlave-1/var/log/httpd/_https-only_error_log
TestSlave-1/var/log/httpd/_monitor-ipv4-test_access_log
TestSlave-1/var/log/httpd/_monitor-ipv4-test_error_log
TestSlave-1/var/log/httpd/_monitor-ipv6-test_access_log
TestSlave-1/var/log/httpd/_monitor-ipv6-test_error_log
TestSlave-1/var/log/httpd/_prefer-gzip-encoding-to-backend_access_log
TestSlave-1/var/log/httpd/_prefer-gzip-encoding-to-backend_error_log
TestSlave-1/var/log/httpd/_re6st-optimal-test_access_log
TestSlave-1/var/log/httpd/_re6st-optimal-test_error_log
TestSlave-1/var/log/httpd/_server-alias_access_log
TestSlave-1/var/log/httpd/_server-alias_error_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify-unverified_access_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify-unverified_error_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify_ssl_proxy_ca_crt_access_log
TestSlave-1/var/log/httpd/_ssl-proxy-verify_ssl_proxy_ca_crt_error_log
TestSlave-1/var/log/httpd/_type-eventsource_access_log
TestSlave-1/var/log/httpd/_type-eventsource_error_log
TestSlave-1/var/log/httpd/_type-notebook_access_log
TestSlave-1/var/log/httpd/_type-notebook_error_log
TestSlave-1/var/log/httpd/_type-redirect_access_log
TestSlave-1/var/log/httpd/_type-redirect_error_log
TestSlave-1/var/log/httpd/_type-zope-default-path_access_log
TestSlave-1/var/log/httpd/_type-zope-default-path_error_log
TestSlave-1/var/log/httpd/_type-zope-path_access_log
TestSlave-1/var/log/httpd/_type-zope-path_error_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify-unverified_access_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify-unverified_error_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt_access_log
TestSlave-1/var/log/httpd/_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt_error_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-http-port_access_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-http-port_error_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-https-port_access_log
TestSlave-1/var/log/httpd/_type-zope-virtualhostroot-https-port_error_log
TestSlave-1/var/log/httpd/_type-zope_access_log
TestSlave-1/var/log/httpd/_type-zope_error_log
TestSlave-1/var/log/httpd/_url_access_log
TestSlave-1/var/log/httpd/_url_error_log
TestSlave-1/var/log/httpd/_url_https-url_access_log
TestSlave-1/var/log/httpd/_url_https-url_error_log
TestSlave-1/var/log/monitor-httpd-error.log
TestSlave-1/var/log/nginx-access.log
TestSlave-1/var/log/nginx-error.log
TestSlave-1/var/log/trafficserver/manager.log
TestSlave-1/var/log/trafficserver/traffic.out
\ No newline at end of file
TestSlave-0/var/run/monitor/monitor-bootstrap.pid
TestSlave-1/var/run/apache_configuration.signature
TestSlave-1/var/run/httpd.pid
TestSlave-1/var/run/monitor-httpd.pid
TestSlave-1/var/run/monitor/monitor-bootstrap.pid
TestSlave-1/var/run/napache_configuration.signature
TestSlave-1/var/run/nginx.pid
\ No newline at end of file
SetEnvIf Origin "^http(s)?://(.+\.)?(monitor\.app\.officejs\.com)$" ORIGIN_DOMAIN=$0
Header always set Access-Control-Allow-Origin "%{ORIGIN_DOMAIN}e" env=ORIGIN_DOMAIN
Header always set Access-Control-Allow-Credentials "true" env=ORIGIN_DOMAIN
Header always set Access-Control-Allow-Methods "PROPFIND, PROPPATCH, COPY, MOVE, DELETE, MKCOL, LOCK, UNLOCK, PUT, GETLIB, VERSION-CONTROL, CHECKIN, CHECKOUT, UNCHECKOUT, REPORT, UPDATE, CANCELUPLOAD, HEAD, OPTIONS, GET, POST" env=ORIGIN_DOMAIN
Header always set Access-Control-Allow-Headers "Overwrite, Destination, Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control, Authorization" env=ORIGIN_DOMAIN
\ No newline at end of file
TestSlave-1/etc/monitor-promise/check-_apache_custom_http_s-accepted-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_apache_custom_http_s-accepted-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-accepted-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-accepted-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-rejected-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_caddy_custom_http_s-rejected-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_custom_domain-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_custom_domain-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_custom_domain_ssl_crt_ssl_key-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_custom_domain_ssl_crt_ssl_key-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_disabled-cookie-list-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_disabled-cookie-list-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_empty-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_empty-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable-http2-default-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable-http2-false-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-no-cache-request-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-no-cache-request-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-via-header-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-disable-via-header-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_enable_cache-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_https-only-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_https-only-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_monitor-ipv4-test-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_monitor-ipv4-test-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_monitor-ipv4-test-ipv4-packet-list-test
TestSlave-1/etc/monitor-promise/check-_monitor-ipv6-test-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_monitor-ipv6-test-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_monitor-ipv6-test-ipv6-packet-list-test
TestSlave-1/etc/monitor-promise/check-_prefer-gzip-encoding-to-backend-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_prefer-gzip-encoding-to-backend-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_re6st-optimal-test-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_re6st-optimal-test-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_re6st-optimal-test-re6st-optimal-test
TestSlave-1/etc/monitor-promise/check-_server-alias-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_server-alias-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-eventsource-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-eventsource-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-notebook-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-notebook-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-redirect-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-redirect-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-default-path-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-default-path-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-path-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-path-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify-unverified-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify-unverified-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-ssl-proxy-verify_ssl_proxy_ca_crt-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-http-port-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-http-port-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-https-port-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_type-zope-virtualhostroot-https-port-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_url-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_url-error-log-last-hour
TestSlave-1/etc/monitor-promise/check-_url_https-url-error-log-last-day
TestSlave-1/etc/monitor-promise/check-_url_https-url-error-log-last-hour
\ No newline at end of file
TestSlave-0/etc/promise/check-free-disk-space
TestSlave-0/etc/promise/monitor-http-frontend
TestSlave-0/etc/promise/monitor-httpd-listening-on-tcp
TestSlave-0/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestSlave-1/etc/promise/apache-frontend-is-running-actual-software-release
TestSlave-1/etc/promise/apache-mpm-watchdog
TestSlave-1/etc/promise/apache_cached
TestSlave-1/etc/promise/apache_frontend_ipv4_http
TestSlave-1/etc/promise/apache_frontend_ipv4_https
TestSlave-1/etc/promise/apache_frontend_ipv6_http
TestSlave-1/etc/promise/apache_frontend_ipv6_https
TestSlave-1/etc/promise/apache_ssl_cached
TestSlave-1/etc/promise/check-free-disk-space
TestSlave-1/etc/promise/frontend-apache-configuration-promise
TestSlave-1/etc/promise/monitor-http-frontend
TestSlave-1/etc/promise/monitor-httpd-listening-on-tcp
TestSlave-1/etc/promise/nginx-configuration-promise
TestSlave-1/etc/promise/nginx_frontend_ipv4_http
TestSlave-1/etc/promise/nginx_frontend_ipv4_https
TestSlave-1/etc/promise/nginx_frontend_ipv6_http
TestSlave-1/etc/promise/nginx_frontend_ipv6_https
TestSlave-1/etc/promise/promise-monitor-httpd-is-process-older-than-dependency-set
TestSlave-1/etc/promise/promise-nginx-is-process-older-than-dependency-set
TestSlave-1/etc/promise/re6st-connectivity
TestSlave-1/etc/promise/trafficserver-cache-availability
TestSlave-1/etc/promise/trafficserver-port-listening
\ No newline at end of file
TestSlave-0:bootstrap-monitor EXITED
TestSlave-0:certificate_authority-on-watch RUNNING
TestSlave-0:crond RUNNING
TestSlave-0:monitor-httpd-graceful EXITED
TestSlave-0:monitor-httpd-on-watch RUNNING
TestSlave-1:bootstrap-monitor EXITED
TestSlave-1:certificate_authority-on-watch RUNNING
TestSlave-1:crond-on-watch RUNNING
TestSlave-1:frontend-apache-safe-graceful EXITED
TestSlave-1:frontend-nginx-safe-graceful EXITED
TestSlave-1:frontend_apache-on-watch RUNNING
TestSlave-1:frontend_nginx-on-watch RUNNING
TestSlave-1:monitor-httpd-graceful EXITED
TestSlave-1:monitor-httpd-on-watch RUNNING
TestSlave-1:trafficserver-on-watch RUNNING
TestSlave-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
......@@ -101,6 +101,7 @@ configuration.nginx_gzip_comp_level = 2
configuration.nginx_gzip_proxied = any
configuration.nginx_gzip_types = text/plain text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript application/json
configuration.nginx_keepalive_timeout = 65
configuration.nginx_header_allow_origin = *
# configuring trusted proxies
# GitLab is behind a reverse proxy, so we don't want the IP address of the proxy
......
# Code generated by gowork-snapshot; DO NOT EDIT.
# list of go git repositories to fetch
[gowork.goinstall]
depends_gitfetch =
${go_github.com_pkg_errors:recipe}
${go_lab.nexedi.com_kirr_git-backup:recipe}
${go_lab.nexedi.com_kirr_go123:recipe}
${go_gitlab.com_gitlab-org_gitlab-workhorse:recipe}
[go_github.com_libgit2_git2go]
<= go-git-package
go.importpath = github.com/libgit2/git2go
repository = https://github.com/libgit2/git2go.git
# branch 'next' is required by git-backup
revision = next-g53594d7581617dbae7bb5960b4ac5f0ff513c184
[go_github.com_pkg_errors]
<= go-git-package
go.importpath = github.com/pkg/errors
repository = https://github.com/pkg/errors.git
revision = v0.8.0-12-g816c908556
[go_lab.nexedi.com_kirr_git-backup]
<= go-git-package
go.importpath = lab.nexedi.com/kirr/git-backup
repository = https://lab.nexedi.com/kirr/git-backup.git
revision = cc6ac54f451dfa6e343d6340dcfa25aa6eac9565
[go_lab.nexedi.com_kirr_go123]
<= go-git-package
go.importpath = lab.nexedi.com/kirr/go123
repository = https://lab.nexedi.com/kirr/go123.git
revision = d9250d6332
[go_gitlab.com_gitlab-org_gitlab-workhorse]
<= go-git-package
go.importpath = gitlab.com/gitlab-org/gitlab-workhorse
repository = https://lab.nexedi.com/nexedi/gitlab-workhorse.git
revision = v1.3.0-8-g5f44f59cbb
\ No newline at end of file
......@@ -279,6 +279,7 @@ recipe = slapos.cookbook:wrapper
wrapper-path = ${directory:bin}/${:_buildout_section_name_}
# NOTE $HOME needed to pick gitconfig
environment =
PATH = {{ node_bin_location }}:{{ gopath_bin }}:$PATH
BUNDLE_GEMFILE = {{ gitlab_repository_location }}/Gemfile
HOME = ${directory:home}
RAILS_ENV = production
......@@ -359,14 +360,15 @@ update-command =
<= work-base
software = {{ gitlab_repository_location }}
tune-command =
# secret* tmp/ log/ shared/ builds/
# secret* tmp/ log/ shared/ builds/ node_modules/
rm -f .secret &&
rm -rf log tmp shared builds &&
rm -rf log tmp shared builds node_modules &&
ln -sf ${secrets:secrets}/gitlab_rails_secret .secret &&
ln -sf ${gitlab:log} log &&
ln -sf ${gitlab:tmp} tmp &&
ln -sf ${gitlab:shared} shared &&
ln -sf ${gitlab:builds} builds &&
ln -sf {{ gitlab_repository_location }}/node_modules node_modules &&
# config/
cd config &&
ln -sf ${unicorn.rb:rendered} unicorn.rb &&
......@@ -517,6 +519,7 @@ command-line = {{ gitlab_workhorse }}
-listenAddr ${gitlab-workhorse:socket}
-authSocket ${unicorn:socket}
-documentRoot ${gitlab-work:location}/public
-secretPath ${gitlab-work:location}/.gitlab_workhorse_secret
# NOTE for profiling
# -pprofListenAddr ...
......@@ -534,7 +537,9 @@ depend =
[promise-gitlab-workhorse]
<= promise-byurl
url = --unix-socket ${gitlab-workhorse:socket} http://localhost/static.css
# http://localhost/users/statics.css will not redirect to /users/sign_in anymore because of this commit:
# https://lab.nexedi.com/nexedi/gitlab-workhorse/commit/c81f109a62fecf2a847fb17ceed012b380dab49f#c1215002e6d745f05eaaf9ee1dad7752e85d866f_318_331
url = --unix-socket ${gitlab-workhorse:socket} http://localhost/users/sign_in
# gitlab-workhorse logs to stdout/stderr - logs are handled by slapos not us
......@@ -645,15 +650,7 @@ command-line =
-c ${instance-parameter:configuration.sidekiq_concurrency}
-L ${sidekiq:log}/sidekiq.log
-q post_receive
-q mailers
-q archive_repo
-q system_hook
-q project_web_hook
-q gitlab_shell
-q incoming_email
-q common
-q default
-C ${gitlab-work:location}/config/sidekiq_queues.yml
depend =
${promise-sidekiq:recipe}
......@@ -731,7 +728,7 @@ depend =
<= promise-byurl
# XXX this depends on gitlab-workhorse being up
# (nginx is configured to proxy all requests to gitlab-workhorse)
url = ${backend-info:url}/static.css
url = ${backend-info:url}/users/sign_in
[logrotate-entry-nginx]
<= logrotate-entry
......@@ -849,6 +846,6 @@ rake = ${gitlab-rake:wrapper-path}
update-command = ${:command}
command =
${:rake} assets:clean &&
${:rake} assets:precompile &&
${:rake} gitlab:assets:clean &&
${:rake} gitlab:assets:compile &&
true
......@@ -42,8 +42,8 @@ context =
raw git ${git:location}/bin/git
raw git_location ${git:location}
raw gitlab_export ${gitlab-export:rendered}
raw gitlab_workhorse ${gitlab-workhorse:location}/gitlab-workhorse
raw gopath_bin ${gopath:bin}
raw gitlab_workhorse ${gowork:bin}/gitlab-workhorse
raw gopath_bin ${gowork:bin}
raw gunzip_bin ${gzip:location}/bin/gunzip
raw grep_location ${grep:location}
raw gzip_bin ${gzip:location}/bin/gzip
......@@ -51,6 +51,7 @@ context =
raw logrotate_bin ${logrotate:location}/usr/sbin/logrotate
raw nginx_bin ${nginx-output:nginx}
raw nginx_mime_types ${nginx-output:mime}
raw node_bin_location ${nodejs-8.6.0:location}/bin/
raw openssl_bin ${openssl-output:openssl}
raw postgresql_location ${postgresql92:location}
raw redis_binprefix ${redis28:location}/bin
......
......@@ -13,6 +13,7 @@ extends =
../../component/openssl/buildout.cfg
../../component/nginx/buildout.cfg
../../component/zlib/buildout.cfg
gowork.cfg
# for instance
../../component/coreutils/buildout.cfg
......@@ -36,14 +37,13 @@ parts =
pkgconfig
nginx-output
gowork
python-4gitlab
gitlab-shell/vendor
gitlab/vendor/bundle
gitlab_npm
github-markup-patch
gitlab-workhorse
git-go123
git-errors
git-backup
gitlab-backup
# for instance
instance.cfg
......@@ -62,11 +62,6 @@ parts =
[slapos.cookbook-repository]
revision = 571d6514f7290e8faa9439c4b86aa2f6c87df261
[git]
# TODO stop using custom git revision once git 2.11 is supported by Gitlab
url = https://www.kernel.org/pub/software/scm/git/git-2.10.2.tar.xz
md5sum = 3cd1dca37be60668f482545716923b72
############################
# Software compilation #
############################
......@@ -112,7 +107,7 @@ bundle = ${buildout:bin-directory}/bundle
# gitlab (via github-markup) wants to convert rst -> html via running: python2 (with docutils egg)
# (python-4gitlab puts interpreter into ${buildout:bin-directory})
environment =
PATH = ${:ruby-location}/bin:${cmake:location}/bin:${pkgconfig:location}/bin:${nodejs:location}/bin:${postgresql92:location}/bin:${redis28:location}/bin:${git:location}/bin:${buildout:bin-directory}:%(PATH)s
PATH = ${:ruby-location}/bin:${cmake:location}/bin:${pkgconfig:location}/bin:${nodejs-8.6.0:location}/bin:${postgresql92:location}/bin:${redis28:location}/bin:${git:location}/bin:${buildout:bin-directory}:%(PATH)s
# gitlab, gitlab-shell & gitlab-workhorse checked out as git repositories
......@@ -125,36 +120,27 @@ git-executable = ${git:location}/bin/git
<= git-repository
#repository = https://gitlab.com/gitlab-org/gitlab-ce.git
repository = https://lab.nexedi.com/nexedi/gitlab-ce.git
# 8.8.X + NXD patches:
revision = v8.8.9-10-g967afbdc3a2d2bcc58ed31ca50d5293fa2a2e9ed
# 8.17.X + NXD patches:
revision = v8.17.8-12-g611cf13b90
location = ${buildout:parts-directory}/gitlab
[gitlab-shell-repository]
<= git-repository
#repository = https://gitlab.com/gitlab-org/gitlab-shell.git
repository = https://lab.nexedi.com/nexedi/gitlab-shell.git
# gitlab 8.8 wants gitlab-shell 2.7.2
# 2.7.2 + NXD patches
revision = v2.6.10-50-gfbca95be784816349abc5930324659151eca50d1
# gitlab 8.17 wants gitlab-shell 4.1.1
# 4.1.1 + NXD patches
revision = v4.1.1-1-g64603b4da2
location = ${buildout:parts-directory}/gitlab-shell
[gitlab-workhorse-repository]
<= git-repository
#repository = https://gitlab.com/gitlab-org/gitlab-workhorse.git
repository = https://lab.nexedi.com/nexedi/gitlab-workhorse.git
# gitlab 8.8 wants gitlab-workhorse 0.7.1
# 0.7.1 + NXD patches
revision = v0.7.1-5-gc368233516b78856484aff31f9141c880b800670
location = ${buildout:parts-directory}/gitlab-workhorse
# Patch github markup to not call "python2 -S /path/to/rest2html" but only "python2 /path/to/rest2html"
# NOTE github-markup invokes it as `python2`, that's why we are naming it this way
# https://github.com/github/markup/blob/5393ae93/lib/github/markups.rb#L36
[github-markup-patch]
recipe = plone.recipe.command
command =
files=$(ls ${gitlab-repository:location}/vendor/bundle/ruby/*/gems/github-markup-*/lib/github/markups.rb) || true
if [ ! -z $files ]; then
files=$(ls ${gitlab-repository:location}/vendor/bundle/ruby/*/gems/git*-markup-*/lib/github/markups.rb) || true
if [ ! -z "$files" ]; then
for file in $files; do
sed -i 's#python2 -S#python2#' $file
done
......@@ -176,53 +162,51 @@ make-binary =
make-targets= cd ${:path} &&
${:bundle} install --deployment --without development test mysql kerberos
# directories and repositories required by gitlab-backup
[gopath]
directory = ${buildout:directory}/go.work
src = ${:directory}/src
bin = ${:directory}/bin
[go-git-repository]
<= git-repository
repository = https://${:go.importpath}.git
location = ${gopath:src}/${:go.importpath}
[git2go-repository]
<= go-git-repository
go.importpath = github.com/libgit2/git2go
# branch 'next' is required by git-backup
revision = next-g53594d7581617dbae7bb5960b4ac5f0ff513c184
[git-go123]
<= go-git-repository
go.importpath = lab.nexedi.com/kirr/go123
[git-errors]
<= go-git-repository
go.importpath = github.com/pkg/errors
[gitlab_npm]
recipe = slapos.recipe.cmmi
path = ${gitlab-repository:location}
[git-backup-repository]
<= go-git-repository
go.importpath = lab.nexedi.com/kirr/git-backup
revision = cc6ac54f451dfa6e343d6340dcfa25aa6eac9565
configure-command = :
make-binary =
make-targets= cd ${:path} && npm install
environment =
PATH=${nodejs-8.6.0:location}/bin/:%(PATH)s
[git-backup]
# install git2go, git-backup, gitlab-backup in <gopath>/bin
#our go infrastructure not currently supporting submodules, IIRC
# https://lab.nexedi.com/nexedi/slapos/merge_requests/337
[go_github.com_libgit2_git2go_prepare]
recipe = slapos.recipe.cmmi
path = ${git-backup-repository:location}
path = ${go_github.com_libgit2_git2go:location}
configure-command = :
make-binary =
make-targets= cd ${git2go-repository:location}
make-targets= cd ${go_github.com_libgit2_git2go:location}
&& git submodule update --init
&& make install
&& install -d ${gopath:bin}
&& go install ${git-backup-repository:go.importpath}
&& cp -a ${git-backup-repository:location}/contrib/gitlab-backup ${gopath:bin}
environment =
PKG_CONFIG_PATH=${openssl:location}/lib/pkgconfig:${zlib:location}/lib/pkgconfig
PATH=${cmake:location}/bin:${pkgconfig:location}/bin:${git:location}/bin:${golang19:location}/bin:${buildout:bin-directory}:%(PATH)s
GOPATH=${gopath:directory}
GOPATH=${gowork:directory}
[gowork]
golang = ${golang19:location}
install =
lab.nexedi.com/kirr/git-backup \
gitlab.com/gitlab-org/gitlab-workhorse \
gitlab.com/gitlab-org/gitlab-workhorse/cmd/gitlab-zip-cat \
gitlab.com/gitlab-org/gitlab-workhorse/cmd/gitlab-zip-metadata
cpkgpath =
${openssl:location}/lib/pkgconfig
${zlib:location}/lib/pkgconfig
before-install =
${go_github.com_libgit2_git2go_prepare:recipe}
[gitlab-backup]
recipe = plone.recipe.command
command =
cp -a ${go_lab.nexedi.com_kirr_git-backup:location}/contrib/gitlab-backup ${gowork:bin}
update-command = ${:command}
[xnice-repository]
# to get kirr's misc repo containing xnice script for executing processes
......@@ -245,19 +229,6 @@ make-binary =
make-targets= cd ${:path} &&
${:bundle} install --deployment --without development test
# build gitlab-workhorse
[gitlab-workhorse]
recipe = slapos.recipe.cmmi
path = ${gitlab-workhorse-repository:location}
configure-command = :
make-targets= ${:_buildout_section_name_}
environment =
PATH=${golang19:location}/bin:%(PATH)s
###############################
# Trampoline for instance #
###############################
......@@ -275,7 +246,7 @@ eggs =
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance.cfg.in
output = ${buildout:directory}/instance.cfg
md5sum = a01b42efe47811cadd70daf47850de93
md5sum = ddadc1eda2b474d6f2349409c05476eb
# macro: download a shell script and put it rendered into <software>/bin/
[binsh]
......@@ -318,11 +289,11 @@ md5sum = 61d1d04b9347b3168a1ad7676e4681ef
[gitconfig.in]
<= download-template
md5sum = eb1230fee50067924ba89f4dc6e82fa9
md5sum = 7782f5c5d75663c2586e28d029c51e49
[gitlab-parameters.cfg]
<= download-file
md5sum = 9ff67261781092ae4d1096d65927b9f2
md5sum = dec5d989e2d969369bd1eaffcbfb78d6
[gitlab-shell-config.yml.in]
<= download-template
......@@ -334,11 +305,11 @@ md5sum = a9cb347f60aad3465932fd36cd4fe25d
[gitlab.yml.in]
<= download-template
md5sum = fb52f20f04b3c0bacd6a767dac9d6483
md5sum = 0ddf4093dcf4427e5a160707e6017950
[instance-gitlab.cfg.in]
<= download-file
md5sum = fc67ab8bb6761fb3e2c56d46266a094c
md5sum = bd8bccad43e7cf294af2fc9b60fb3b46
[instance-gitlab-export.cfg.in]
<= download-file
......@@ -354,7 +325,7 @@ md5sum = a56a44e96f65f5ed20211bb6a54279f4
[nginx-gitlab-http.conf.in]
<= download-template
md5sum = 37ea159762fe25db2af6b4ac3870d1e3
md5sum = 697140d980c75ddc1dd0a656b1c88447
[nginx.conf.in]
<= download-template
......@@ -370,7 +341,7 @@ md5sum = 7c89a730889e3224548d9abe51a2d719
[smtp_settings.rb.in]
<= download-template
md5sum = c67ea492e17f774d0e18f1217338a55f
md5sum = 4e1ced687a86e4cfff2dde91237e3942
[template-gitlab-resiliency-restore.sh.in]
<= download-template
......
......@@ -53,6 +53,7 @@ production: &base
email_from: {{ cfg('email_from') }}
email_display_name: {{ cfg('email_display_name') }}
email_reply_to: {{ cfg('email_reply_to') }}
email_subject_suffix: ''
# Email server smtp settings are in [a separate file](initializers/smtp_settings.rb.sample).
......@@ -93,14 +94,15 @@ production: &base
{# default is just ok
## Repository downloads directory
# When a user clicks e.g. 'Download zip' on a project, a temporary zip file is created in the following directory.
# The default is 'tmp/repositories' relative to the root of the Rails app.
# The default is 'shared/cache/archive/' relative to the root of the Rails app.
# repository_downloads_path: shared/cache/archive/
repository_downloads_path: <%= @gitlab_repository_downloads_path %>
#}
{# we do not support reply by email
## Reply by email
# Allow users to comment on issues and merge requests by replying to notification emails.
# For documentation on how to set this up, see http://doc.gitlab.com/ce/incoming_email/README.html
# For documentation on how to set this up, see http://doc.gitlab.com/ce/administration/reply_by_email.html
incoming_email:
enabled: <%= @incoming_email_enabled %>
......@@ -126,6 +128,8 @@ production: &base
# The mailbox where incoming mail will end up. Usually "inbox".
mailbox: <%= single_quote(@incoming_email_mailbox_name) %>
# The IDLE command timeout.
idle_timeout: 60
#}
{# we do not support build artifacts
......@@ -384,6 +388,15 @@ production: &base
path: /dev/null
timeout: 0
## Repositories settings
repositories:
# Paths where repositories can be stored. Give the canonicalized absolute pathname.
# IMPORTANT: None of the path components may be symlink, because
# gitlab-shell invokes Dir.pwd inside the repository path and that results
# real path not the symlink.
storages: # You must have at least a `default` storage path.
default: {{ gitlab.repositories }}
## Backup settings
backup:
path: "{{ gitlab.backup }}" # Relative paths are relative to Rails.root (default: tmp/backups/)
......@@ -404,7 +417,6 @@ production: &base
encryption: <%= @backup_encryption %>
#}
## GitLab Shell settings
gitlab_shell:
path: {{ gitlab_shell_work.location }}
......@@ -494,6 +506,9 @@ test:
# user: YOUR_USERNAME
satellites:
path: tmp/tests/gitlab-satellites/
repositories:
storages:
default: tmp/tests/repositories/
gitlab_shell:
path: tmp/tests/gitlab-shell/
repos_path: tmp/tests/repositories/
......
......@@ -118,6 +118,8 @@ server {
{# we do not support relative URL - path is always "/" #}
{% set path = "/" %}
location {{ path }} {
# Set CORS header
add_header 'Access-Control-Allow-Origin' {{ cfg('nginx_header_allow_origin') }};
## If you use HTTPS make sure you disable gzip compression
## to be safe against BREACH attack.
{{ 'gzip off;' if cfg_https else ''}}
......
......@@ -10,6 +10,7 @@
if Rails.env.production?
Gitlab::Application.config.action_mailer.delivery_method = :smtp
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = {
address: "{{ cfg('smtp_address') }}",
port: {{ cfg('smtp_port') }},
......
......@@ -15,7 +15,7 @@ parts =
eggs
instance-recipe-egg
xserver
firefox
firefox-wrapper
geckodriver
xwd
......
......@@ -18,7 +18,7 @@ md5sum = 713db528880282d568278f09458d2aab
[template-runner]
filename = instance-runner.cfg
md5sum = 04e31ac503753f89510dd412b4680c56
md5sum = cefbc8abef234c9a74f88688a0ac0030
[template-runner-import-script]
filename = template/runner-import.sh.jinja2
......
......@@ -354,7 +354,7 @@ context =
<= logrotate-entry-base
name = nginx
log = $${directory:log}/nginx.access.log $${directory:log}/nginx.error.log
post = kill -SIGUSR1 $(cat $${buildout:directory}/var/run/nginx.pid)
post = kill -USR1 $(cat $${buildout:directory}/var/run/nginx.pid)
[httpd-parameters]
path_pid = $${directory:run}/httpd.pid
......@@ -797,7 +797,7 @@ wrapper-path = $${directory:services}/supervisord
<= logrotate-entry-base
name = supervisord
log = $${directory:log}/slapproxy.log $${directory:log}/supervisord.log $${directory:log}/supervisord-errors.log
post = kill -SIGUSR2 $(cat $${buildout:directory}/var/run/supervisord.pid)
post = kill -USR2 $(cat $${buildout:directory}/var/run/supervisord.pid)
[logrotate-entry-slapgrid]
<= logrotate-entry-base
......
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