Commit 4dcb408d authored by Rafael Monnerat's avatar Rafael Monnerat

Update Release Candidate

parents b4f241b6 e24c67b2
......@@ -40,7 +40,7 @@ make-targets =
-j1 install_sw install_ssldirs &&
rm -f ${:certs}/* &&
for i in ${ca-certificates:location}/certs/*/*.crt; do
ln -sv $i ${:certs}/`${:location}/bin/openssl x509 -hash -noout -in $i`.0
ln -sfv $i ${:certs}/`${:location}/bin/openssl x509 -hash -noout -in $i`.0
; done
environment =
PERL=${perl:location}/bin/perl
......
......@@ -47,7 +47,7 @@ environment =
recipe = hexagonit.recipe.download
ignore-existing = true
filename = ${:_buildout_section_name_}
url = http://cdimage.debian.org/cdimage/${:release}/${:arch}/iso-cd/debian-${:version}-${:arch}-netinst.iso
url = https://cdimage.debian.org/cdimage/${:release}/${:arch}/iso-cd/debian-${:version}-${:arch}-netinst.iso
release = archive/${:version}
download-only = true
mode = 0644
......@@ -70,7 +70,6 @@ md5sum = 19dcfc381bd3e609c6056216d203f5bc
[debian-amd64-netinst.iso]
# Download the installer of Debian 9 (Stretch)
<= debian-amd64-netinst-base
release = release/current
version = 9.4.0
md5sum = 73bd8aaaeb843745ec939f6ae3906e48
......
......@@ -96,6 +96,7 @@ prefix = ${buildout:rootdir}/parts/${:_buildout_section_name_}
location = ${buildout:parts-directory}/${:_buildout_section_name_}
make-options +=
INSTALL_PREFIX=${buildout:destdir}
DESTDIR=${buildout:destdir}
environment =
PERL5LIB=${perl:location}/lib/5.26.1/
......
......@@ -27,7 +27,7 @@ md5sum = 8bfbb358b51f90374067879f8db1e91c
recipe = hexagonit.recipe.download
ignore-existing = true
strip-top-level-dir = true
url = https://www-eu.apache.org/dist/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
url = https://archive.apache.org/dist/tomcat/tomcat-9/v9.0.12/bin/apache-tomcat-9.0.12.tar.gz
md5sum = 7283da4a3a6e939adcd8f919be4ba41a
[tomcat7-output]
......
......@@ -39,4 +39,7 @@ class Recipe(GenericBaseRecipe):
for path in sorted(self.directory.itervalues()):
if path and not os.path.isdir(path):
os.makedirs(path, self.mode)
# WARNING: This recipe is currently used to create directories that will
# contain user data (e.g. NEO db). Such directories must never
# be purged by the uninstallation of a recipe.
return []
......@@ -6,6 +6,10 @@
#
###############################
[variables]
status_dirbasename = status
statistic_dirbasename = statistic
[directory]
recipe = slapos.cookbook:mkdirectory
etc = $${buildout:directory}/etc
......@@ -22,14 +26,15 @@ cron-lines = $${:etc}/cron.lines
crontabs = $${:etc}/crontabs
cronstamps = $${:etc}/cronstamps
backup = $${:srv}/backup
status = $${:srv}/status
statistic = $${:srv}/statistic
status = $${:srv}/$${variables:status_dirbasename}
statistic = $${:srv}/$${variables:statistic_dirbasename}
backupscript = $${:etc}/backup
www = $${:srv}/www
home = $${:etc}/home
promises = $${:etc}/promise
ssl = $${:etc}/ssl
ssh = $${:home}/.ssh
plugin = $${:etc}/plugin
#################################
# Cron service
......@@ -46,7 +51,8 @@ logfile = $${directory:log}/crond.log
#################################
# Go throught slave list to set their configuration
{% for slave_instance in slave_instance_list -%}
{% set slave_reference = slave_instance.get('slave_reference') -%}
{% set orig_slave_reference = slave_instance.get('slave_reference') -%}
{% set slave_reference = orig_slave_reference.replace(' ', '_') -%}
{% set frequency = slave_instance.get('frequency', '') -%}
{% set hostname = slave_instance.get('hostname', '') -%}
{% set connection = slave_instance.get('connection', '') -%}
......@@ -92,11 +98,29 @@ storage-path = {{ '$${' ~ slave_reference }}-backup-private_key:public_key}
# Publish slave {{ slave_reference }} information
[{{ slave_reference }}-backup-publish]
recipe = slapos.cookbook:publish
-slave-reference = {{ slave_reference }}
-slave-reference = {{ orig_slave_reference }}
authorized_key = {{ '$${' ~ slave_reference }}-backup-read-public_key:readline}
rss = https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/{{ '$${' ~ slave_reference }}-backup-script:status_name}.rss
{% do part_list.append("%s-backup-publish" % slave_reference) -%}
[{{ slave_reference }}-promise-check-backup]
recipe = slapos.cookbook:promise.plugin
eggs =
slapos.toolbox
output = $${directory:plugin}/{{ slave_reference }}_check_backup.py
content =
from slapos.promise.plugin.backupserver_check_backup import RunPromise
config-status_dirbasename = $${variables:status_dirbasename}
config-status_name = {{ '$${' ~ slave_reference }}-backup-script:status_name}
config-status_fullpath = {{ '$${' ~ slave_reference }}-backup-script:status_log}
config-script_fullpath = {{ '$${' ~ slave_reference }}-backup-script:output}
config-cron_frequency = {{ frequency }}
config-monitor_url = $${monitor-publish:monitor-base-url}
config-statistic_dirbasename = $${variables:statistic_dirbasename}
config-statistic_name = {{ '$${' ~ slave_reference }}-backup-script:statistic_name}
mode = 600
{% do part_list.append("%s-promise-check-backup" % slave_reference) -%}
[{{ slave_reference }}-backup-script]
recipe = slapos.recipe.template
url = ${template-backup-script:output}
......@@ -148,6 +172,7 @@ frequency = */5 * * * *
[publish-global-rss]
recipe = slapos.cookbook:publish
<= monitor-publish
rss = https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/$${update-rss-script:global_rss}
{% set crontab_line_list_string = " ".join(crontab_line_list) -%}
......@@ -187,14 +212,30 @@ ssl_key = $${directory:ssl}/nginx.key
ssl_csr = $${directory:ssl}/nginx.csr
ssl_crt = $${directory:ssl}/nginx.crt
#################################
# Monitoring
#################################
[monitor-instance-parameter]
monitor-httpd-port = 9687
[monitor-conf-parameters]
private-path-list +=
$${directory:statistic}
$${directory:status}
# Add parts generated by template
[buildout]
extends =
${monitor-template:rendered}
parts =
dcron-service
nginx-service
nginx-listen-promise
activate-crontab-file
publish-global-rss
monitor-base
{% for part in part_list -%}
{{ ' %s' % part }}
{% endfor -%}
......
......@@ -6,39 +6,40 @@ extends =
../../component/openssl/buildout.cfg
../../component/nginx/buildout.cfg
../../component/rdiff-backup/buildout.cfg
# ../../component/duplicity/buildout.cfg
# ../../component/git/buildout.cfg
# ../../component/subversion/buildout.cfg
../../component/rsync/buildout.cfg
../../component/openssh/buildout.cfg
../../component/grep/buildout.cfg
../../component/findutils/buildout.cfg
# ../../stack/flask.cfg
../../component/util-linux/buildout.cfg
../../stack/slapos.cfg
../../stack/monitor/buildout.cfg
parts =
extra-eggs
monitor-extra-eggs
rdiff-backup
# duplicity
dcron
logrotate
nginx
openssl
# git
# subversion
rsync
# flask-egg
template
template-pullrdiffbackup
template-backup-script
template-crontab-line
slapos-cookbook
[monitor-extra-eggs]
recipe = zc.recipe.egg
eggs =
${monitor-eggs:eggs}
[extra-eggs]
recipe = zc.recipe.egg
interpreter = pythonforrssgen
eggs =
PyRSS2Gen
python_dateutil
##########################################################
# Service startup scripts and configuration files
......@@ -67,7 +68,7 @@ mode = 0644
[template-backup-script]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/template-backup-script.sh.in
md5sum = fa79e0307e12e2f5b1f2adbd261995fc
md5sum = 4c75f8462eaef2d8fcf24627e5f3575a
output = ${buildout:directory}/template-backup-script.sh.in
mode = 0644
......@@ -88,14 +89,14 @@ mode = 0644
[status2rss]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/status2rss.py
md5sum = a023694817975e73998fb9187a6015d6
md5sum = 432d22bb0f67df5203bbc5d1134a952b
output = ${buildout:directory}/status2rss.py
mode = 0644
[template-update-rss-script]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/template-update-rss.sh.in
md5sum = 529058c54e873ab26f7920c868b23c50
md5sum = 80b3746568bc8e308a1f337bdaa2441c
output = ${buildout:directory}/template-update-rss.sh.in
mode = 0644
......@@ -105,7 +106,7 @@ mode = 0644
[template-pullrdiffbackup]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/instance-pullrdiffbackup.cfg.in
md5sum = a2fb7b0cdd944be99da4122eb6f07749
md5sum = 537ab12f3885660e59d280ee40e379ac
output = ${buildout:directory}/template-pullrdiffbackup.cfg
mode = 0644
......@@ -116,15 +117,13 @@ md5sum = 42021b325159dff29e4bd4e33b8ff2f3
output = ${buildout:directory}/template.cfg
mode = 0644
[rdiff-backup]
eggs =
${rdiff-backup-build-1.3.4:egg}
[versions]
# 1.3.4nxdX is invalid version string, thus pached version string is not '1.3.4nxdX+SlapOSPatched001'
# but '1.3.4nxdX-SlapOSPatched001'.
rdiff-backup = 1.3.4nxd6-SlapOSPatched001
rdiff-backup = 1.0.5+SlapOSPatched001
gunicorn = 19.1.1
plone.recipe.command = 1.1
slapos.recipe.template = 2.4.2
PyRSS2Gen = 1.1
apache-libcloud = 2.3.0
gitdb2 = 2.0.5
smmap2 = 2.0.5
......@@ -2,7 +2,7 @@ import datetime
import uuid
import PyRSS2Gen
import sys
from email.utils import parsedate_tz, mktime_tz
from dateutil.parser import parse
import base64
# Based on http://thehelpfulhacker.net/2011/03/27/a-rss-feed-for-your-crontabs/
......@@ -23,13 +23,13 @@ while 1:
if not line:
break
time, statistic, desc = line.split(',', 2)
time, statistic, desc = line.split(', ', 2)
rss_item = PyRSS2Gen.RSSItem(
title = desc,
description = "<p>%s</p>" % "<br/>".join(("%s, %s\n<a href='http://www.nongnu.org/rdiff-backup/FAQ.html#statistics'>Lastest statistic</a>\n%s" % (time, desc,
open(statistic).read())).split("\n")),
pubDate = datetime.datetime.fromtimestamp(mktime_tz(parsedate_tz(time))),
pubDate = parse(time),
guid = PyRSS2Gen.Guid(base64.b64encode("%s, %s" % (time, desc)), isPermaLink=0)
)
items.append(rss_item)
......
#!${dash-output:dash}
# trap "echo Backing up failed for $${:hostname}" ERR
# don't run if rdiff-backup is still running
# in that case, the promise will detect that previous rdiff backup took too long and report an error
${util-linux:location}/bin/flock --nb $${:status_log}.lock true || exit
export HOME=$${directory:home}
# Clean status file (no history needed)
${coreutils-output:rm} -f $${:status_log}
${coreutils-output:rm} -f $${:statistic_log}
# Inform about beginning of backup
${coreutils-output:echo} "`${coreutils-output:date} -u`,$${:statistic_log}, $${:hostname} backup running" >> $${:status_log}
${coreutils-output:echo} "Available only if backup succeed." >> $${:statistic_log}
${coreutils-output:echo} "`${coreutils-output:date} --iso-8601=seconds -u`, $${:statistic_log}, $${:hostname}, backup running" > $${:status_log}
${coreutils-output:echo} "Available only if backup succeed." > $${:statistic_log}
# set -e
cd $${:datadirectory}
${rdiff-backup-output:rdiff-backup} \
${util-linux:location}/bin/flock $${:status_log}.lock \
${rdiff-backup-output:rdiff-backup} \
$${:exclude_string} \
--include='$${:include}' \
--exclude='**' \
--remote-schema '${openssh-output:ssh} -6 -q -T -y -o "StrictHostKeyChecking no" -i $${:sshkey} -p $${:connection_port} %s $${:remote_schema}' \
--remote-schema '${openssh-output:ssh} -q -T -y -o "StrictHostKeyChecking no" -i $${:sshkey} -p $${:connection_port} %s $${:remote_schema}' \
$${:connection}::/ ./
RESULT=$?
# Inform about backup status
${coreutils-output:rm} -f $${:status_log}
if [ $RESULT -eq 0 ]
then
${coreutils-output:echo} "`${coreutils-output:date} -u`,$${:statistic_log},$${:hostname} backup success" >> $${:status_log}
${coreutils-output:rm} -f $${:statistic_log}
${findutils-output:find} rdiff-backup-data/ -maxdepth 1 -name "session_statistic*" | ${coreutils-output:sort} | ${coreutils-output:tail} -n 1 | ${findutils-output:xargs} ${rdiff-backup-output:rdiff-backup} --calculate-average >> $${:statistic_log}
${coreutils-output:echo} "`${coreutils-output:date} --iso-8601=seconds -u`, $${:statistic_log}, $${:hostname}, backup success" >> $${:status_log}
${findutils-output:find} rdiff-backup-data/ -maxdepth 1 -name "session_statistic*" | ${coreutils-output:sort} | ${coreutils-output:tail} -n 1 | ${findutils-output:xargs} ${rdiff-backup-output:rdiff-backup} --calculate-average > $${:statistic_log}
else
${coreutils-output:echo} "`${coreutils-output:date} -u`,$${:statistic_log},$${:hostname} backup failed" >> $${:status_log}
${coreutils-output:echo} "`${coreutils-output:date} --iso-8601=seconds -u`, $${:statistic_log}, $${:hostname}, backup failed" >> $${:status_log}
fi
# python scripts/verify_with_sudo.py ./ $${:connection}:/
......@@ -3,15 +3,15 @@
STATUS_DIR=$${directory:status}
RSS_DIR=$${directory:www}
CAT=${coreutils-output:cat}
TAIL=${coreutils-output:tail}
PYTHON=${buildout:directory}/bin/${extra-eggs:interpreter}
STATUS2RSS=${status2rss:output}
BASENAME=${coreutils-output:basename}
for status in $STATUS_DIR/*
for status in $STATUS_DIR/*.txt
do
NAME=`$BASENAME $status`
$CAT $status | $PYTHON $STATUS2RSS "Backup status $NAME" "https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/$NAME.rss" > $RSS_DIR/$NAME.rss
$TAIL -n 1 -q $status | $PYTHON $STATUS2RSS "Backup status $NAME" "https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/$NAME.rss" > $RSS_DIR/$NAME.rss
done
$CAT $STATUS_DIR/* | $PYTHON $STATUS2RSS "Full backup status $${:global_rss}" "https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/$${:global_rss}" > $RSS_DIR/$${:global_rss}
$TAIL -n 1 -q $STATUS_DIR/*.txt | $PYTHON $STATUS2RSS "Full backup status $${:global_rss}" "https://[$${nginx-configuration:ip}]:$${nginx-configuration:port}/$${:global_rss}" > $RSS_DIR/$${:global_rss}
......@@ -456,11 +456,15 @@ the proxy::
QUIC Protocol
=============
Experimental QUIC available in Caddy is not configurable, thus it is required to open port ``udp:11443`` on the machine, like::
Note: QUIC support in Caddy is really experimental. It can result with silently having problems with QUIC connections or hanging Caddy process. So in case of QUIC error ``QUIC_NETWORK_IDLE_TIMEOUT`` or ``QUIC_PEER_GOING_AWAY`` it is required to restart caddy process.
iptables -I INPUT -p udp --dport 11443 --destination ${ip} -j ACCEPT
Note: Chrome will refuse to connect to QUIC on different port then HTTPS has been served. As Caddy binds to high ports, if QUIC is wanted, the browser need to connect to high port too.
where ``${ip}`` is the IP of the partition with running caddy process.
Experimental QUIC available in Caddy is not configurable. If caddy is configured to bind to HTTPS port ``${port}``, QUIC is going to be advertised on this port only. It is not possible to configure another public port in case of port rewriting.
So it is required to ``DNAT`` from ``${public IP}`` of the computer to the computer partition running caddy ``${local IP}`` with configured port::
iptables -A DNAT -d ${public IP}/32 -p udp -m udp --dport ${port} -j DNAT --to-destination ${local IP}:${port}
Notes
......
Generally things to be done with ``caddy-frontend``:
* return warning on not implemented keys (from ``apache-frontend`` perspective) in master and slave request
* tests: add assertion with results of promises in etc/promise for each partition
* README: cleanup the documentation, explain various specifics
* 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``
* ``apache-ca-certificate`` shall be appended to ``apache-certificate`` if not already there
* BUG?? check that changing ``apache-certificate`` on master partition results in reloading slave partition
* provide ``apache-frontend`` to ``caddy-frontend`` migration information
* (new) ``type:websocket`` slave
* ``type:eventsource``:
* **Jérome Perrin**: *For event source, if I understand https://github.com/mholt/caddy/issues/1355 correctly, we could use caddy as a proxy in front of nginx-push-stream . If we have a "central shared" caddy instance, can it handle keeping connections opens for many clients ?*
* ``check-error-on-caddy-log`` like ``check-error-on-apache-log``
* cover test suite like resilient tests for KVM and prove it works the same way as Caddy
* have ``caddy-frontend`` specific parameters, with backward compatibility to ``apache-frontend`` ones:
* ``apache-ca-certificate``
* ``apache-certificate`` and ``apache-key``
* use `slapos!326 <https://lab.nexedi.com/nexedi/slapos/merge_requests/326>`_, and especially `note about complex restart scenarios <https://lab.nexedi.com/nexedi/slapos/merge_requests/326#note_60198>`_, instead of self-developed graceful restart scripts
* move out ``test/utils.py`` and use it from shared python distribution
* provide various tricks for older browsers::
# The following directives modify normal HTTP response behavior to
# handle known problems with browser implementations.
BrowserMatch "Mozilla/2" nokeepalive
BrowserMatch ".*MSIE.*" nokeepalive ssl-unclean-shutdown \
downgrade-1.0 force-response-1.0
BrowserMatch "RealPlayer 4\.0" force-response-1.0
BrowserMatch "Java/1\.0" force-response-1.0
BrowserMatch "JDK/1\.0" force-response-1.0
# The following directive disables redirects on non-GET requests for
# a directory that does not include the trailing slash. This fixes a
# problem with Microsoft WebFolders which does not appropriately handle
# redirects for folders with DAV methods.
# Same deal with Apple's DAV filesystem and Gnome VFS support for DAV.
BrowserMatch "Microsoft Data Access Internet Publishing Provider" redirect-carefully
BrowserMatch "MS FrontPage" redirect-carefully
BrowserMatch "^WebDrive" redirect-carefully
BrowserMatch "^WebDAVFS/1.[0123]" redirect-carefully
BrowserMatch "^gnome-vfs" redirect-carefully
BrowserMatch "^XML Spy" redirect-carefully
BrowserMatch "^Dreamweaver-WebDAV-SCM1" redirect-carefully
* check, and if needed apply, Apache-like SSL configuration switches::
# SSL Configuration
SSLProtocol all -SSLv2 -SSLv3
SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:HIGH:!aNULL:!MD5
SSLHonorCipherOrder on
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
* reduce the time of configuration validation (in ``instance-apache-frontend.cfg.in`` sections ``[configtest]``, ``[caddy-configuration]``, ``[nginx-configuration]``), as it is not scalable on frontend with 2000+ slaves (takes few minutes instead of few, < 5, seconds), issue posted `upstream <https://github.com/mholt/caddy/issues/2220>`_
* drop ``6tunnel`` and use ``bind`` in Caddy configuration, as soon as multiple binds will be possible, tracked in upstream `bind: support multiple values <https://github.com/mholt/caddy/pull/2128>`_ and `ipv6: does not bind on ipv4 and ipv6 for sites that resolve to both <https://github.com/mholt/caddy/issues/864>`_
* use caddy-frontend in `standalone style playbooks <https://lab.nexedi.com/nexedi/slapos.package/tree/master/playbook/roles/standalone-shared>`_
* in ``templates/apache-custom-slave-list.cfg.in`` avoid repetetive ``part_list.append`` and use macro like in ERP5 SR (cf `Vincent's comment <https://lab.nexedi.com/nexedi/slapos/merge_requests/373#note_64362>`_)
* **Jérome Perrin**: consider privacy implications/GDPR compliance of https://caddyserver.com/docs/telemetry and decide if we should leave it enabled.
Things which can't be implemented:
* use certificates valid forever in tests using `cryptography <https://pypi.org/project/cryptography/>`_, with `available example <https://lab.nexedi.com/nexedi/caucase/blob/1c9b9b6dfb062551549566d9792a1608f5e0c2d9/caucase/ca.py#L460-552>`_
* **REASON**: it is impossible to generate certificate without `Not Valid After`, even with `cryptography <https://pypi.org/project/cryptography/>`_
......@@ -30,7 +30,7 @@ md5sum = 6a86edb96b171fbd0a59d0adc9cc906b
[template-slave-list]
filename = templates/apache-custom-slave-list.cfg.in
md5sum = 434e00cbfee2f9c002b2a83084a48b4a
md5sum = 232ee8c086db6f452e0c98e3869a2433
[template-slave-configuration]
filename = templates/custom-virtualhost.conf.in
......
......@@ -112,6 +112,23 @@ crl = {{ custom_ssl_directory }}/crl/
[slave-log-directory-dict]
{{slave_reference}} = {{ slave_log_folder }}
[slave-log-directories]
<= slave-log-directory-dict
recipe = slapos.cookbook:mkdirectory
{% do part_list.append('slave-log-directories') %}
[caddy-log-access]
< = jinja2-template-base
template = {{frontend_configuration.get('template-log-access')}}
rendered = {{frontend_configuration.get('log-access-configuration')}}
extra-context =
section slave_log_directory slave-log-directory-dict
section slave_password slave-password
section parameter_dict caddy-log-access-parameters
{% do part_list.append('caddy-log-access') %}
[slave-password]
{{ slave_reference }} = {{ '${' + slave_password_section + ':passwd}' }}
......@@ -329,10 +346,6 @@ extra-context =
{{ '\n' }}
{% endfor %}
[slave-log-directories]
<= slave-log-directory-dict
recipe = slapos.cookbook:mkdirectory
{#- Define IPv6 to IPV4 tunneling #}
[tunnel-6to4-base]
recipe = slapos.cookbook:wrapper
......@@ -340,6 +353,7 @@ ipv4 = ${slap-network-information:local-ipv4}
ipv6 = ${slap-network-information:global-ipv6}
wrapper-path = {{ service_directory}}/6tunnel-${:ipv6-port}
command-line = {{ sixtunnel_executable }} -6 -4 -d -l ${:ipv6} ${:ipv6-port} ${:ipv4} ${:ipv4-port}
hash-files = ${buildout:directory}/software_release/buildout.cfg
[tunnel-6to4-base-http_port]
<= tunnel-6to4-base
......@@ -408,12 +422,10 @@ monitor-base-url = {{ monitor_base_url }}
[buildout]
extends = {{ common_profile }}
parts +=
slave-log-directories
{% for part in part_list %}
{{ ' %s' % part }}
{% endfor %}
publish-caddy-information
caddy-log-access
tunnel-6to4-base-http_port
tunnel-6to4-base-https_port
tunnel-6to4-base-cached_port
......
......@@ -35,6 +35,7 @@ import multiprocessing
import subprocess
from unittest import skip
import ssl
import signal
from BaseHTTPServer import HTTPServer
from BaseHTTPServer import BaseHTTPRequestHandler
from forcediphttpsadapter.adapters import ForcedIPHTTPSAdapter
......@@ -54,8 +55,8 @@ from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.x509.oid import NameOID
LOCAL_IPV4 = os.environ['LOCAL_IPV4']
GLOBAL_IPV6 = os.environ['GLOBAL_IPV6']
SLAPOS_TEST_IPV4 = os.environ['SLAPOS_TEST_IPV4']
SLAPOS_TEST_IPV6 = os.environ['SLAPOS_TEST_IPV6']
# ports chosen to not collide with test systems
HTTP_PORT = '11080'
......@@ -68,7 +69,7 @@ MONITOR_F2_HTTPD_PORT = '13002'
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......@@ -310,6 +311,9 @@ class TestDataMixin(object):
self._test_file_list('run', [
# run by cron from time to time
'monitor/monitor-collect.pid',
# may appear or not
'var/run/caddy_graceful_signature.tmp',
'var/run/nginx_graceful_signature.tmp',
])
def test_supervisor_state(self):
......@@ -333,7 +337,7 @@ class HttpFrontendTestCase(SlapOSInstanceTestCase):
@classmethod
def getSoftwareURLList(cls):
return [os.path.realpath(os.environ['TEST_SR'])]
return (os.path.abspath(os.path.join(os.path.dirname(__file__), '..', 'software.cfg')), )
@classmethod
def setUpClass(cls):
......@@ -473,17 +477,17 @@ class SlaveHttpFrontendTestCase(HttpFrontendTestCase):
@classmethod
def startServerProcess(cls):
server = HTTPServer(
(LOCAL_IPV4, findFreeTCPPort(LOCAL_IPV4)),
(SLAPOS_TEST_IPV4, findFreeTCPPort(SLAPOS_TEST_IPV4)),
TestHandler)
server_https = HTTPServer(
(LOCAL_IPV4, findFreeTCPPort(LOCAL_IPV4)),
(SLAPOS_TEST_IPV4, findFreeTCPPort(SLAPOS_TEST_IPV4)),
TestHandler)
cls.another_server_ca = CertificateAuthority("Another Server Root CA")
cls.test_server_ca = CertificateAuthority("Test Server Root CA")
key, key_pem, csr, csr_pem = createCSR(
"testserver.example.com", LOCAL_IPV4)
"testserver.example.com", SLAPOS_TEST_IPV4)
_, cls.test_server_certificate_pem = cls.test_server_ca.signCSR(csr)
cls.test_server_certificate_file = tempfile.NamedTemporaryFile(
......@@ -717,7 +721,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'-frontend-authorized-slave-string':
......@@ -1069,7 +1073,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://empty.example.com',
'site_url': 'http://empty.example.com',
'secure_access': 'https://empty.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
}
)
......@@ -1130,7 +1134,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://url.example.com',
'site_url': 'http://url.example.com',
'secure_access': 'https://url.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1191,17 +1195,17 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://url.example.com',
'site_url': 'http://url.example.com',
'secure_access': 'https://url.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
result_ipv6 = self.fakeHTTPSResult(
parameter_dict['domain'], GLOBAL_IPV6, 'test-path',
source_ip=GLOBAL_IPV6)
parameter_dict['domain'], SLAPOS_TEST_IPV6, 'test-path',
source_ip=SLAPOS_TEST_IPV6)
self.assertEqual(
GLOBAL_IPV6,
SLAPOS_TEST_IPV6,
result_ipv6.json()['Incoming Headers']['x-forwarded-for']
)
......@@ -1221,7 +1225,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://typezopepath.example.com',
'site_url': 'http://typezopepath.example.com',
'secure_access': 'https://typezopepath.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1250,7 +1254,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://typezopedefaultpath.example.com',
'site_url': 'http://typezopedefaultpath.example.com',
'secure_access': 'https://typezopedefaultpath.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1278,7 +1282,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://serveralias.example.com',
'site_url': 'http://serveralias.example.com',
'secure_access': 'https://serveralias.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1318,7 +1322,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://serveraliaswildcard.example.com',
'site_url': 'http://serveraliaswildcard.example.com',
'secure_access': 'https://serveraliaswildcard.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1351,7 +1355,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://serveraliasduplicated.example.com',
'site_url': 'http://serveraliasduplicated.example.com',
'secure_access': 'https://serveraliasduplicated.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1385,7 +1389,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://alias4.example.com',
'site_url': 'http://alias4.example.com',
'secure_access': 'https://alias4.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1416,7 +1420,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://customdomainsslcrtsslkeysslcacrt.example.com',
'secure_access':
'https://customdomainsslcrtsslkeysslcacrt.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1450,7 +1454,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://sslcacrtgarbage.example.com',
'secure_access':
'https://sslcacrtgarbage.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1470,7 +1474,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://sslcacrtdoesnotmatch.example.com',
'secure_access':
'https://sslcacrtdoesnotmatch.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1494,7 +1498,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://httpsonly.example.com',
'site_url': 'http://httpsonly.example.com',
'secure_access': 'https://httpsonly.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1526,7 +1530,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://customdomain.example.com',
'site_url': 'http://customdomain.example.com',
'secure_access': 'https://customdomain.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1550,7 +1554,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://*.customdomain.example.com',
'site_url': 'http://*.customdomain.example.com',
'secure_access': 'https://*.customdomain.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1576,7 +1580,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://customdomainsslcrtsslkey.example.com',
'site_url': 'http://customdomainsslcrtsslkey.example.com',
'secure_access': 'https://customdomainsslcrtsslkey.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1600,7 +1604,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://typezope.example.com',
'site_url': 'http://typezope.example.com',
'secure_access': 'https://typezope.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1647,7 +1651,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://typezopevirtualhostroothttpport.example.com',
'secure_access':
'https://typezopevirtualhostroothttpport.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1674,7 +1678,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://typezopevirtualhostroothttpsport.example.com',
'secure_access':
'https://typezopevirtualhostroothttpsport.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1703,7 +1707,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://typenotebook.nginx.example.com',
'site_url': 'http://typenotebook.nginx.example.com',
'secure_access': 'https://typenotebook.nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1744,7 +1748,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://typeeventsource.nginx.example.com',
'site_url': 'http://typeeventsource.nginx.example.com',
'secure_access': 'https://typeeventsource.nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1785,7 +1789,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://typeredirect.example.com',
'site_url': 'http://typeredirect.example.com',
'secure_access': 'https://typeredirect.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1816,7 +1820,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'http://sslproxyverifysslproxycacrtunverified.example.com',
'secure_access':
'https://sslproxyverifysslproxycacrtunverified.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1853,7 +1857,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://sslproxyverifysslproxycacrt.example.com',
'site_url': 'http://sslproxyverifysslproxycacrt.example.com',
'secure_access': 'https://sslproxyverifysslproxycacrt.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1915,7 +1919,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://sslproxyverifyunverified.example.com',
'site_url': 'http://sslproxyverifyunverified.example.com',
'secure_access': 'https://sslproxyverifyunverified.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1948,7 +1952,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'http://enablecachesslproxyverifysslproxycacrtunverified.example.com',
'secure_access':
'https://enablecachesslproxyverifysslproxycacrtunverified.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -1987,7 +1991,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'http://enablecachesslproxyverifysslproxycacrt.example.com',
'secure_access':
'https://enablecachesslproxyverifysslproxycacrt.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2080,7 +2084,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://enablecachesslproxyverifyunverified.example.com',
'secure_access':
'https://enablecachesslproxyverifyunverified.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2112,7 +2116,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'http://typezopesslproxyverifysslproxycacrtunverified.example.com',
'secure_access':
'https://typezopesslproxyverifysslproxycacrtunverified.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2150,7 +2154,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://typezopesslproxyverifysslproxycacrt.example.com',
'secure_access':
'https://typezopesslproxyverifysslproxycacrt.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2200,7 +2204,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://typezopesslproxyverifyunverified.example.com',
'secure_access':
'https://typezopesslproxyverifyunverified.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2227,7 +2231,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://monitoripv6test.example.com',
'site_url': 'http://monitoripv6test.example.com',
'secure_access': 'https://monitoripv6test.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2269,7 +2273,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://monitoripv4test.example.com',
'site_url': 'http://monitoripv4test.example.com',
'secure_access': 'https://monitoripv4test.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2311,7 +2315,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://re6stoptimaltest.example.com',
'site_url': 'http://re6stoptimaltest.example.com',
'secure_access': 'https://re6stoptimaltest.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2354,7 +2358,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://enablecache.example.com',
'site_url': 'http://enablecache.example.com',
'secure_access': 'https://enablecache.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2446,7 +2450,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://enablecachedisablenocacherequest.example.com',
'secure_access':
'https://enablecachedisablenocacherequest.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2499,7 +2503,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://enablecachedisableviaheader.example.com',
'secure_access':
'https://enablecachedisableviaheader.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2543,7 +2547,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://enablehttp2false.example.com',
'secure_access':
'https://enablehttp2false.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2592,7 +2596,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://enablehttp2default.example.com',
'secure_access':
'https://enablehttp2default.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2642,7 +2646,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'site_url': 'http://prefergzipencodingtobackend.example.com',
'secure_access':
'https://prefergzipencodingtobackend.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2679,7 +2683,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://disabledcookielist.example.com',
'site_url': 'http://disabledcookielist.example.com',
'secure_access': 'https://disabledcookielist.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2727,7 +2731,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'apache_custom_http_s-accepted')
self.assertLogAccessUrlWithPop(parameter_dict)
self.assertEqual(
{'replication_number': '1', 'public-ipv4': LOCAL_IPV4},
{'replication_number': '1', 'public-ipv4': SLAPOS_TEST_IPV4},
parameter_dict
)
......@@ -2825,7 +2829,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'caddy_custom_http_s-accepted')
self.assertLogAccessUrlWithPop(parameter_dict)
self.assertEqual(
{'replication_number': '1', 'public-ipv4': LOCAL_IPV4},
{'replication_number': '1', 'public-ipv4': SLAPOS_TEST_IPV4},
parameter_dict
)
......@@ -2886,7 +2890,7 @@ http://apachecustomhttpsaccepted.example.com:%%(http_port)s {
'url': 'http://urlhttpsurl.example.com',
'site_url': 'http://urlhttpsurl.example.com',
'secure_access': 'https://urlhttpsurl.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2911,7 +2915,7 @@ class TestReplicateSlave(SlaveHttpFrontendTestCase, TestDataMixin):
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'-frontend-quantity': 2,
......@@ -2944,7 +2948,7 @@ class TestReplicateSlave(SlaveHttpFrontendTestCase, TestDataMixin):
'url': 'http://replicate.example.com',
'site_url': 'http://replicate.example.com',
'secure_access': 'https://replicate.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -2982,7 +2986,7 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'enable-http2-by-default': 'false',
......@@ -3018,7 +3022,7 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
'site_url': 'http://enablehttp2default.example.com',
'secure_access':
'https://enablehttp2default.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3037,7 +3041,7 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
'site_url': 'http://enablehttp2false.example.com',
'secure_access':
'https://enablehttp2false.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3056,7 +3060,7 @@ class TestEnableHttp2ByDefaultFalseSlave(SlaveHttpFrontendTestCase,
'site_url': 'http://enablehttp2true.example.com',
'secure_access':
'https://enablehttp2true.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3072,7 +3076,7 @@ class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase,
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'port': HTTPS_PORT,
......@@ -3107,7 +3111,7 @@ class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase,
'site_url': 'http://enablehttp2default.example.com',
'secure_access':
'https://enablehttp2default.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3126,7 +3130,7 @@ class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase,
'site_url': 'http://enablehttp2false.example.com',
'secure_access':
'https://enablehttp2false.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3145,7 +3149,7 @@ class TestEnableHttp2ByDefaultDefaultSlave(SlaveHttpFrontendTestCase,
'site_url': 'http://enablehttp2true.example.com',
'secure_access':
'https://enablehttp2true.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3258,7 +3262,7 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase,
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'port': HTTPS_PORT,
......@@ -3314,7 +3318,7 @@ class TestMalformedBackenUrlSlave(SlaveHttpFrontendTestCase,
'url': 'http://empty.example.com',
'site_url': 'http://empty.example.com',
'secure_access': 'https://empty.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3382,9 +3386,9 @@ class TestDefaultMonitorHttpdPort(SlaveHttpFrontendTestCase, TestDataMixin):
'monitor-httpd.conf')).read()
self.assertTrue(
'Listen [%s]:8196' % (GLOBAL_IPV6,) in master_monitor_conf)
'Listen [%s]:8196' % (SLAPOS_TEST_IPV6,) in master_monitor_conf)
self.assertTrue(
'Listen [%s]:8072' % (GLOBAL_IPV6,) in slave_monitor_conf)
'Listen [%s]:8072' % (SLAPOS_TEST_IPV6,) in slave_monitor_conf)
class TestQuicEnabled(SlaveHttpFrontendTestCase, TestDataMixin):
......@@ -3393,7 +3397,7 @@ class TestQuicEnabled(SlaveHttpFrontendTestCase, TestDataMixin):
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'enable-quic': 'true',
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
......@@ -3440,7 +3444,7 @@ class TestQuicEnabled(SlaveHttpFrontendTestCase, TestDataMixin):
'url': 'http://url.example.com',
'site_url': 'http://url.example.com',
'secure_access': 'https://url.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3463,26 +3467,38 @@ class TestQuicEnabled(SlaveHttpFrontendTestCase, TestDataMixin):
self.assertKeyWithPop('Date', result.headers)
self.assertKeyWithPop('Content-Length', result.headers)
quic_status, quic_result = getQUIC(
'https://%s/%s' % (parameter_dict['domain'], 'test-path'),
parameter_dict['public-ipv4'],
HTTPS_PORT
)
def assertQUIC():
quic_status, quic_result = getQUIC(
'https://%s/%s' % (parameter_dict['domain'], 'test-path'),
parameter_dict['public-ipv4'],
HTTPS_PORT
)
self.assertTrue(quic_status, quic_result)
self.assertTrue(quic_status, quic_result)
try:
quic_jsoned = quic_result.split('body: ')[2].split('trailers')[0]
except Exception:
raise ValueError('JSON not found at all in QUIC result:\n%s' % (
quic_result,))
try:
j = json.loads(quic_jsoned)
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (quic_jsoned,))
key = 'Path'
self.assertTrue(key in j, 'No key %r in %s' % (key, j))
self.assertEqual('/test-path', j[key])
try:
quic_jsoned = quic_result.split('body: ')[2].split('trailers')[0]
except Exception:
raise ValueError('JSON not found at all in QUIC result:\n%s' % (
quic_result,))
try:
j = json.loads(quic_jsoned)
except Exception:
raise ValueError('JSON decode problem in:\n%s' % (quic_jsoned,))
key = 'Path'
self.assertTrue(key in j, 'No key %r in %s' % (key, j))
self.assertEqual('/test-path', j[key])
assertQUIC()
# https://github.com/mholt/caddy/issues/2394
# after sending USR1 to Caddy QUIC does not work, check current behaviour
caddy_pid = [
q['pid'] for q
in self.getSupervisorRPCServer().supervisor.getAllProcessInfo()
if 'frontend_caddy' in q['name']][0]
os.kill(caddy_pid, signal.SIGUSR1)
assertQUIC()
class TestSlaveBadParameters(SlaveHttpFrontendTestCase, TestDataMixin):
......@@ -3491,7 +3507,7 @@ class TestSlaveBadParameters(SlaveHttpFrontendTestCase, TestDataMixin):
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'-frontend-authorized-slave-string': '_caddy_custom_http_s-reject',
......@@ -3603,7 +3619,7 @@ https://www.google.com {}""",
'url': 'http://serveraliassame.example.com',
'site_url': 'http://serveraliassame.example.com',
'secure_access': 'https://serveraliassame.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3627,7 +3643,7 @@ https://www.google.com {}""",
'url': 'http://re6stoptimaltestunsafe.example.com',
'site_url': 'http://re6stoptimaltestunsafe.example.com',
'secure_access': 'https://re6stoptimaltestunsafe.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3670,7 +3686,7 @@ https://www.google.com {}""",
'url': 'http://re6stoptimaltestnocomma.example.com',
'site_url': 'http://re6stoptimaltestnocomma.example.com',
'secure_access': 'https://re6stoptimaltestnocomma.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3728,7 +3744,7 @@ https://www.google.com {}""",
'site_url': 'http://virtualhostroothttpportunsafe.example.com',
'secure_access':
'https://virtualhostroothttpportunsafe.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3755,7 +3771,7 @@ https://www.google.com {}""",
'site_url': 'http://virtualhostroothttpsportunsafe.example.com',
'secure_access':
'https://virtualhostroothttpsportunsafe.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3784,7 +3800,7 @@ https://www.google.com {}""",
'url': 'http://defaultpathunsafe.example.com',
'site_url': 'http://defaultpathunsafe.example.com',
'secure_access': 'https://defaultpathunsafe.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3812,7 +3828,7 @@ https://www.google.com {}""",
'url': 'http://monitoripv4testunsafe.example.com',
'site_url': 'http://monitoripv4testunsafe.example.com',
'secure_access': 'https://monitoripv4testunsafe.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3854,7 +3870,7 @@ https://www.google.com {}""",
'url': 'http://monitoripv6testunsafe.example.com',
'site_url': 'http://monitoripv6testunsafe.example.com',
'secure_access': 'https://monitoripv6testunsafe.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -3912,7 +3928,7 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
return {
'domain': 'example.com',
'nginx-domain': 'nginx.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
'apache-certificate': cls.certificate_pem,
'apache-key': cls.key_pem,
'-frontend-authorized-slave-string': '_caddy_custom_http_s-reject',
......@@ -3984,7 +4000,7 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
'url': 'http://duplicate.example.com',
'site_url': 'http://duplicate.example.com',
'secure_access': 'https://duplicate.example.com',
'public-ipv4': LOCAL_IPV4,
'public-ipv4': SLAPOS_TEST_IPV4,
},
parameter_dict
)
......@@ -4006,56 +4022,3 @@ class TestDuplicateSiteKeyProtection(SlaveHttpFrontendTestCase, TestDataMixin):
},
parameter_dict
)
class AutoRestartTestCase(SlaveHttpFrontendTestCase):
@classmethod
def getInstanceParameterDict(cls):
return {
'-frontend-1-state': 'stopped',
}
@classmethod
def getSlaveParameterDictDict(cls):
return {
'test': {
'url': cls.backend_url,
},
}
@staticmethod
def generateHashFromFiles(file_list):
import hashlib
hasher = hashlib.md5()
for path in file_list:
with open(path, 'r') as afile:
buf = afile.read()
hasher.update("%s\n" % len(buf))
hasher.update(buf)
hash = hasher.hexdigest()
return hash
def test_hashes(self):
hash_files = [
'software_release/buildout.cfg',
]
expected_process_names = [
'frontend_caddy-{hash}-on-watch',
'frontend_nginx-{hash}-on-watch',
'trafficserver-{hash}-on-watch',
'certificate_authority-{hash}-on-watch',
'crond-{hash}',
]
supervisor = self.getSupervisorRPCServer().supervisor
process_names = [process['name']
for process in supervisor.getAllProcessInfo()]
hash_files = [os.path.join(self.computer_partition_root_path, path)
for path in hash_files]
for name in expected_process_names:
h = self.generateHashFromFiles(hash_files)
expected_process_name = name.format(hash=h)
self.assertIn(expected_process_name, process_names)
......@@ -3,12 +3,12 @@ TestDefaultMonitorHttpdPort-0:certificate_authority-on-watch RUNNING
TestDefaultMonitorHttpdPort-0:crond-{hash} RUNNING
TestDefaultMonitorHttpdPort-0:monitor-httpd-{hash}-on-watch EXITED
TestDefaultMonitorHttpdPort-0:monitor-httpd-graceful EXITED
TestDefaultMonitorHttpdPort-1:6tunnel-26011-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-26012-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-4443-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-8080-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-8081-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-9443-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-26011-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-26012-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-4443-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-8080-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-8081-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:6tunnel-9443-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:bootstrap-monitor STOPPED
TestDefaultMonitorHttpdPort-1:certificate_authority-{hash}-on-watch STOPPED
TestDefaultMonitorHttpdPort-1:crond-{hash} STOPPED
......
TestDuplicateSiteKeyProtection-0/var/run/monitor-httpd.pid
TestDuplicateSiteKeyProtection-0/var/run/monitor/monitor-bootstrap.pid
TestDuplicateSiteKeyProtection-1/var/run/caddy_graceful_signature
TestDuplicateSiteKeyProtection-1/var/run/caddy_graceful_signature.tmp
TestDuplicateSiteKeyProtection-1/var/run/caddy_validate_signature
TestDuplicateSiteKeyProtection-1/var/run/caddy_validate_signature.status
TestDuplicateSiteKeyProtection-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestDuplicateSiteKeyProtection-1/var/run/monitor-httpd.pid
TestDuplicateSiteKeyProtection-1/var/run/monitor/monitor-bootstrap.pid
TestDuplicateSiteKeyProtection-1/var/run/nginx.pid
TestDuplicateSiteKeyProtection-1/var/run/nginx_graceful_signature
TestDuplicateSiteKeyProtection-1/var/run/nginx_graceful_signature.tmp
TestDuplicateSiteKeyProtection-1/var/run/nginx_validate_signature
TestDuplicateSiteKeyProtection-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestDuplicateSiteKeyProtection-0:certificate_authority-on-watch RUNNING
TestDuplicateSiteKeyProtection-0:crond-{hash} RUNNING
TestDuplicateSiteKeyProtection-0:monitor-httpd-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-0:monitor-httpd-graceful EXITED
TestDuplicateSiteKeyProtection-1:6tunnel-11080-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-11443-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-12080-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-12443-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-26011-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-26012-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-11080-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-11443-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-12080-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-12443-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-26011-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:6tunnel-26012-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:bootstrap-monitor EXITED
TestDuplicateSiteKeyProtection-1:certificate_authority-{hash}-on-watch RUNNING
TestDuplicateSiteKeyProtection-1:crond-{hash} RUNNING
......
TestEnableHttp2ByDefaultDefaultSlave-0/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultDefaultSlave-0/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/caddy_graceful_signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/caddy_graceful_signature.tmp
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/caddy_validate_signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/caddy_validate_signature.status
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestEnableHttp2ByDefaultDefaultSlave-1/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx.pid
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx_graceful_signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx_graceful_signature.tmp
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx_validate_signature
TestEnableHttp2ByDefaultDefaultSlave-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestEnableHttp2ByDefaultDefaultSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:crond-{hash} RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-0:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-11080-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-11443-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-12080-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-12443-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-26011-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-26012-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultDefaultSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultDefaultSlave-1:crond-{hash} RUNNING
......
TestEnableHttp2ByDefaultFalseSlave-0/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultFalseSlave-0/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/caddy_graceful_signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/caddy_graceful_signature.tmp
TestEnableHttp2ByDefaultFalseSlave-1/var/run/caddy_validate_signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/caddy_validate_signature.status
TestEnableHttp2ByDefaultFalseSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestEnableHttp2ByDefaultFalseSlave-1/var/run/monitor-httpd.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/monitor/monitor-bootstrap.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx.pid
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx_graceful_signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx_graceful_signature.tmp
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx_validate_signature
TestEnableHttp2ByDefaultFalseSlave-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestEnableHttp2ByDefaultFalseSlave-0:certificate_authority-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:crond-{hash} RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-0:monitor-httpd-graceful EXITED
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-11080-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-11443-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-12080-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-12443-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-26011-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-26012-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:bootstrap-monitor EXITED
TestEnableHttp2ByDefaultFalseSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestEnableHttp2ByDefaultFalseSlave-1:crond-{hash} RUNNING
......
TestMalformedBackenUrlSlave-0/var/run/monitor-httpd.pid
TestMalformedBackenUrlSlave-0/var/run/monitor/monitor-bootstrap.pid
TestMalformedBackenUrlSlave-1/var/run/caddy_graceful_signature
TestMalformedBackenUrlSlave-1/var/run/caddy_graceful_signature.tmp
TestMalformedBackenUrlSlave-1/var/run/caddy_validate_signature
TestMalformedBackenUrlSlave-1/var/run/caddy_validate_signature.status
TestMalformedBackenUrlSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestMalformedBackenUrlSlave-1/var/run/monitor-httpd.pid
TestMalformedBackenUrlSlave-1/var/run/monitor/monitor-bootstrap.pid
TestMalformedBackenUrlSlave-1/var/run/nginx.pid
TestMalformedBackenUrlSlave-1/var/run/nginx_graceful_signature
TestMalformedBackenUrlSlave-1/var/run/nginx_graceful_signature.tmp
TestMalformedBackenUrlSlave-1/var/run/nginx_validate_signature
TestMalformedBackenUrlSlave-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestMalformedBackenUrlSlave-0:certificate_authority-on-watch RUNNING
TestMalformedBackenUrlSlave-0:crond-{hash} RUNNING
TestMalformedBackenUrlSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-0:monitor-httpd-graceful EXITED
TestMalformedBackenUrlSlave-1:6tunnel-11080-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-11443-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-12080-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-12443-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-26011-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-26012-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:bootstrap-monitor EXITED
TestMalformedBackenUrlSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestMalformedBackenUrlSlave-1:crond-{hash} RUNNING
......
TestMasterRequest-0/var/log/monitor-httpd-error.log
\ No newline at end of file
TestMasterRequest-0/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-httpd.pid
TestMasterRequest-0/var/run/monitor/monitor-bootstrap.pid
\ No newline at end of file
TestMasterRequest-0/var/run/monitor/monitor-bootstrap.pid
TestMasterRequest-1/var/run/caddy_graceful_signature
TestMasterRequest-1/var/run/caddy_validate_signature
TestMasterRequest-1/var/run/caddy_validate_signature.status
TestMasterRequest-1/var/run/monitor/monitor-bootstrap.pid
TestMasterRequest-1/var/run/nginx.pid
TestMasterRequest-1/var/run/nginx_graceful_signature
TestMasterRequest-1/var/run/nginx_validate_signature
TestMasterRequest-1/var/run/nginx_validate_signature.status
\ No newline at end of file
TestMasterRequest-0/etc/plugin/__init__.py
TestMasterRequest-0/etc/plugin/buildout-TestMasterRequest-0-status.py
TestMasterRequest-0/etc/plugin/check-free-disk-space.py
TestMasterRequest-0/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
TestMasterRequest-0/etc/plugin/monitor-bootstrap-status.py
TestMasterRequest-1/etc/plugin/__init__.py
TestMasterRequest-1/etc/plugin/buildout-TestMasterRequest-1-status.py
TestMasterRequest-1/etc/plugin/check-free-disk-space.py
TestMasterRequest-1/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
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/monitor-http-frontend
\ No newline at end of file
TestMasterRequest-1/etc/promise/caddy-frontend-is-running-actual-software-release
TestMasterRequest-1/etc/promise/caddy_cached
TestMasterRequest-1/etc/promise/caddy_frontend_ipv4_http
TestMasterRequest-1/etc/promise/caddy_frontend_ipv4_https
TestMasterRequest-1/etc/promise/caddy_frontend_ipv6_http
TestMasterRequest-1/etc/promise/caddy_frontend_ipv6_https
TestMasterRequest-1/etc/promise/caddy_ssl_cached
TestMasterRequest-1/etc/promise/frontend-caddy-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
......@@ -3,4 +3,22 @@ TestMasterRequest-0:certificate_authority-on-watch RUNNING
TestMasterRequest-0:crond-{hash} RUNNING
TestMasterRequest-0:monitor-httpd-{hash}-on-watch RUNNING
TestMasterRequest-0:monitor-httpd-graceful EXITED
TestMasterRequest-1:6tunnel-11080-{hash}-on-watch RUNNING
TestMasterRequest-1:6tunnel-11443-{hash}-on-watch RUNNING
TestMasterRequest-1:6tunnel-12080-{hash}-on-watch RUNNING
TestMasterRequest-1:6tunnel-12443-{hash}-on-watch RUNNING
TestMasterRequest-1:6tunnel-26011-{hash}-on-watch RUNNING
TestMasterRequest-1:6tunnel-26012-{hash}-on-watch RUNNING
TestMasterRequest-1:bootstrap-monitor EXITED
TestMasterRequest-1:certificate_authority-{hash}-on-watch RUNNING
TestMasterRequest-1:crond-{hash} RUNNING
TestMasterRequest-1:crond-on-watch RUNNING
TestMasterRequest-1:frontend-caddy-safe-graceful EXITED
TestMasterRequest-1:frontend-nginx-safe-graceful EXITED
TestMasterRequest-1:frontend_caddy-{hash}-on-watch EXITED
TestMasterRequest-1:frontend_nginx-{hash}-on-watch RUNNING
TestMasterRequest-1:monitor-httpd-{hash}-on-watch EXITED
TestMasterRequest-1:monitor-httpd-graceful EXITED
TestMasterRequest-1:trafficserver-{hash}-on-watch RUNNING
TestMasterRequest-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestMasterRequestDomain-0/var/log/monitor-httpd-error.log
\ No newline at end of file
TestMasterRequestDomain-0/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-httpd.pid
TestMasterRequestDomain-0/var/run/monitor/monitor-bootstrap.pid
\ No newline at end of file
TestMasterRequestDomain-0/var/run/monitor/monitor-bootstrap.pid
TestMasterRequestDomain-1/var/run/caddy_graceful_signature
TestMasterRequestDomain-1/var/run/caddy_validate_signature
TestMasterRequestDomain-1/var/run/caddy_validate_signature.status
TestMasterRequestDomain-1/var/run/monitor/monitor-bootstrap.pid
TestMasterRequestDomain-1/var/run/nginx.pid
TestMasterRequestDomain-1/var/run/nginx_graceful_signature
TestMasterRequestDomain-1/var/run/nginx_validate_signature
TestMasterRequestDomain-1/var/run/nginx_validate_signature.status
\ No newline at end of file
TestMasterRequestDomain-0/etc/plugin/__init__.py
TestMasterRequestDomain-0/etc/plugin/buildout-TestMasterRequestDomain-0-status.py
TestMasterRequestDomain-0/etc/plugin/check-free-disk-space.py
TestMasterRequestDomain-0/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
TestMasterRequestDomain-0/etc/plugin/monitor-bootstrap-status.py
TestMasterRequestDomain-1/etc/plugin/__init__.py
TestMasterRequestDomain-1/etc/plugin/buildout-TestMasterRequestDomain-1-status.py
TestMasterRequestDomain-1/etc/plugin/check-free-disk-space.py
TestMasterRequestDomain-1/etc/plugin/monitor-bootstrap-status.py
\ No newline at end of file
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/monitor-http-frontend
\ No newline at end of file
TestMasterRequestDomain-1/etc/promise/caddy-frontend-is-running-actual-software-release
TestMasterRequestDomain-1/etc/promise/caddy_cached
TestMasterRequestDomain-1/etc/promise/caddy_frontend_ipv4_http
TestMasterRequestDomain-1/etc/promise/caddy_frontend_ipv4_https
TestMasterRequestDomain-1/etc/promise/caddy_frontend_ipv6_http
TestMasterRequestDomain-1/etc/promise/caddy_frontend_ipv6_https
TestMasterRequestDomain-1/etc/promise/caddy_ssl_cached
TestMasterRequestDomain-1/etc/promise/frontend-caddy-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
......@@ -3,4 +3,22 @@ TestMasterRequestDomain-0:certificate_authority-on-watch RUNNING
TestMasterRequestDomain-0:crond-{hash} RUNNING
TestMasterRequestDomain-0:monitor-httpd-{hash}-on-watch RUNNING
TestMasterRequestDomain-0:monitor-httpd-graceful EXITED
TestMasterRequestDomain-1:6tunnel-11080-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:6tunnel-11443-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:6tunnel-12080-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:6tunnel-12443-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:6tunnel-26011-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:6tunnel-26012-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:bootstrap-monitor EXITED
TestMasterRequestDomain-1:certificate_authority-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:crond-{hash} RUNNING
TestMasterRequestDomain-1:crond-on-watch RUNNING
TestMasterRequestDomain-1:frontend-caddy-safe-graceful EXITED
TestMasterRequestDomain-1:frontend-nginx-safe-graceful EXITED
TestMasterRequestDomain-1:frontend_caddy-{hash}-on-watch EXITED
TestMasterRequestDomain-1:frontend_nginx-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:monitor-httpd-{hash}-on-watch EXITED
TestMasterRequestDomain-1:monitor-httpd-graceful EXITED
TestMasterRequestDomain-1:trafficserver-{hash}-on-watch RUNNING
TestMasterRequestDomain-1:trafficserver-reload EXITED
watchdog:watchdog RUNNING
\ No newline at end of file
TestQuicEnabled-0/var/run/monitor-httpd.pid
TestQuicEnabled-0/var/run/monitor/monitor-bootstrap.pid
TestQuicEnabled-1/var/run/caddy_graceful_signature
TestQuicEnabled-1/var/run/caddy_graceful_signature.tmp
TestQuicEnabled-1/var/run/caddy_validate_signature
TestQuicEnabled-1/var/run/caddy_validate_signature.status
TestQuicEnabled-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestQuicEnabled-1/var/run/monitor-httpd.pid
TestQuicEnabled-1/var/run/monitor/monitor-bootstrap.pid
TestQuicEnabled-1/var/run/nginx.pid
TestQuicEnabled-1/var/run/nginx_graceful_signature
TestQuicEnabled-1/var/run/nginx_graceful_signature.tmp
TestQuicEnabled-1/var/run/nginx_validate_signature
TestQuicEnabled-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestQuicEnabled-0:certificate_authority-on-watch RUNNING
TestQuicEnabled-0:crond-{hash} RUNNING
TestQuicEnabled-0:monitor-httpd-{hash}-on-watch RUNNING
TestQuicEnabled-0:monitor-httpd-graceful EXITED
TestQuicEnabled-1:6tunnel-11080-on-watch RUNNING
TestQuicEnabled-1:6tunnel-11443-on-watch RUNNING
TestQuicEnabled-1:6tunnel-12080-on-watch RUNNING
TestQuicEnabled-1:6tunnel-12443-on-watch RUNNING
TestQuicEnabled-1:6tunnel-26011-on-watch RUNNING
TestQuicEnabled-1:6tunnel-26012-on-watch RUNNING
TestQuicEnabled-1:6tunnel-11080-{hash}-on-watch RUNNING
TestQuicEnabled-1:6tunnel-11443-{hash}-on-watch RUNNING
TestQuicEnabled-1:6tunnel-12080-{hash}-on-watch RUNNING
TestQuicEnabled-1:6tunnel-12443-{hash}-on-watch RUNNING
TestQuicEnabled-1:6tunnel-26011-{hash}-on-watch RUNNING
TestQuicEnabled-1:6tunnel-26012-{hash}-on-watch RUNNING
TestQuicEnabled-1:bootstrap-monitor EXITED
TestQuicEnabled-1:certificate_authority-{hash}-on-watch RUNNING
TestQuicEnabled-1:crond-{hash} RUNNING
......
TestRe6stVerificationUrlDefaultSlave-0/var/run/monitor-httpd.pid
TestRe6stVerificationUrlDefaultSlave-0/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/caddy_graceful_signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/caddy_graceful_signature.tmp
TestRe6stVerificationUrlDefaultSlave-1/var/run/caddy_validate_signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/caddy_validate_signature.status
TestRe6stVerificationUrlDefaultSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestRe6stVerificationUrlDefaultSlave-1/var/run/monitor-httpd.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx.pid
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx_graceful_signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx_graceful_signature.tmp
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx_validate_signature
TestRe6stVerificationUrlDefaultSlave-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestRe6stVerificationUrlDefaultSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:crond-{hash} RUNNING
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-0:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-11080-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-11443-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-12080-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-12443-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-26011-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-26012-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:bootstrap-monitor EXITED
TestRe6stVerificationUrlDefaultSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestRe6stVerificationUrlDefaultSlave-1:crond-{hash} RUNNING
......
TestRe6stVerificationUrlSlave-0/var/run/monitor-httpd.pid
TestRe6stVerificationUrlSlave-0/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlSlave-1/var/run/caddy_graceful_signature
TestRe6stVerificationUrlSlave-1/var/run/caddy_graceful_signature.tmp
TestRe6stVerificationUrlSlave-1/var/run/caddy_validate_signature
TestRe6stVerificationUrlSlave-1/var/run/caddy_validate_signature.status
TestRe6stVerificationUrlSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestRe6stVerificationUrlSlave-1/var/run/monitor-httpd.pid
TestRe6stVerificationUrlSlave-1/var/run/monitor/monitor-bootstrap.pid
TestRe6stVerificationUrlSlave-1/var/run/nginx.pid
TestRe6stVerificationUrlSlave-1/var/run/nginx_graceful_signature
TestRe6stVerificationUrlSlave-1/var/run/nginx_graceful_signature.tmp
TestRe6stVerificationUrlSlave-1/var/run/nginx_validate_signature
TestRe6stVerificationUrlSlave-1/var/run/nginx_validate_signature.status
......@@ -3,12 +3,12 @@ TestRe6stVerificationUrlSlave-0:certificate_authority-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:crond-{hash} RUNNING
TestRe6stVerificationUrlSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-0:monitor-httpd-graceful EXITED
TestRe6stVerificationUrlSlave-1:6tunnel-11080-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-11443-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-12080-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-12443-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-26011-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-26012-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:bootstrap-monitor EXITED
TestRe6stVerificationUrlSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestRe6stVerificationUrlSlave-1:crond-{hash} RUNNING
......
TestReplicateSlave-0/var/run/monitor-httpd.pid
TestReplicateSlave-0/var/run/monitor/monitor-bootstrap.pid
TestReplicateSlave-1/var/run/caddy_graceful_signature
TestReplicateSlave-1/var/run/caddy_graceful_signature.tmp
TestReplicateSlave-1/var/run/caddy_validate_signature
TestReplicateSlave-1/var/run/caddy_validate_signature.status
TestReplicateSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestReplicateSlave-1/var/run/monitor-httpd.pid
TestReplicateSlave-1/var/run/monitor/monitor-bootstrap.pid
TestReplicateSlave-1/var/run/nginx.pid
TestReplicateSlave-1/var/run/nginx_graceful_signature
TestReplicateSlave-1/var/run/nginx_graceful_signature.tmp
TestReplicateSlave-1/var/run/nginx_validate_signature
TestReplicateSlave-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestReplicateSlave-0:certificate_authority-on-watch RUNNING
TestReplicateSlave-0:crond-{hash} RUNNING
TestReplicateSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestReplicateSlave-0:monitor-httpd-graceful EXITED
TestReplicateSlave-1:6tunnel-11080-on-watch RUNNING
TestReplicateSlave-1:6tunnel-11443-on-watch RUNNING
TestReplicateSlave-1:6tunnel-12080-on-watch RUNNING
TestReplicateSlave-1:6tunnel-12443-on-watch RUNNING
TestReplicateSlave-1:6tunnel-26011-on-watch RUNNING
TestReplicateSlave-1:6tunnel-26012-on-watch RUNNING
TestReplicateSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestReplicateSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestReplicateSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestReplicateSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestReplicateSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestReplicateSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestReplicateSlave-1:bootstrap-monitor EXITED
TestReplicateSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestReplicateSlave-1:crond-{hash} RUNNING
......@@ -21,12 +21,12 @@ TestReplicateSlave-1:monitor-httpd-{hash}-on-watch RUNNING
TestReplicateSlave-1:monitor-httpd-graceful EXITED
TestReplicateSlave-1:trafficserver-{hash}-on-watch RUNNING
TestReplicateSlave-1:trafficserver-reload EXITED
TestReplicateSlave-2:6tunnel-11080-on-watch STOPPED
TestReplicateSlave-2:6tunnel-11443-on-watch STOPPED
TestReplicateSlave-2:6tunnel-12080-on-watch STOPPED
TestReplicateSlave-2:6tunnel-12443-on-watch STOPPED
TestReplicateSlave-2:6tunnel-26011-on-watch STOPPED
TestReplicateSlave-2:6tunnel-26012-on-watch STOPPED
TestReplicateSlave-2:6tunnel-11080-{hash}-on-watch STOPPED
TestReplicateSlave-2:6tunnel-11443-{hash}-on-watch STOPPED
TestReplicateSlave-2:6tunnel-12080-{hash}-on-watch STOPPED
TestReplicateSlave-2:6tunnel-12443-{hash}-on-watch STOPPED
TestReplicateSlave-2:6tunnel-26011-{hash}-on-watch STOPPED
TestReplicateSlave-2:6tunnel-26012-{hash}-on-watch STOPPED
TestReplicateSlave-2:bootstrap-monitor STOPPED
TestReplicateSlave-2:certificate_authority-{hash}-on-watch STOPPED
TestReplicateSlave-2:crond-{hash} STOPPED
......
TestSlave-0/var/run/monitor-httpd.pid
TestSlave-0/var/run/monitor/monitor-bootstrap.pid
TestSlave-1/var/run/caddy_graceful_signature
TestSlave-1/var/run/caddy_graceful_signature.tmp
TestSlave-1/var/run/caddy_validate_signature
TestSlave-1/var/run/caddy_validate_signature.status
TestSlave-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestSlave-1/var/run/monitor-httpd.pid
TestSlave-1/var/run/monitor/monitor-bootstrap.pid
TestSlave-1/var/run/nginx.pid
TestSlave-1/var/run/nginx_graceful_signature
TestSlave-1/var/run/nginx_graceful_signature.tmp
TestSlave-1/var/run/nginx_validate_signature
TestSlave-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestSlave-0:certificate_authority-on-watch RUNNING
TestSlave-0:crond-{hash} RUNNING
TestSlave-0:monitor-httpd-{hash}-on-watch RUNNING
TestSlave-0:monitor-httpd-graceful EXITED
TestSlave-1:6tunnel-11080-on-watch RUNNING
TestSlave-1:6tunnel-11443-on-watch RUNNING
TestSlave-1:6tunnel-12080-on-watch RUNNING
TestSlave-1:6tunnel-12443-on-watch RUNNING
TestSlave-1:6tunnel-26011-on-watch RUNNING
TestSlave-1:6tunnel-26012-on-watch RUNNING
TestSlave-1:6tunnel-11080-{hash}-on-watch RUNNING
TestSlave-1:6tunnel-11443-{hash}-on-watch RUNNING
TestSlave-1:6tunnel-12080-{hash}-on-watch RUNNING
TestSlave-1:6tunnel-12443-{hash}-on-watch RUNNING
TestSlave-1:6tunnel-26011-{hash}-on-watch RUNNING
TestSlave-1:6tunnel-26012-{hash}-on-watch RUNNING
TestSlave-1:bootstrap-monitor EXITED
TestSlave-1:certificate_authority-{hash}-on-watch RUNNING
TestSlave-1:crond-{hash} RUNNING
......
TestSlaveBadParameters-0/var/run/monitor-httpd.pid
TestSlaveBadParameters-0/var/run/monitor/monitor-bootstrap.pid
TestSlaveBadParameters-1/var/run/caddy_graceful_signature
TestSlaveBadParameters-1/var/run/caddy_graceful_signature.tmp
TestSlaveBadParameters-1/var/run/caddy_validate_signature
TestSlaveBadParameters-1/var/run/caddy_validate_signature.status
TestSlaveBadParameters-1/var/run/httpd.pid
......@@ -9,6 +8,5 @@ TestSlaveBadParameters-1/var/run/monitor-httpd.pid
TestSlaveBadParameters-1/var/run/monitor/monitor-bootstrap.pid
TestSlaveBadParameters-1/var/run/nginx.pid
TestSlaveBadParameters-1/var/run/nginx_graceful_signature
TestSlaveBadParameters-1/var/run/nginx_graceful_signature.tmp
TestSlaveBadParameters-1/var/run/nginx_validate_signature
TestSlaveBadParameters-1/var/run/nginx_validate_signature.status
\ No newline at end of file
......@@ -3,12 +3,12 @@ TestSlaveBadParameters-0:certificate_authority-on-watch RUNNING
TestSlaveBadParameters-0:crond-{hash} RUNNING
TestSlaveBadParameters-0:monitor-httpd-{hash}-on-watch RUNNING
TestSlaveBadParameters-0:monitor-httpd-graceful EXITED
TestSlaveBadParameters-1:6tunnel-11080-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-11443-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-12080-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-12443-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-26011-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-26012-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-11080-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-11443-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-12080-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-12443-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-26011-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:6tunnel-26012-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:bootstrap-monitor EXITED
TestSlaveBadParameters-1:certificate_authority-{hash}-on-watch RUNNING
TestSlaveBadParameters-1:crond-{hash} RUNNING
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -197,8 +197,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
# Apache frontend test
This software release is simply to run the test suite from `../caddy-frontend/test/setup.py`,
but using apache-frontend software.
[buildout]
extends =
../caddy-frontend/software.cfg
[configuration]
test_software_release = ${:_profile_base_location_}/../../../apache-frontend/software.cfg
\ No newline at end of file
# Caddy frontend test
This software release is simply to run the test suite from `../caddy-frontend/test/setup.py`
# ERP5 test
This software release is simply to run the test suite from `../erp5/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-ERP5-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 6d126917e17c00ee012c4cf0a52429d1
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/erp5/test
# XXX we need "standard" path entries to compile softwares inside test
# XXX can't we just inherit $PATH ?
environment =
PATH=${buildout:bin-directory}:/bin/:/usr/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.erp5-setup]
<= setup-develop-egg
egg = slapos.test.erp5
setup = ${slapos-repository:location}/software/erp5/test/
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.erp5-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
erp5.util = 0.4.56
slapos.recipe.template = 4.3
# kvm test
This software release is simply to run the test suite from `../kvm/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-KVM-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 8109649ec9ba66de3ac67b742c28c349
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/kvm/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.kvm-setup]
<= setup-develop-egg
egg = slapos.test.kvm
setup = ${slapos-repository:location}/software/kvm/test/
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.kvm-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.kvm =
erp5.util = 0.4.56
pyasn1 = 0.4.2
slapos.recipe.template = 4.3
pysftp = 0.2.9
# monitor test
This software release is simply to run the test suite from `../monitor/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-MONITOR-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 887a866f115c1e75b695379990e1709b
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/monitor/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.monitor-setup]
<= setup-develop-egg
egg = slapos.test.monitor
setup = ${slapos-repository:location}/software/monitor/test/
[erp5.util-setup]
<= setup-develop-egg
egg = erp5.util[testnode]
setup = ${erp5.util-repository:location}
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.monitor-setup:egg}
${erp5.util-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
# XXX we need an unreleased ( 0.4.51 ) version of erp5.util runTestSuite
# later we can stop fetching it from git and just use egg
[erp5.util-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/erp5.git
revision = 69013fa0fb67501089c776ab5e75d7bbf2e0e3bc
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.monitor =
erp5.util =
#erp5.util = 0.4.51
pyasn1 = 0.4.2
slapos.recipe.template = 4.3
pysftp = 0.2.9
# PlantUML test
This software release is simply to run the test suite from `../../plantuml/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-PLANTUML-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# But avoid directories, they are not portable.
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 4ab7207a0440a904b4374add9b744312
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/plantuml/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../component/pillow/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.plantuml-setup]
<= setup-develop-egg
egg = slapos.test.plantuml
setup = ${slapos-repository:location}/software/plantuml/test/
[eggs]
recipe = zc.recipe.egg
eggs =
${pillow-python:egg}
${slapos.test.plantuml-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
erp5.util = 0.4.56
slapos.recipe.template = 4.3
plantuml = 0.1.1
httplib2 = 0.11.3
image = 1.5.25
Pillow = 5.3.0
\ No newline at end of file
# powerdns test
This software release is simply to run the test suite from `../powerdns/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-POWERDNS-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = af932783693bf8a7fec32d00a8e07ed2
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/powerdns/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.powerdns-setup]
<= setup-develop-egg
egg = slapos.test.powerdns
setup = ${slapos-repository:location}/software/powerdns/test/
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.powerdns-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.powerdns =
erp5.util = 0.4.56
pyasn1 = 0.4.2
slapos.recipe.template = 4.3
pysftp = 0.2.9
# ProFTPd test
This software release is simply to run the test suite from `../proftpd/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-PROFTPD-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 20c5afac025e97c2937852f4d84f7cd3
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/proftpd/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.proftpd-setup]
<= setup-develop-egg
egg = slapos.test.proftpd
setup = ${slapos-repository:location}/software/proftpd/test/
[erp5.util-setup]
<= setup-develop-egg
egg = erp5.util[testnode]
setup = ${erp5.util-repository:location}
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.proftpd-setup:egg}
${erp5.util-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
# XXX we need an unreleased ( 0.4.51 ) version of erp5.util runTestSuite
# later we can stop fetching it from git and just use egg
[erp5.util-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/erp5.git
revision = 69013fa0fb67501089c776ab5e75d7bbf2e0e3bc
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.proftpd =
erp5.util =
#erp5.util = 0.4.51
pyasn1 = 0.4.2
slapos.recipe.template = 4.3
pysftp = 0.2.9
# Re6stnet test
This software release is simply to run the test suite from `../re6stnet/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-RE6STNET-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# But avoid directories, they are not portable.
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 9c5ec49295ceae71df715bf1c90976e2
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/re6stnet/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.re6stnet-setup]
<= setup-develop-egg
egg = slapos.test.re6stnet
setup = ${slapos-repository:location}/software/re6stnet/test/
[erp5.util-setup]
<= setup-develop-egg
egg = erp5.util[testnode]
setup = ${erp5.util-repository:location}
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.re6stnet-setup:egg}
${erp5.util-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
# XXX we need an unreleased ( 0.4.51 ) version of erp5.util runTestSuite
# later we can stop fetching it from git and just use egg
[erp5.util-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/erp5.git
revision = 69013fa0fb67501089c776ab5e75d7bbf2e0e3bc
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.re6stnet =
erp5.util =
#erp5.util = 0.4.51
pyasn1 = 0.4.2
slapos.recipe.template = 4.3
# Selenium Server test
This software release is simply to run the test suite from `../../seleniumserver/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-SELENIUMSERVER-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 3019fd19f6623cca92741582b265a1da
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/seleniumserver/test
# XXX we need "standard" path entries to compile softwares inside test
# XXX can't we just inherit $PATH ?
environment =
PATH=${buildout:bin-directory}:/bin/:/usr/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../component/pillow/buildout.cfg
../../../../component/python-pynacl/buildout.cfg
../../../../component/bcrypt/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.seleniumserver-setup]
<= setup-develop-egg
egg = slapos.test.seleniumserver
setup = ${slapos-repository:location}/software/seleniumserver/test/
[eggs]
recipe = zc.recipe.egg
eggs =
${pillow-python:egg}
${python-pynacl:egg}
${bcrypt:egg}
${slapos.test.seleniumserver-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
erp5.util = 0.4.56
slapos.recipe.template = 4.3
image = 1.5.25
Pillow = 5.3.0
selenium = 3.14.1
urllib3 = 1.23
# Django 1.11 is python 2 compatible
Django = 1.11
paramiko = 2.4.2
pyasn1 = 0.4.2
PyNaCl = 1.3.0
bcrypt = 3.1.4
\ No newline at end of file
# slaprunner test
This software release is simply to run the test suite from `../slaprunner/test/setup.py`
Nexedi staff can see the results of this test from the test suite
`SLAPOS-SLAPRUNNER-TEST` in test result module.
# THIS IS NOT A BUILDOUT FILE, despite purposedly using a compatible syntax.
# The only allowed lines here are (regexes):
# - "^#" comments, copied verbatim
# - "^[" section beginings, copied verbatim
# - lines containing an "=" sign which must fit in the following categorie.
# - "^\s*filename\s*=\s*path\s*$" where "path" is relative to this file
# Copied verbatim.
# - "^\s*hashtype\s*=.*" where "hashtype" is one of the values supported
# by the re-generation script.
# Re-generated.
# - other lines are copied verbatim
# Substitution (${...:...}), extension ([buildout] extends = ...) and
# section inheritance (< = ...) are NOT supported (but you should really
# not need these here).
[template]
filename = instance.cfg.in
md5sum = 6fa1420739f58e722631564b08727060
[buildout]
parts =
slapos-test-runner
eggs-directory = ${buildout:eggs-directory}
develop-eggs-directory = ${buildout:develop-eggs-directory}
offline = true
[slap-configuration]
recipe = slapos.cookbook:slapconfiguration
computer = $${slap-connection:computer-id}
partition = $${slap-connection:partition-id}
url = $${slap-connection:server-url}
key = $${slap-connection:key-file}
cert = $${slap-connection:cert-file}
[download-source]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
[slapos]
<= download-source
repository = ${slapos-repository:location}
[create-directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp/
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/slaprunner/test
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${buildout:bin-directory}:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../stack/slapos.cfg
./buildout.hash.cfg
parts =
slapos-cookbook
eggs
template
[setup-develop-egg]
recipe = zc.recipe.egg:develop
[slapos.test.slaprunner-setup]
<= setup-develop-egg
egg = slapos.test.slaprunner
setup = ${slapos-repository:location}/software/slaprunner/test/
[erp5.util-setup]
<= setup-develop-egg
egg = erp5.util[testnode]
setup = ${erp5.util-repository:location}
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.slaprunner-setup:egg}
${erp5.util-setup:egg}
slapos.core
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
runTestSuite
slapos
interpreter=
python_for_test
[git-clone-repository]
recipe = slapos.recipe.build:gitclone
git-executable = ${git:location}/bin/git
forbid-download-cache = true
branch = master
[slapos-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/slapos.git
# XXX we need an unreleased ( 0.4.51 ) version of erp5.util runTestSuite
# later we can stop fetching it from git and just use egg
[erp5.util-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/erp5.git
revision = 69013fa0fb67501089c776ab5e75d7bbf2e0e3bc
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.slaprunner =
erp5.util =
#erp5.util = 0.4.51
pyasn1 = 0.4.2
slapos.recipe.template = 4.3
pysftp = 0.2.9
......@@ -40,7 +40,7 @@ import psutil
import utils
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -40,7 +40,7 @@ import psutil
import utils
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -33,11 +33,13 @@ template = {{ neo_admin }}
<= jinja2-template-base
template = {{ neo_master }}
[neo-storage-mysql]
[neo]
<= jinja2-template-base
template = {{ neo_storage_mysql }}
template = {{ neo }}
extra-context =
key master_cfg neo-master:rendered
key admin_cfg neo-admin:rendered
{%- if mariadb_location is defined %}
raw mariadb_location {{ mariadb_location }}
raw template_neo_my_cnf {{ template_neo_my_cnf }}
{%- endif %}
......@@ -84,6 +84,11 @@
"default": false,
"type": "boolean"
},
"storage-type": {
"description": "Storage type. Defaults to MySQL if available, else SQLite.",
"enum": ["MySQL", "SQLite"],
"type": "string"
},
"mysql": {
"description": "Dictionary containing parameters for MySQL.",
"default": {},
......
......@@ -2,6 +2,11 @@
{% set part_list = [] -%}
{% set init_list = [] -%}
{% set storage_type = slapparameter_dict.get('storage-type') or (
'MySQL' if mariadb_location is defined else 'SQLite') -%}
{% set mysql = storage_type == 'MySQL' -%}
{% if mysql -%}
[mysqld]
recipe = slapos.cookbook:generic.mysql.wrap_mysqld
output = ${directory:etc_run}/mariadb
......@@ -34,6 +39,8 @@ command-line = ${mysqld:mysql-base-directory}/bin/${:command} --defaults-file=${
wrapper-path = ${directory:bin}/${:command}
command = mysql
{% endif -%}
[{{ section('binary-neolog') }}]
recipe = slapos.cookbook:symbolic.link
target-directory = ${directory:bin}
......@@ -95,7 +102,7 @@ ip = ${publish:ip}
ssl = {{ dumps(bool(slapparameter_dict['ssl'])) }}
cluster = {{ dumps(slapparameter_dict['cluster']) }}
masters = ${publish:masters}
database-adapter = MySQL
database-adapter = {{ storage_type }}
wait-database = -1
engine = {{ slapparameter_dict.get('engine', '') }}
dedup = {{ dumps(bool(slapparameter_dict.get('data-deduplication'))) }}
......@@ -107,8 +114,15 @@ disable-drop-partitions = {{ dumps(bool(slapparameter_dict.get('disable-drop-par
< = neo-storage
wrapper = ${directory:etc_run}/{{ 'neostorage-' ~ i }}
logfile = ${directory:log}/{{ 'neostorage-' ~ i }}.log
{% do init_list.append('CREATE DATABASE IF NOT EXISTS neo' ~ i ~ ';') -%}
{%- if mysql %}
{%- do init_list.append('CREATE DATABASE IF NOT EXISTS neo' ~ i ~ ';') %}
database-parameters = root@neo{{ i }}${my-cnf-parameters:socket}
{%- else %}
database-parameters = ${directory:db-{{i}}}/db.sqlite
[directory]
db-{{i}} = ${buildout:directory}/srv/{{ storage_id }}
{%- endif %}
[{{ section('logrotate-storage-' ~ i) }}]
< = logrotate-entry-base
......@@ -117,12 +131,6 @@ log = {{ '${' + storage_id + ':logfile}' }}
post = {{ bin_directory }}/slapos-kill -s RTMIN+1 -- {{ bin_directory }}/neostorage -l ${:log}
{% endfor -%}
[init-script]
recipe = slapos.recipe.template:jinja2
# XXX: is there a better location ?
rendered = ${directory:etc}/mariadb_initial_setup.sql
template = inline:
{{ init_list | join('\n\t') }}
[directory]
recipe = slapos.cookbook:mkdirectory
......@@ -132,11 +140,19 @@ etc = ${buildout:directory}/etc
var = ${buildout:directory}/var
etc_run = ${:etc}/run
var_run = ${:var}/run
srv_mariadb = ${buildout:directory}/srv/mariadb
log = ${buildout:directory}/var/log
tmp = ${buildout:directory}/tmp
{% if mysql -%}
srv_mariadb = ${buildout:directory}/srv/mariadb
[init-script]
recipe = slapos.recipe.template:jinja2
# XXX: is there a better location ?
rendered = ${directory:etc}/mariadb_initial_setup.sql
template = inline:
{{ init_list | join('\n\t') }}
[logrotate-mysql]
[{{ section('logrotate-mysql') }}]
< = logrotate-entry-base
name = mariadb
log = ${my-cnf-parameters:error-log} ${my-cnf-parameters:slow-query-log}
......@@ -154,7 +170,9 @@ context =
section my_cnf_parameters my-cnf-parameters
raw bin_directory {{ bin_directory }}
raw prepend_path ${mysqld:mysql-base-directory}/bin
{% endif -%}
{%- endif %}
{%- endif %}
[buildout]
extends =
......@@ -167,4 +185,3 @@ extends =
{%- endif %}
parts +=
{{ '\n '.join(part_list) }}
logrotate-mysql
......@@ -12,14 +12,16 @@ extra-context =
import-list =
rawfile root_common {{ root_common }}
[neo-storage-mysql]
{% if mariadb_location is defined -%}
[neo]
extra-context +=
raw runTestSuite_in {{ runTestSuite_in }}
{% endif -%}
[switch-softwaretype]
recipe = slapos.cookbook:switch-softwaretype
override = {{ dumps(override_switch_softwaretype |default) }}
default = neo-cluster:rendered
# BBB
RootSoftwareInstance = ${:default}
neo = neo-storage-mysql:rendered
neo = neo:rendered
......@@ -46,10 +46,10 @@ environment = neoppod-setup-env
[neoppod]
recipe = zc.recipe.egg
eggs = neoppod[admin, ctl, master, storage-mysqldb]
eggs = neoppod[admin, ctl, master]
${cython-zstd:egg}
${msgpack-python:egg}
${python-mysqlclient:egg}
${:adapter-egg}
psutil
BTrees
ZODB
......@@ -57,6 +57,7 @@ eggs = neoppod[admin, ctl, master, storage-mysqldb]
zodbtools
coverage
setproctitle
adapter-egg = ${python-mysqlclient:egg}
patch-binary = ${patch:location}/bin/patch
ZEO-patch-options = -p1
ZEO-patches =
......@@ -86,16 +87,18 @@ mode = 644
recipe = slapos.recipe.template:jinja2
template = ${:_profile_base_location_}/${:_buildout_section_name_}.cfg.in
rendered = ${buildout:directory}/${:_buildout_section_name_}.cfg
md5sum = e8f5a83580e9791a32c66f5935cb6840
md5sum = b867ba222a436807954f732642fb116d
context =
key bin_directory buildout:bin-directory
key develop_eggs_directory buildout:develop-eggs-directory
key eggs_directory buildout:eggs-directory
key mariadb_location mariadb:location
key neo_admin instance-neo-admin:target
key neo_master instance-neo-master:target
key neo_storage_mysql instance-neo-storage-mysql:target
key neo instance-neo:target
key template_logrotate_base template-logrotate-base:rendered
${:adapter-context}
adapter-context =
key mariadb_location mariadb:location
key template_neo_my_cnf template-neo-my-cnf:target
[root-common]
......@@ -110,9 +113,9 @@ md5sum = 4d1ae570b4458e7725454857aabb37f6
<= download-base-neo
md5sum = 1fee10f02c2fa2a581e21878ca0fd704
[instance-neo-storage-mysql]
[instance-neo]
<= download-base-neo
md5sum = 16024af1cde9c0fcc7e8e05ec0854b30
md5sum = a9e5cad9cdb5fd3f1ae7b1d534f967ae
[template-neo-my-cnf]
<= download-base-neo
......
......@@ -10,7 +10,7 @@ parts +=
[template]
recipe = slapos.recipe.template:jinja2
template = ${:_profile_base_location_}/instance.cfg.in
md5sum = aaf5da66d45d4c08cadb0cd1c5342c54
md5sum = 83dc9faca482b2ddbd3d5fa968af7c33
# XXX: "template.cfg" is hardcoded in instanciation recipe
rendered = ${buildout:directory}/template.cfg
context =
......@@ -18,6 +18,7 @@ context =
key instance_common_cfg instance-common:rendered
key root_common root-common:target
key runTestSuite_in runTestSuite.in:target
${instance-common:adapter-context}
[cluster]
<= download-base-neo
......
# To be extended after software-common.cfg if only SQLite backend is wanted.
[neoppod]
adapter-egg =
[instance-common]
adapter-context =
......@@ -38,7 +38,7 @@ import plantuml
import utils
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -40,7 +40,7 @@ import psutil
import utils
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -41,7 +41,7 @@ import utils
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -39,12 +39,12 @@ import psutil
import utils
LOCAL_IPV4 = os.environ['LOCAL_IPV4']
GLOBAL_IPV6 = os.environ['GLOBAL_IPV6']
SLAPOS_TEST_IPV4 = os.environ['SLAPOS_TEST_IPV4']
SLAPOS_TEST_IPV6 = os.environ['SLAPOS_TEST_IPV6']
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -46,7 +46,7 @@ from selenium.webdriver.support.ui import WebDriverWait
from utils import SlapOSInstanceTestCase, findFreeTCPPort
debug_mode = os.environ.get('DEBUG')
debug_mode = os.environ.get('SLAPOS_TEST_DEBUG')
# for development: debugging logs and install Ctrl+C handler
if debug_mode:
import logging
......@@ -103,7 +103,7 @@ class WebServerMixin(object):
''' % (form['q'].value, file_data))
super(WebServerMixin, self).setUp()
ip = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ip = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
port = findFreeTCPPort(ip)
server = HTTPServer((ip, port), TestHandler)
self.server_process = multiprocessing.Process(target=server.serve_forever)
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
SlapOS Software Release tests
......@@ -15,4 +15,4 @@
[template]
filename = instance.cfg
md5sum = d8d9e9a4bd00ccba2c448bb9d5d6aeae
md5sum = b98a93c66e1875bbbfc7e08ee0efc502
......@@ -22,23 +22,24 @@ git-executable = ${git:location}/bin/git
<= download-source
repository = ${slapos-repository:location}
[create-directory]
[directory]
recipe = slapos.cookbook:mkdirectory
bin = $${buildout:directory}/bin
working-dir = $${buildout:directory}/tmp
[test-list]
path_list = ${slapos.test.caddy-frontend-setup:setup},${slapos.test.erp5-setup:setup},${slapos.test.kvm-setup:setup},${slapos.test.monitor-setup:setup},${slapos.test.plantuml-setup:setup},${slapos.test.powerdns-setup:setup},${slapos.test.proftpd-setup:setup},${slapos.test.re6stnet-setup:setup},${slapos.test.seleniumserver-setup:setup},${slapos.test.slaprunner-setup:setup}
[slapos-test-runner]
recipe = slapos.cookbook:wrapper
wrapper-path = $${create-directory:bin}/runTestSuite
wrapper-path = $${directory:bin}/runTestSuite
command-line =
${buildout:bin-directory}/runTestSuite
--python_interpreter=${buildout:bin-directory}/${eggs:interpreter}
--source_code_path_list=$${slapos:location}/software/caddy-frontend/test
--source_code_path_list=$${test-list:path_list}
# XXX slapos.cookbook:wrapper does not allow extending env, so we add some default $PATH entries ( not sure they are needed )
environment =
PATH=${quic_client-bin:location}:${curl:location}/bin/:/usr/bin/:/bin
LOCAL_IPV4=$${slap-configuration:ipv4-random}
GLOBAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${create-directory:working-dir}
TEST_SR=${template:test_software_release}
SLAPOS_TEST_IPV4=$${slap-configuration:ipv4-random}
SLAPOS_TEST_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_WORKING_DIR=$${directory:working-dir}
[buildout]
extends =
../../../../component/git/buildout.cfg
../../../../component/curl/buildout.cfg
../../../../component/python-cryptography/buildout.cfg
../../../../stack/slapos.cfg
../../../../component/quic_client-bin/buildout.cfg
../../component/bcrypt/buildout.cfg
../../component/curl/buildout.cfg
../../component/git/buildout.cfg
../../component/pillow/buildout.cfg
../../component/python-cryptography/buildout.cfg
../../component/python-pynacl/buildout.cfg
../../component/quic_client-bin/buildout.cfg
../../stack/slapos.cfg
./buildout.hash.cfg
parts =
......@@ -21,6 +26,51 @@ recipe = zc.recipe.egg:develop
egg = slapos.test.caddy-frontend
setup = ${slapos-repository:location}/software/caddy-frontend/test/
[slapos.test.erp5-setup]
<= setup-develop-egg
egg = slapos.test.erp5
setup = ${slapos-repository:location}/software/erp5/test/
[slapos.test.kvm-setup]
<= setup-develop-egg
egg = slapos.test.kvm
setup = ${slapos-repository:location}/software/kvm/test/
[slapos.test.monitor-setup]
<= setup-develop-egg
egg = slapos.test.monitor
setup = ${slapos-repository:location}/software/monitor/test/
[slapos.test.plantuml-setup]
<= setup-develop-egg
egg = slapos.test.plantuml
setup = ${slapos-repository:location}/software/plantuml/test/
[slapos.test.powerdns-setup]
<= setup-develop-egg
egg = slapos.test.powerdns
setup = ${slapos-repository:location}/software/powerdns/test/
[slapos.test.proftpd-setup]
<= setup-develop-egg
egg = slapos.test.proftpd
setup = ${slapos-repository:location}/software/proftpd/test/
[slapos.test.re6stnet-setup]
<= setup-develop-egg
egg = slapos.test.re6stnet
setup = ${slapos-repository:location}/software/re6stnet/test/
[slapos.test.seleniumserver-setup]
<= setup-develop-egg
egg = slapos.test.seleniumserver
setup = ${slapos-repository:location}/software/seleniumserver/test/
[slapos.test.slaprunner-setup]
<= setup-develop-egg
egg = slapos.test.slaprunner
setup = ${slapos-repository:location}/software/slaprunner/test/
[erp5.util-setup]
<= setup-develop-egg
egg = erp5.util[testnode]
......@@ -30,10 +80,23 @@ setup = ${erp5.util-repository:location}
[eggs]
recipe = zc.recipe.egg
eggs =
${slapos.test.caddy-frontend-setup:egg}
${pillow-python:egg}
${python-pynacl:egg}
${erp5.util-setup:egg}
${python-cryptography:egg}
${bcrypt:egg}
slapos.core
${slapos.test.caddy-frontend-setup:egg}
${slapos.test.erp5-setup:egg}
${slapos.test.kvm-setup:egg}
${slapos.test.monitor-setup:egg}
${slapos.test.plantuml-setup:egg}
${slapos.test.powerdns-setup:egg}
${slapos.test.proftpd-setup:egg}
${slapos.test.re6stnet-setup:egg}
${slapos.test.seleniumserver-setup:egg}
${slapos.test.slaprunner-setup:egg}
entry-points =
runTestSuite=erp5.util.testsuite:runTestSuite
scripts =
......@@ -52,29 +115,41 @@ forbid-download-cache = true
repository = https://lab.nexedi.com/nexedi/slapos.git
branch = master
# XXX we need an unreleased ( 0.4.51 ) version of erp5.util runTestSuite
# XXX we need an unreleased version of erp5.util for better test uniqe naming
# later we can stop fetching it from git and just use egg
[erp5.util-repository]
<= git-clone-repository
repository = https://lab.nexedi.com/nexedi/erp5.git
revision = 55d7381c54a2e90aff2c4a88943883c35ea111de
[configuration]
test_software_release = ${:_profile_base_location_}/../../../caddy-frontend/software.cfg
revision = aa516c7eb88308127949675bcc77d651630ebf5e
[template]
recipe = slapos.recipe.template
url = ${:_profile_base_location_}/${:filename}
output = ${buildout:directory}/template.cfg
mode = 640
test_software_release = ${configuration:test_software_release}
[versions]
# clear the version of tested eggs, to make sure we installed the developped ones
slapos.test.caddy-frontend =
erp5.util =
slapos.recipe.template = 4.3
forcediphttpsadapter = 1.0.1
# slapos.test.caddy-frontend==0.0.1.dev0
# Various needed versions
Pillow = 5.3.0
PyNaCl = 1.3.0
bcrypt = 3.1.4
forcediphttpsadapter = 1.0.1
httplib2 = 0.11.3
image = 1.5.25
paramiko = 2.4.2
plantuml = 0.1.1
pyasn1 = 0.4.4
pysftp = 0.2.9
requests-toolbelt = 0.8.0
selenium = 3.141.0
slapos.recipe.template = 4.3
# Django 1.11 is python 2 compatible
Django = 1.11
# Required by:
# selenium==3.141.0
urllib3 = 1.24.1
......@@ -15,5 +15,5 @@
[template]
filename = instance.cfg
md5sum = 2af05c83ea9525ac3c6816ee0365876c
md5sum = c7becd2a66b3305406f965b969907d52
......@@ -80,11 +80,14 @@ command-line =
# needs ping, which is a setuid binary that cannot be installed via slapos
# way of building software without root access, so we keep "standard"
# /usr/bin and /bin in $PATH
# * LOCAL_IPV4 is needed for some slapos.core tests
# * SLAPOS_TEST_environment is safe to be used by tests, but there is no
# guarantee about free ports on IPV4 and IPV6
# * LOCAL_IPV4 is backward compatible, to be migrated, SLAPOS_TEST_IPV4
environment =
PATH=${coreutils:location}/bin:${curl:location}/bin:${openssl:location}/bin:${git:location}/bin:${libxslt:location}/bin:${socat:location}/bin:/usr/bin/:/bin/
PATH=${coreutils:location}/bin:${curl:location}/bin:${openssl:location}/bin:${git:location}/bin:${libxslt:location}/bin:${socat:location}/bin:${lmsensors:location}/bin:/usr/bin/:/bin/
LOCAL_IPV4=$${slap-configuration:ipv4-random}
LOCAL_IPV6=$${slap-configuration:ipv6-random}
SLAPOS_TEST_IPV4=$${slap-configuration:ipv4-random}
SLAPOS_TEST_IPV6=$${slap-configuration:ipv6-random}
[phantomjs-wrapper]
......
......@@ -11,6 +11,7 @@ extends =
../../component/pycurl/buildout.cfg
../../component/coreutils/buildout.cfg
../../component/socat/buildout.cfg
../../component/lmsensors/buildout.cfg
../../stack/slapos.cfg
./buildout.hash.cfg
......
......@@ -40,7 +40,7 @@ import psutil
import utils
# for development: debugging logs and install Ctrl+C handler
if os.environ.get('DEBUG'):
if os.environ.get('SLAPOS_TEST_DEBUG'):
import logging
logging.basicConfig(level=logging.DEBUG)
import unittest
......
......@@ -187,8 +187,8 @@ class SlapOSInstanceTestCase(unittest.TestCase):
'slapos_binary': 'slapos',
}
# Some tests are expecting that local IP is not set to 127.0.0.1
ipv4_address = os.environ.get('LOCAL_IPV4', '127.0.1.1')
ipv6_address = os.environ['GLOBAL_IPV6']
ipv4_address = os.environ.get('SLAPOS_TEST_IPV4', '127.0.1.1')
ipv6_address = os.environ['SLAPOS_TEST_IPV6']
cls.config['proxy_host'] = cls.config['ipv4_address'] = ipv4_address
cls.config['ipv6_address'] = ipv6_address
......
......@@ -18,8 +18,4 @@ eggs += ${wendelin.core-dev:egg}
# to installing non-dev egg
[versions]
wendelin.core =
scikit-learn =
# install scikit-learn git clone
[scikit-learn]
depends = ${scikit-learn-develop:recipe}
scikit-learn = 0.20
......@@ -74,7 +74,7 @@ md5sum = d41d8cd98f00b204e9800998ecf8427e
[template-erp5]
filename = instance-erp5.cfg.in
md5sum = f723acac5c081c7f9e5eff268d05cc54
md5sum = eefce8adf37430b63559299699732b31
[template-zeo]
filename = instance-zeo.cfg.in
......
......@@ -118,7 +118,7 @@ return =
{%- if test_runner_enabled %}
test-runner-address-list
{% endif %}
{% set bt5_default_list = 'erp5_full_text_myisam_catalog erp5_configurator_standard erp5_configurator_maxma_demo erp5_configurator_run_my_doc' -%}
{% set bt5_default_list = 'erp5_full_text_mroonga_catalog erp5_configurator_standard erp5_configurator_maxma_demo erp5_configurator_run_my_doc' -%}
{% if has_jupyter -%}
{% set bt5_default_list = bt5_default_list + ' erp5_data_notebook' -%}
{% endif -%}
......
......@@ -142,8 +142,9 @@ slapos.libnetworkcache = 0.16
slapos.rebootstrap = 4.1
slapos.recipe.build = 0.40
slapos.recipe.cmmi = 0.10
slapos.toolbox = 0.83
slapos.toolbox = 0.84
stevedore = 1.21.0
subprocess32 = 3.5.3
unicodecsv = 0.14.1
xml-marshaller = 0.9.7
paramiko = 2.1.3
......@@ -249,6 +250,10 @@ rpdb = 0.1.5
# slapos.core==1.4.15
supervisor = 3.3.3
# Required by:
# slapos.toolbox==0.84
tzlocal = 1.5.1
# Required by:
# slapos.core==1.4.15
uritemplate = 3.0.0
......
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