diff --git a/test/integration/default/controls/config_spec.rb b/test/integration/default/controls/config_spec.rb
new file mode 100644
index 0000000000000000000000000000000000000000..09ef4492d31885663f87fedc96665809908d36f8
--- /dev/null
+++ b/test/integration/default/controls/config_spec.rb
@@ -0,0 +1,113 @@
+# frozen_string_literal: true
+
+# Prepare platform "finger" and base path to file comparison directory
+platform_finger = "#{platform[:name]}-#{platform[:release].split('.')[0]}"
+comparison_files_dir = '/tmp/kitchen/srv/salt/comparison_files'
+
+# Default values for `control 'Tomcat main config'`
+main_config_file = '/etc/sysconfig/tomcat'
+# Default values for `control 'Tomcat Catalina temp dir'`
+catalina_tmpdir = '/var/cache/tomcat/temp'
+catalina_tmpdir_user_and_group = 'tomcat'
+# Default values for `control 'Tomcat `server.xml` config'`
+conf_dir = '/etc/tomcat'
+server_xml_user_and_group = 'tomcat'
+
+# Override by platform
+case platform[:family]
+when 'debian'
+ main_config_file = '/etc/default/tomcat8'
+ catalina_tmpdir = '/var/cache/tomcat8/temp'
+ catalina_tmpdir_user_and_group = 'tomcat8'
+ conf_dir = '/etc/tomcat8'
+ server_xml_user_and_group = 'tomcat8'
+ case platform_finger
+ when 'debian-10'
+ main_config_file = '/etc/default/tomcat9'
+ catalina_tmpdir = '/var/cache/tomcat9/temp'
+ catalina_tmpdir_user_and_group = 'tomcat'
+ conf_dir = '/etc/tomcat9'
+ server_xml_user_and_group = 'tomcat'
+ when 'debian-9'
+ when 'debian-8'
+ main_config_file = '/etc/default/tomcat7'
+ catalina_tmpdir = '/var/cache/tomcat7/temp'
+ catalina_tmpdir_user_and_group = 'tomcat7'
+ conf_dir = '/etc/tomcat7'
+ server_xml_user_and_group = 'tomcat7'
+ when 'ubuntu-18'
+ when 'ubuntu-16'
+ end
+when 'redhat'
+ case platform_finger
+ when 'centos-8'
+ when 'centos-7'
+ when 'centos-6'
+ when 'amazon-2'
+ when 'amazon-2018'
+ end
+when 'fedora'
+ case platform_finger
+ when 'fedora-31'
+ when 'fedora-30'
+ end
+when 'suse'
+ case platform_finger
+ when 'opensuse-15'
+ server_xml_user_and_group = 'root'
+ end
+when 'linux'
+ case platform_finger
+ when 'arch-5'
+ end
+end
+
+control 'Tomcat main config' do
+ title 'should contain the lines'
+
+ # Prepare comparison file
+ main_config_path = "#{comparison_files_dir}/main_config/#{platform_finger}"
+ main_config = file(main_config_path).content
+
+ describe file(main_config_file) do
+ it { should be_file }
+ it { should be_owned_by 'root' }
+ it { should be_grouped_into 'root' }
+ its('mode') { should cmp '0644' }
+ its('content') { should include main_config }
+ end
+end
+
+control 'Tomcat Catalina temp dir' do
+ title 'should be prepared with the settings'
+
+ describe file(catalina_tmpdir) do
+ it { should be_directory }
+ it { should be_owned_by catalina_tmpdir_user_and_group }
+ it { should be_grouped_into catalina_tmpdir_user_and_group }
+ its('mode') { should cmp '0755' }
+ end
+end
+
+control 'Tomcat `server.xml` config' do
+ title 'should contain the lines'
+
+ server_xml_file = "#{conf_dir}/server.xml"
+ server_xml_path = "#{comparison_files_dir}/server_xml/#{platform_finger}.xml"
+ server_xml = file(server_xml_path).content
+ # Need the hostname to be used for `tomcat.cluster`
+ server_xml = server_xml.gsub(
+ 'HOSTNAME_PLACEHOLDER',
+ file('/etc/hostname').content.chomp
+ )
+
+ describe file(server_xml_file) do
+ it { should be_file }
+ it { should be_owned_by server_xml_user_and_group }
+ it { should be_grouped_into server_xml_user_and_group }
+ its('mode') { should cmp '0644' }
+ unless %w[debian-9].include?(platform_finger)
+ its('content') { should include server_xml }
+ end
+ end
+end
diff --git a/test/integration/default/controls/packages_spec.rb b/test/integration/default/controls/packages_spec.rb
index 2a93d78ea169c11a89929e6b58be60d703130864..800a43c8fe7b6e84615f542aa892517fd6a6b860 100644
--- a/test/integration/default/controls/packages_spec.rb
+++ b/test/integration/default/controls/packages_spec.rb
@@ -1,5 +1,8 @@
# frozen_string_literal: true
+# Prepare platform "finger"
+platform_finger = "#{platform[:name]}-#{platform[:release].split('.')[0]}"
+
control 'Tomcat packages' do
title 'should be installed'
@@ -7,11 +10,13 @@ control 'Tomcat packages' do
packages =
case platform[:family]
when 'debian'
- case platform[:release]
- when /^10/
+ case platform_finger
+ when 'debian-10'
%w[tomcat9 haveged]
- else
+ when 'debian-9', 'ubuntu-18', 'ubuntu-16'
%w[tomcat8 haveged]
+ when 'debian-8'
+ %w[tomcat7 haveged]
end
when 'redhat', 'fedora', 'suse'
%w[tomcat]
diff --git a/test/integration/default/controls/services_spec.rb b/test/integration/default/controls/services_spec.rb
index 32b814de24a832fbbcd02f9eb36f9738d885a0f0..942367cefbf9c7d80bc296a0d0a826748b8f2404 100644
--- a/test/integration/default/controls/services_spec.rb
+++ b/test/integration/default/controls/services_spec.rb
@@ -1,5 +1,8 @@
# frozen_string_literal: true
+# Prepare platform "finger"
+platform_finger = "#{platform[:name]}-#{platform[:release].split('.')[0]}"
+
control 'Tomcat services' do
impact 0.5
title 'should be installed, enabled and running'
@@ -8,11 +11,13 @@ control 'Tomcat services' do
services =
case platform[:family]
when 'debian'
- case platform[:release]
- when /^10/
+ case platform_finger
+ when 'debian-10'
%w[tomcat9 haveged]
- else
+ when 'debian-9', 'ubuntu-18', 'ubuntu-16'
%w[tomcat8 haveged]
+ when 'debian-8'
+ %w[tomcat7 haveged]
end
when 'redhat', 'fedora', 'suse'
%w[tomcat]
diff --git a/test/integration/default/controls/yaml_dump_spec.rb b/test/integration/default/controls/yaml_dump_spec.rb
index d2e65f151ab78892db073db16b1fbe6302e37a48..22181d89bb9058351630b0937655951f5dd56cff 100644
--- a/test/integration/default/controls/yaml_dump_spec.rb
+++ b/test/integration/default/controls/yaml_dump_spec.rb
@@ -1,5 +1,8 @@
# frozen_string_literal: true
+# Prepare platform "finger"
+platform_finger = "#{platform[:name]}-#{platform[:release].split('.')[0]}"
+
control 'Tomcat `map.jinja` YAML dump' do
title 'should contain the lines'
@@ -7,8 +10,8 @@ control 'Tomcat `map.jinja` YAML dump' do
yaml_dump +=
case platform[:family]
when 'debian'
- case platform[:release]
- when /^10/
+ case platform_finger
+ when 'debian-10'
conf_dir = '/etc/tomcat9'
group = 'tomcat'
main_config = '/etc/default/tomcat9'
@@ -21,20 +24,7 @@ control 'Tomcat `map.jinja` YAML dump' do
catalina_home = '/usr/share/tomcat9'
catalina_pid = '/var/run/tomcat9.pid'
catalina_tmpdir = '/var/cache/tomcat9/temp'
- when /^8/
- conf_dir = '/etc/tomcat7'
- group = 'tomcat7'
- main_config = '/etc/default/tomcat7'
- manager_pkg = 'tomcat7-admin'
- pkg = 'tomcat7'
- service = 'tomcat7'
- user = 'tomcat7'
- ver = 7
- catalina_base = '/var/lib/tomcat7'
- catalina_home = '/usr/share/tomcat7'
- catalina_pid = '/var/run/tomcat7.pid'
- catalina_tmpdir = '/var/cache/tomcat7/temp'
- else
+ when 'debian-9', 'ubuntu-18', 'ubuntu-16'
conf_dir = '/etc/tomcat8'
group = 'tomcat8'
main_config = '/etc/default/tomcat8'
@@ -47,6 +37,19 @@ control 'Tomcat `map.jinja` YAML dump' do
catalina_home = '/usr/share/tomcat8'
catalina_pid = '/var/run/tomcat8.pid'
catalina_tmpdir = '/var/cache/tomcat8/temp'
+ when 'debian-8'
+ conf_dir = '/etc/tomcat7'
+ group = 'tomcat7'
+ main_config = '/etc/default/tomcat7'
+ manager_pkg = 'tomcat7-admin'
+ pkg = 'tomcat7'
+ service = 'tomcat7'
+ user = 'tomcat7'
+ ver = 7
+ catalina_base = '/var/lib/tomcat7'
+ catalina_home = '/usr/share/tomcat7'
+ catalina_pid = '/var/run/tomcat7.pid'
+ catalina_tmpdir = '/var/cache/tomcat7/temp'
end
<<~YAML_DUMP.chomp
arch: amd64
diff --git a/test/salt/comparison_files/main_config/amazon-2 b/test/salt/comparison_files/main_config/amazon-2
new file mode 100644
index 0000000000000000000000000000000000000000..0f4c78f24348cec8a59b676fa867c3089e3209e9
--- /dev/null
+++ b/test/salt/comparison_files/main_config/amazon-2
@@ -0,0 +1,67 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# # Modify the values passed to the tomcat pillar instead.
+
+# Service-specific configuration file for tomcat. This will be sourced by
+# the SysV init script after the global configuration file
+# /etc/tomcat/tomcat.conf, thus allowing values to be overridden in
+# a per-service manner.
+#
+# NEVER change the init script itself. To change values for all services make
+# your changes in /etc/tomcat/tomcat.conf
+#
+# To change values for a specific service make your edits here.
+# To create a new service create a link from /etc/init.d/<your new service> to
+# /etc/init.d/tomcat (do not copy the init script) and make a copy of the
+# /etc/sysconfig/tomcat file to /etc/sysconfig/<your new service> and change
+# the property values so the two services won't conflict. Register the new
+# service in the system as usual (see chkconfig and similars).
+#
+
+# Where your java installation lives
+JAVA_HOME=/usr/lib/jvm/jre
+
+CATALINA_BASE="/usr/share/tomcat"
+
+CATALINA_HOME="/usr/share/tomcat"
+
+CATALINA_TMPDIR="/var/cache/tomcat/temp"
+
+CATALINA_PID="/var/run/tomcat.pid"
+
+
+# You can pass some parameters to java here if you wish to
+#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+#if CLASSPATH is defined in JAVA_OPTS it may no longer munge with the default CLASSPATH
+#replace and customize if necessary
+#CLASSPATH=/usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar
+
+# Use JAVA_OPTS to set java.library.path for libtcnative.so
+#JAVA_OPTS="-Djava.library.path=/usr/lib64"
+
+# What user should run tomcat
+TOMCAT_USER=tomcat
+
+# What group should run tomcat
+TOMCAT_GROUP=tomcat
+
+# You can change your tomcat locale here
+#LANG="en_US"
+
+# Run tomcat under the Java Security Manager
+SECURITY_MANAGER="false"
+
+
+# Time to wait in seconds, before killing process
+#SHUTDOWN_WAIT="30"
+
+# Whether to annoy the user with "attempting to shut down" messages or not
+#SHUTDOWN_VERBOSE="false"
+
+# Connector port is 8080 for this tomcat instance
+#CONNECTOR_PORT="8080"
+
+# If you wish to further customize your tomcat environment,
+# put your own definitions here
+# (i.e. LD_LIBRARY_PATH for some jdbc drivers)
diff --git a/test/salt/comparison_files/main_config/centos-7 b/test/salt/comparison_files/main_config/centos-7
new file mode 100644
index 0000000000000000000000000000000000000000..0f4c78f24348cec8a59b676fa867c3089e3209e9
--- /dev/null
+++ b/test/salt/comparison_files/main_config/centos-7
@@ -0,0 +1,67 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# # Modify the values passed to the tomcat pillar instead.
+
+# Service-specific configuration file for tomcat. This will be sourced by
+# the SysV init script after the global configuration file
+# /etc/tomcat/tomcat.conf, thus allowing values to be overridden in
+# a per-service manner.
+#
+# NEVER change the init script itself. To change values for all services make
+# your changes in /etc/tomcat/tomcat.conf
+#
+# To change values for a specific service make your edits here.
+# To create a new service create a link from /etc/init.d/<your new service> to
+# /etc/init.d/tomcat (do not copy the init script) and make a copy of the
+# /etc/sysconfig/tomcat file to /etc/sysconfig/<your new service> and change
+# the property values so the two services won't conflict. Register the new
+# service in the system as usual (see chkconfig and similars).
+#
+
+# Where your java installation lives
+JAVA_HOME=/usr/lib/jvm/jre
+
+CATALINA_BASE="/usr/share/tomcat"
+
+CATALINA_HOME="/usr/share/tomcat"
+
+CATALINA_TMPDIR="/var/cache/tomcat/temp"
+
+CATALINA_PID="/var/run/tomcat.pid"
+
+
+# You can pass some parameters to java here if you wish to
+#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+#if CLASSPATH is defined in JAVA_OPTS it may no longer munge with the default CLASSPATH
+#replace and customize if necessary
+#CLASSPATH=/usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar
+
+# Use JAVA_OPTS to set java.library.path for libtcnative.so
+#JAVA_OPTS="-Djava.library.path=/usr/lib64"
+
+# What user should run tomcat
+TOMCAT_USER=tomcat
+
+# What group should run tomcat
+TOMCAT_GROUP=tomcat
+
+# You can change your tomcat locale here
+#LANG="en_US"
+
+# Run tomcat under the Java Security Manager
+SECURITY_MANAGER="false"
+
+
+# Time to wait in seconds, before killing process
+#SHUTDOWN_WAIT="30"
+
+# Whether to annoy the user with "attempting to shut down" messages or not
+#SHUTDOWN_VERBOSE="false"
+
+# Connector port is 8080 for this tomcat instance
+#CONNECTOR_PORT="8080"
+
+# If you wish to further customize your tomcat environment,
+# put your own definitions here
+# (i.e. LD_LIBRARY_PATH for some jdbc drivers)
diff --git a/test/salt/comparison_files/main_config/debian-10 b/test/salt/comparison_files/main_config/debian-10
new file mode 100644
index 0000000000000000000000000000000000000000..a63ac75939708179e0f7445b2fbfd228035f7239
--- /dev/null
+++ b/test/salt/comparison_files/main_config/debian-10
@@ -0,0 +1,58 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# Modify the values in the tomcat pillar instead.
+
+# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
+# default of tomcat8.
+TOMCAT9_USER=tomcat
+
+# Run Tomcat as this group ID. Not setting this or leaving it blank will use
+# the default of tomcat8.
+TOMCAT9_GROUP=tomcat
+
+# The home directory of the Java development kit (JDK). You need at least
+# JDK version 7. If JAVA_HOME is not set, some common directories for
+# OpenJDK and the Oracle JDK are tried.
+JAVA_HOME=/usr/lib/jvm/default-java
+
+CATALINA_BASE="/var/lib/tomcat9"
+CATALINA_HOME="/usr/share/tomcat9"
+CATALINA_TMPDIR="/var/cache/tomcat9/temp"
+CATALINA_PID="/var/run/tomcat9.pid"
+
+
+# You may pass JVM startup parameters to Java here. If unset, the default
+# options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
+#
+# Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved
+# response time). If you use that option and you run Tomcat on a machine with
+# exactly one CPU chip that contains one or two cores, you should also add
+# the "-XX:+CMSIncrementalMode" option.
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+# To enable remote debugging uncomment the following line.
+# You will then be able to use a java debugger on port 8000.
+#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
+
+# Java compiler to use for translating JavaServer Pages (JSPs). You can use all
+# compilers that are accepted by Ant's build.compiler property.
+JSP_COMPILER=javac
+
+
+# Use the Java security manager? (yes/no, default: no)
+TOMCAT9_SECURITY=no
+
+
+# Number of days to keep logfiles in /var/log/tomcat8. Default is 14 days.
+#LOGFILE_DAYS=14
+# Whether to compress logfiles older than today's
+#LOGFILE_COMPRESS=1
+
+# Location of the JVM temporary directory
+# WARNING: This directory will be destroyed and recreated at every startup !
+JVM_TMP=/tmp/tomcat
+
+
+# If you run Tomcat on port numbers that are all higher than 1023, then you
+# do not need authbind. It is used for binding Tomcat to lower port numbers.
+# (yes/no, default: no)
+AUTHBIND=no
diff --git a/test/salt/comparison_files/main_config/debian-8 b/test/salt/comparison_files/main_config/debian-8
new file mode 100644
index 0000000000000000000000000000000000000000..21953294ab6ee82df87055197f9ac2fc65c65c7f
--- /dev/null
+++ b/test/salt/comparison_files/main_config/debian-8
@@ -0,0 +1,60 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# Modify the values in the tomcat pillar instead.
+
+# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
+# default of tomcat8.
+TOMCAT7_USER=tomcat7
+
+# Run Tomcat as this group ID. Not setting this or leaving it blank will use
+# the default of tomcat8.
+TOMCAT7_GROUP=tomcat7
+
+# The home directory of the Java development kit (JDK). You need at least
+# JDK version 7. If JAVA_HOME is not set, some common directories for
+# OpenJDK and the Oracle JDK are tried.
+JAVA_HOME=/usr/lib/jvm/default-java
+
+CATALINA_BASE="/var/lib/tomcat7"
+CATALINA_HOME="/usr/share/tomcat7"
+CATALINA_TMPDIR="/var/cache/tomcat7/temp"
+CATALINA_PID="/var/run/tomcat7.pid"
+
+
+# You may pass JVM startup parameters to Java here. If unset, the default
+# options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
+#
+# Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved
+# response time). If you use that option and you run Tomcat on a machine with
+# exactly one CPU chip that contains one or two cores, you should also add
+# the "-XX:+CMSIncrementalMode" option.
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+# To enable remote debugging uncomment the following line.
+# You will then be able to use a java debugger on port 8000.
+#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
+
+# Java compiler to use for translating JavaServer Pages (JSPs). You can use all
+# compilers that are accepted by Ant's build.compiler property.
+JSP_COMPILER=javac
+
+
+# Use the Java security manager? (yes/no, default: no)
+TOMCAT7_SECURITY=no
+
+
+# Number of days to keep logfiles in /var/log/tomcat8. Default is 14 days.
+#LOGFILE_DAYS=14
+# Whether to compress logfiles older than today's
+#LOGFILE_COMPRESS=1
+
+# Location of the JVM temporary directory
+# WARNING: This directory will be destroyed and recreated at every startup !
+JVM_TMP=/tmp/tomcat
+
+
+# If you run Tomcat on port numbers that are all higher than 1023, then you
+# do not need authbind. It is used for binding Tomcat to lower port numbers.
+# (yes/no, default: no)
+AUTHBIND=no
+
+
diff --git a/test/salt/comparison_files/main_config/debian-9 b/test/salt/comparison_files/main_config/debian-9
new file mode 100644
index 0000000000000000000000000000000000000000..7ac21445df05400c9a91698af0fc21e766efdb5d
--- /dev/null
+++ b/test/salt/comparison_files/main_config/debian-9
@@ -0,0 +1,58 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# Modify the values in the tomcat pillar instead.
+
+# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
+# default of tomcat8.
+TOMCAT8_USER=tomcat8
+
+# Run Tomcat as this group ID. Not setting this or leaving it blank will use
+# the default of tomcat8.
+TOMCAT8_GROUP=tomcat8
+
+# The home directory of the Java development kit (JDK). You need at least
+# JDK version 7. If JAVA_HOME is not set, some common directories for
+# OpenJDK and the Oracle JDK are tried.
+JAVA_HOME=/usr/lib/jvm/default-java
+
+CATALINA_BASE="/var/lib/tomcat8"
+CATALINA_HOME="/usr/share/tomcat8"
+CATALINA_TMPDIR="/var/cache/tomcat8/temp"
+CATALINA_PID="/var/run/tomcat8.pid"
+
+
+# You may pass JVM startup parameters to Java here. If unset, the default
+# options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
+#
+# Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved
+# response time). If you use that option and you run Tomcat on a machine with
+# exactly one CPU chip that contains one or two cores, you should also add
+# the "-XX:+CMSIncrementalMode" option.
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+# To enable remote debugging uncomment the following line.
+# You will then be able to use a java debugger on port 8000.
+#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
+
+# Java compiler to use for translating JavaServer Pages (JSPs). You can use all
+# compilers that are accepted by Ant's build.compiler property.
+JSP_COMPILER=javac
+
+
+# Use the Java security manager? (yes/no, default: no)
+TOMCAT8_SECURITY=no
+
+
+# Number of days to keep logfiles in /var/log/tomcat8. Default is 14 days.
+#LOGFILE_DAYS=14
+# Whether to compress logfiles older than today's
+#LOGFILE_COMPRESS=1
+
+# Location of the JVM temporary directory
+# WARNING: This directory will be destroyed and recreated at every startup !
+JVM_TMP=/tmp/tomcat
+
+
+# If you run Tomcat on port numbers that are all higher than 1023, then you
+# do not need authbind. It is used for binding Tomcat to lower port numbers.
+# (yes/no, default: no)
+AUTHBIND=no
diff --git a/test/salt/comparison_files/main_config/fedora-31 b/test/salt/comparison_files/main_config/fedora-31
new file mode 100644
index 0000000000000000000000000000000000000000..0f4c78f24348cec8a59b676fa867c3089e3209e9
--- /dev/null
+++ b/test/salt/comparison_files/main_config/fedora-31
@@ -0,0 +1,67 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# # Modify the values passed to the tomcat pillar instead.
+
+# Service-specific configuration file for tomcat. This will be sourced by
+# the SysV init script after the global configuration file
+# /etc/tomcat/tomcat.conf, thus allowing values to be overridden in
+# a per-service manner.
+#
+# NEVER change the init script itself. To change values for all services make
+# your changes in /etc/tomcat/tomcat.conf
+#
+# To change values for a specific service make your edits here.
+# To create a new service create a link from /etc/init.d/<your new service> to
+# /etc/init.d/tomcat (do not copy the init script) and make a copy of the
+# /etc/sysconfig/tomcat file to /etc/sysconfig/<your new service> and change
+# the property values so the two services won't conflict. Register the new
+# service in the system as usual (see chkconfig and similars).
+#
+
+# Where your java installation lives
+JAVA_HOME=/usr/lib/jvm/jre
+
+CATALINA_BASE="/usr/share/tomcat"
+
+CATALINA_HOME="/usr/share/tomcat"
+
+CATALINA_TMPDIR="/var/cache/tomcat/temp"
+
+CATALINA_PID="/var/run/tomcat.pid"
+
+
+# You can pass some parameters to java here if you wish to
+#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+#if CLASSPATH is defined in JAVA_OPTS it may no longer munge with the default CLASSPATH
+#replace and customize if necessary
+#CLASSPATH=/usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar
+
+# Use JAVA_OPTS to set java.library.path for libtcnative.so
+#JAVA_OPTS="-Djava.library.path=/usr/lib64"
+
+# What user should run tomcat
+TOMCAT_USER=tomcat
+
+# What group should run tomcat
+TOMCAT_GROUP=tomcat
+
+# You can change your tomcat locale here
+#LANG="en_US"
+
+# Run tomcat under the Java Security Manager
+SECURITY_MANAGER="false"
+
+
+# Time to wait in seconds, before killing process
+#SHUTDOWN_WAIT="30"
+
+# Whether to annoy the user with "attempting to shut down" messages or not
+#SHUTDOWN_VERBOSE="false"
+
+# Connector port is 8080 for this tomcat instance
+#CONNECTOR_PORT="8080"
+
+# If you wish to further customize your tomcat environment,
+# put your own definitions here
+# (i.e. LD_LIBRARY_PATH for some jdbc drivers)
diff --git a/test/salt/comparison_files/main_config/opensuse-15 b/test/salt/comparison_files/main_config/opensuse-15
new file mode 100644
index 0000000000000000000000000000000000000000..0f4c78f24348cec8a59b676fa867c3089e3209e9
--- /dev/null
+++ b/test/salt/comparison_files/main_config/opensuse-15
@@ -0,0 +1,67 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# # Modify the values passed to the tomcat pillar instead.
+
+# Service-specific configuration file for tomcat. This will be sourced by
+# the SysV init script after the global configuration file
+# /etc/tomcat/tomcat.conf, thus allowing values to be overridden in
+# a per-service manner.
+#
+# NEVER change the init script itself. To change values for all services make
+# your changes in /etc/tomcat/tomcat.conf
+#
+# To change values for a specific service make your edits here.
+# To create a new service create a link from /etc/init.d/<your new service> to
+# /etc/init.d/tomcat (do not copy the init script) and make a copy of the
+# /etc/sysconfig/tomcat file to /etc/sysconfig/<your new service> and change
+# the property values so the two services won't conflict. Register the new
+# service in the system as usual (see chkconfig and similars).
+#
+
+# Where your java installation lives
+JAVA_HOME=/usr/lib/jvm/jre
+
+CATALINA_BASE="/usr/share/tomcat"
+
+CATALINA_HOME="/usr/share/tomcat"
+
+CATALINA_TMPDIR="/var/cache/tomcat/temp"
+
+CATALINA_PID="/var/run/tomcat.pid"
+
+
+# You can pass some parameters to java here if you wish to
+#JAVA_OPTS="-Xminf0.1 -Xmaxf0.3"
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+#if CLASSPATH is defined in JAVA_OPTS it may no longer munge with the default CLASSPATH
+#replace and customize if necessary
+#CLASSPATH=/usr/share/tomcat/bin/bootstrap.jar:/usr/share/tomcat/bin/tomcat-juli.jar:/usr/share/java/commons-daemon.jar
+
+# Use JAVA_OPTS to set java.library.path for libtcnative.so
+#JAVA_OPTS="-Djava.library.path=/usr/lib64"
+
+# What user should run tomcat
+TOMCAT_USER=tomcat
+
+# What group should run tomcat
+TOMCAT_GROUP=tomcat
+
+# You can change your tomcat locale here
+#LANG="en_US"
+
+# Run tomcat under the Java Security Manager
+SECURITY_MANAGER="false"
+
+
+# Time to wait in seconds, before killing process
+#SHUTDOWN_WAIT="30"
+
+# Whether to annoy the user with "attempting to shut down" messages or not
+#SHUTDOWN_VERBOSE="false"
+
+# Connector port is 8080 for this tomcat instance
+#CONNECTOR_PORT="8080"
+
+# If you wish to further customize your tomcat environment,
+# put your own definitions here
+# (i.e. LD_LIBRARY_PATH for some jdbc drivers)
diff --git a/test/salt/comparison_files/main_config/ubuntu-16 b/test/salt/comparison_files/main_config/ubuntu-16
new file mode 100644
index 0000000000000000000000000000000000000000..7ac21445df05400c9a91698af0fc21e766efdb5d
--- /dev/null
+++ b/test/salt/comparison_files/main_config/ubuntu-16
@@ -0,0 +1,58 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# Modify the values in the tomcat pillar instead.
+
+# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
+# default of tomcat8.
+TOMCAT8_USER=tomcat8
+
+# Run Tomcat as this group ID. Not setting this or leaving it blank will use
+# the default of tomcat8.
+TOMCAT8_GROUP=tomcat8
+
+# The home directory of the Java development kit (JDK). You need at least
+# JDK version 7. If JAVA_HOME is not set, some common directories for
+# OpenJDK and the Oracle JDK are tried.
+JAVA_HOME=/usr/lib/jvm/default-java
+
+CATALINA_BASE="/var/lib/tomcat8"
+CATALINA_HOME="/usr/share/tomcat8"
+CATALINA_TMPDIR="/var/cache/tomcat8/temp"
+CATALINA_PID="/var/run/tomcat8.pid"
+
+
+# You may pass JVM startup parameters to Java here. If unset, the default
+# options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
+#
+# Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved
+# response time). If you use that option and you run Tomcat on a machine with
+# exactly one CPU chip that contains one or two cores, you should also add
+# the "-XX:+CMSIncrementalMode" option.
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+# To enable remote debugging uncomment the following line.
+# You will then be able to use a java debugger on port 8000.
+#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
+
+# Java compiler to use for translating JavaServer Pages (JSPs). You can use all
+# compilers that are accepted by Ant's build.compiler property.
+JSP_COMPILER=javac
+
+
+# Use the Java security manager? (yes/no, default: no)
+TOMCAT8_SECURITY=no
+
+
+# Number of days to keep logfiles in /var/log/tomcat8. Default is 14 days.
+#LOGFILE_DAYS=14
+# Whether to compress logfiles older than today's
+#LOGFILE_COMPRESS=1
+
+# Location of the JVM temporary directory
+# WARNING: This directory will be destroyed and recreated at every startup !
+JVM_TMP=/tmp/tomcat
+
+
+# If you run Tomcat on port numbers that are all higher than 1023, then you
+# do not need authbind. It is used for binding Tomcat to lower port numbers.
+# (yes/no, default: no)
+AUTHBIND=no
diff --git a/test/salt/comparison_files/main_config/ubuntu-18 b/test/salt/comparison_files/main_config/ubuntu-18
new file mode 100644
index 0000000000000000000000000000000000000000..7ac21445df05400c9a91698af0fc21e766efdb5d
--- /dev/null
+++ b/test/salt/comparison_files/main_config/ubuntu-18
@@ -0,0 +1,58 @@
+# This file is managed by salt. Manual changes risk being overwritten.
+# Modify the values in the tomcat pillar instead.
+
+# Run Tomcat as this user ID. Not setting this or leaving it blank will use the
+# default of tomcat8.
+TOMCAT8_USER=tomcat8
+
+# Run Tomcat as this group ID. Not setting this or leaving it blank will use
+# the default of tomcat8.
+TOMCAT8_GROUP=tomcat8
+
+# The home directory of the Java development kit (JDK). You need at least
+# JDK version 7. If JAVA_HOME is not set, some common directories for
+# OpenJDK and the Oracle JDK are tried.
+JAVA_HOME=/usr/lib/jvm/default-java
+
+CATALINA_BASE="/var/lib/tomcat8"
+CATALINA_HOME="/usr/share/tomcat8"
+CATALINA_TMPDIR="/var/cache/tomcat8/temp"
+CATALINA_PID="/var/run/tomcat8.pid"
+
+
+# You may pass JVM startup parameters to Java here. If unset, the default
+# options will be: -Djava.awt.headless=true -Xmx128m -XX:+UseConcMarkSweepGC
+#
+# Use "-XX:+UseConcMarkSweepGC" to enable the CMS garbage collector (improved
+# response time). If you use that option and you run Tomcat on a machine with
+# exactly one CPU chip that contains one or two cores, you should also add
+# the "-XX:+CMSIncrementalMode" option.
+JAVA_OPTS="-Djava.awt.headless=true -Xmx128m -XX:MaxPermSize=256m -Dlog4j.configuration=file:/tmp/log4j.properties -Dlogback.configurationFile=/tmp/logback.xml"
+
+# To enable remote debugging uncomment the following line.
+# You will then be able to use a java debugger on port 8000.
+#JAVA_OPTS="${JAVA_OPTS} -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n"
+
+# Java compiler to use for translating JavaServer Pages (JSPs). You can use all
+# compilers that are accepted by Ant's build.compiler property.
+JSP_COMPILER=javac
+
+
+# Use the Java security manager? (yes/no, default: no)
+TOMCAT8_SECURITY=no
+
+
+# Number of days to keep logfiles in /var/log/tomcat8. Default is 14 days.
+#LOGFILE_DAYS=14
+# Whether to compress logfiles older than today's
+#LOGFILE_COMPRESS=1
+
+# Location of the JVM temporary directory
+# WARNING: This directory will be destroyed and recreated at every startup !
+JVM_TMP=/tmp/tomcat
+
+
+# If you run Tomcat on port numbers that are all higher than 1023, then you
+# do not need authbind. It is used for binding Tomcat to lower port numbers.
+# (yes/no, default: no)
+AUTHBIND=no
diff --git a/test/salt/comparison_files/server_xml/amazon-2.xml b/test/salt/comparison_files/server_xml/amazon-2.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd7be24fd3e371b84375bc32eb2800dfd54d6824
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/amazon-2.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+ <Listener className="org.apache.catalina.core.JasperListener" />
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ connectionTimeout="20000"
+ URIEncoding="UTF-8"
+ redirectPort="8443"
+ maxHttpHeaderSize="8192"
+ maxThreads="150"
+ minSpareThreads="25"
+ enableLookups="false"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ scheme="https"
+ secure="true"
+ clientAuth="false"
+ sslProtocol="TLS"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ keystorePass="somerandomtext"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost" jvmRoute="HOSTNAME_PLACEHOLDER">
+
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
+ <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
+ <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+ <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
+ <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+ <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+ </Sender>
+
+ <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
+
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+
+ </Channel>
+ <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
+ <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
+
+
+ <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
+
+ <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+ </Cluster>
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="tomcat-server"
+ unpackWARs="true"
+ autoDeploy="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ className="org.apache.catalina.valves.AccessLogValve"
+ directory="logs"
+ prefix="localhost_access_log."
+ fileDateFormat="yyyy-MM-dd-HH"
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/centos-7.xml b/test/salt/comparison_files/server_xml/centos-7.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fd7be24fd3e371b84375bc32eb2800dfd54d6824
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/centos-7.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+ <Listener className="org.apache.catalina.core.JasperListener" />
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ connectionTimeout="20000"
+ URIEncoding="UTF-8"
+ redirectPort="8443"
+ maxHttpHeaderSize="8192"
+ maxThreads="150"
+ minSpareThreads="25"
+ enableLookups="false"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ scheme="https"
+ secure="true"
+ clientAuth="false"
+ sslProtocol="TLS"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ keystorePass="somerandomtext"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost" jvmRoute="HOSTNAME_PLACEHOLDER">
+
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
+ <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
+ <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+ <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
+ <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+ <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+ </Sender>
+
+ <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
+
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+
+ </Channel>
+ <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
+ <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
+
+
+ <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
+
+ <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+ </Cluster>
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="tomcat-server"
+ unpackWARs="true"
+ autoDeploy="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ className="org.apache.catalina.valves.AccessLogValve"
+ directory="logs"
+ prefix="localhost_access_log."
+ fileDateFormat="yyyy-MM-dd-HH"
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/debian-10.xml b/test/salt/comparison_files/server_xml/debian-10.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93757aecf565fa89af5a36344451d42a6f606e0d
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/debian-10.xml
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ connectionTimeout="20000"
+ URIEncoding="UTF-8"
+ redirectPort="8443"
+ maxHttpHeaderSize="8192"
+ maxThreads="150"
+ minSpareThreads="25"
+ enableLookups="false"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ scheme="https"
+ secure="true"
+ clientAuth="false"
+ sslProtocol="TLS"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ keystorePass="somerandomtext"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="tomcat-server"
+ unpackWARs="true"
+ autoDeploy="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ className="org.apache.catalina.valves.AccessLogValve"
+ directory="logs"
+ prefix="localhost_access_log."
+ fileDateFormat="yyyy-MM-dd-HH"
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/debian-8.xml b/test/salt/comparison_files/server_xml/debian-8.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2e67370404a538bd9475fdc6258f852034220fe3
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/debian-8.xml
@@ -0,0 +1,173 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+ <Listener className="org.apache.catalina.core.JasperListener" />
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ sslProtocol="TLS"
+ maxThreads="150"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ secure="true"
+ enableLookups="false"
+ clientAuth="false"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ redirectPort="8443"
+ URIEncoding="UTF-8"
+ minSpareThreads="25"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ keystorePass="somerandomtext"
+ connectionTimeout="20000"
+ scheme="https"
+ maxHttpHeaderSize="8192"
+ port="8443"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost" jvmRoute="HOSTNAME_PLACEHOLDER">
+
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
+ <Manager className="org.apache.catalina.ha.session.DeltaManager" expireSessionsOnShutdown="false" notifyListenersOnReplication="true"/>
+ <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+ <Membership className="org.apache.catalina.tribes.membership.McastService" address="228.0.0.4" port="45564" frequency="500" dropTime="3000"/>
+ <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+ <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+ </Sender>
+
+ <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="6"/>
+
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+
+ </Channel>
+ <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/>
+ <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
+
+
+ <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
+
+ <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+ </Cluster>
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path="u''"
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ fileDateFormat="yyyy-MM-dd-HH"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D"
+ className="org.apache.catalina.valves.AccessLogValve"
+ prefix="localhost_access_log."
+ directory="logs"
+ suffix=".log" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+ <Host name="tomcat-server"
+ deployXML="false"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path="u''"
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/debian-9.xml b/test/salt/comparison_files/server_xml/debian-9.xml
new file mode 100644
index 0000000000000000000000000000000000000000..c2cbc2563736645b72abc3fee1765ec2b1fad207
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/debian-9.xml
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ maxThreads="150"
+ URIEncoding="UTF-8"
+ minSpareThreads="25"
+ sslProtocol="TLS"
+ connectionTimeout="20000"
+ secure="true"
+ maxHttpHeaderSize="8192"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ redirectPort="8443"
+ acceptCount="100"
+ keystorePass="somerandomtext"
+ scheme="https"
+ enableLookups="false"
+ clientAuth="false"
+ disableUploadTimeout="true"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="example.net"
+ autoDeploy="true"
+ unpackWARs="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ directory="logs"
+ className="org.apache.catalina.valves.AccessLogValve"
+ prefix="localhost_access_log."
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D"
+ fileDateFormat="yyyy-MM-dd-HH" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+ <Host name="tomcat-server"
+ autoDeploy="true"
+ unpackWARs="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/fedora-31.xml b/test/salt/comparison_files/server_xml/fedora-31.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93757aecf565fa89af5a36344451d42a6f606e0d
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/fedora-31.xml
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ connectionTimeout="20000"
+ URIEncoding="UTF-8"
+ redirectPort="8443"
+ maxHttpHeaderSize="8192"
+ maxThreads="150"
+ minSpareThreads="25"
+ enableLookups="false"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ scheme="https"
+ secure="true"
+ clientAuth="false"
+ sslProtocol="TLS"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ keystorePass="somerandomtext"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="tomcat-server"
+ unpackWARs="true"
+ autoDeploy="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ className="org.apache.catalina.valves.AccessLogValve"
+ directory="logs"
+ prefix="localhost_access_log."
+ fileDateFormat="yyyy-MM-dd-HH"
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/opensuse-15.xml b/test/salt/comparison_files/server_xml/opensuse-15.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ed7175b5c6f37ddf63fe08ce14bf9af9171b1d15
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/opensuse-15.xml
@@ -0,0 +1,99 @@
+<?xml version="1.0" encoding="UTF-8"?><!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+--><!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+--><!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ --><Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener SSLEngine="on" className="org.apache.catalina.core.AprLifecycleListener"/>
+
+
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener"/>
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"/>
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener"/>
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource auth="Container" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" name="UserDatabase" pathname="conf/tomcat-users.xml" type="org.apache.catalina.UserDatabase"/>
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector SSLEnabled="false" URIEncoding="UTF-8" acceptCount="100" clientAuth="false" connectionTimeout="20000" disableUploadTimeout="true" enableLookups="false" keystoreFile="/path/to/keystoreFile" keystorePass="somerandomtext" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" port="8443" protocol="org.apache.coyote.http11.Http11Protocol" redirectPort="8443" scheme="https" secure="true" sslProtocol="TLS"/>
+
+
+ <Engine defaultHost="localhost" name="Catalina">
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host autoDeploy="true" deployXML="false" name="tomcat-server" unpackWARs="true">
+ <Context debug="0" docBase="../webapps/myapp" path="" reloadable="true"/>
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host autoDeploy="true" name="example.net" unpackWARs="true">
+ <Context debug="0" docBase="../webapps/myapp2" path="" reloadable="true"/>
+
+ <Alias>www.example.net</Alias>
+
+ <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" fileDateFormat="yyyy-MM-dd-HH" pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" prefix="localhost_access_log." suffix=".log"/>
+ <Valve className="org.apache.catalina.authenticator.SingleSignOn"/>
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
\ No newline at end of file
diff --git a/test/salt/comparison_files/server_xml/ubuntu-16.xml b/test/salt/comparison_files/server_xml/ubuntu-16.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93757aecf565fa89af5a36344451d42a6f606e0d
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/ubuntu-16.xml
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ connectionTimeout="20000"
+ URIEncoding="UTF-8"
+ redirectPort="8443"
+ maxHttpHeaderSize="8192"
+ maxThreads="150"
+ minSpareThreads="25"
+ enableLookups="false"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ scheme="https"
+ secure="true"
+ clientAuth="false"
+ sslProtocol="TLS"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ keystorePass="somerandomtext"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="tomcat-server"
+ unpackWARs="true"
+ autoDeploy="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ className="org.apache.catalina.valves.AccessLogValve"
+ directory="logs"
+ prefix="localhost_access_log."
+ fileDateFormat="yyyy-MM-dd-HH"
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>
diff --git a/test/salt/comparison_files/server_xml/ubuntu-18.xml b/test/salt/comparison_files/server_xml/ubuntu-18.xml
new file mode 100644
index 0000000000000000000000000000000000000000..93757aecf565fa89af5a36344451d42a6f606e0d
--- /dev/null
+++ b/test/salt/comparison_files/server_xml/ubuntu-18.xml
@@ -0,0 +1,148 @@
+<?xml version='1.0' encoding='utf-8'?>
+<!--
+
+ This file is managed/autogenerated by salt.
+ Manual changes risk being overwritten.
+
+ Modify the salt pillar for the tomcat formula
+ that generates this file instead.
+
+-->
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!-- Note: A "Server" is not itself a "Container", so you may not
+ define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/server.html
+ -->
+<Server port="8005" shutdown="SHUTDOWN">
+ <!-- Security listener. Documentation at /docs/config/listeners.html
+ <Listener className="org.apache.catalina.security.SecurityListener" />
+ -->
+
+ <!--APR library loader. Documentation at /docs/apr.html -->
+ <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+
+
+
+
+ <!-- Prevent memory leaks due to use of particular java/javax APIs-->
+ <!--Initialize Jasper prior to webapps are loaded. Documentation at /docs/jasper-howto.html -->
+ <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
+ <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
+ <Listener className="org.apache.catalina.core.ThreadLocalLeakPreventionListener" />
+
+ <!-- Global JNDI resources
+ Documentation at /docs/jndi-resources-howto.html
+ -->
+ <GlobalNamingResources>
+
+
+ <!-- Editable user database that can also be used by
+ UserDatabaseRealm to authenticate users
+ -->
+ <Resource name="UserDatabase" auth="Container"
+ type="org.apache.catalina.UserDatabase"
+ description="User database that can be updated and saved"
+ factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+ pathname="conf/tomcat-users.xml" />
+ </GlobalNamingResources>
+
+ <!-- A "Service" is a collection of one or more "Connectors" that share
+ a single "Container" Note: A "Service" is not itself a "Container",
+ so you may not define subcomponents such as "Valves" at this level.
+ Documentation at /docs/config/service.html
+ -->
+ <Service name="Catalina">
+ <Connector
+
+ port="8443"
+ protocol="org.apache.coyote.http11.Http11Protocol"
+ connectionTimeout="20000"
+ URIEncoding="UTF-8"
+ redirectPort="8443"
+ maxHttpHeaderSize="8192"
+ maxThreads="150"
+ minSpareThreads="25"
+ enableLookups="false"
+ disableUploadTimeout="true"
+ acceptCount="100"
+ scheme="https"
+ secure="true"
+ clientAuth="false"
+ sslProtocol="TLS"
+ SSLEnabled="false"
+ keystoreFile="/path/to/keystoreFile"
+ keystorePass="somerandomtext"
+ />
+
+
+ <Engine name="Catalina" defaultHost="localhost">
+
+ <!-- Use the LockOutRealm to prevent attempts to guess user passwords
+ via a brute-force attack -->
+ <Realm className="org.apache.catalina.realm.LockOutRealm">
+ <!-- This Realm uses the UserDatabase configured in the global JNDI
+ resources under the key "UserDatabase". Any edits
+ that are performed against this UserDatabase are immediately
+ available for use by the Realm. -->
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ </Realm>
+
+
+
+ <Host name="tomcat-server"
+ unpackWARs="true"
+ autoDeploy="true"
+ deployXML="false">
+ <Context path=""
+ docBase="../webapps/myapp"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.com</Alias>
+
+ </Host>
+
+ <Host name="example.net"
+ unpackWARs="true"
+ autoDeploy="true">
+ <Context path=""
+ docBase="../webapps/myapp2"
+ debug="0"
+ reloadable="true"
+ />
+
+ <Alias>www.example.net</Alias>
+
+ <Valve
+ className="org.apache.catalina.valves.AccessLogValve"
+ directory="logs"
+ prefix="localhost_access_log."
+ fileDateFormat="yyyy-MM-dd-HH"
+ suffix=".log"
+ pattern="%h %l %u %t "%m http://%v%U %H" %s %b "%{Referer}i" "%{User-Agent}i" %D" />
+ <Valve
+ className="org.apache.catalina.authenticator.SingleSignOn" />
+
+ </Host>
+
+
+ </Engine>
+ </Service>
+</Server>