From f35f3bd7463aeaa470c601b85534cc7ad4874182 Mon Sep 17 00:00:00 2001 From: Peter Bukowinski Date: Tue, 5 May 2020 22:08:47 -0700 Subject: [PATCH 1/2] Fix init template provides parameter This fixes two issues with the generated init file: * The `@service_name` value on the `Provides` line doesn't make into the file due to incorrect tag format * The tag format strips the trailing carriage return, so the following `Required-Start` line appears on the same line as the `Provides` line --- templates/init.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/init.erb b/templates/init.erb index cc899ed5..aca3aebc 100644 --- a/templates/init.erb +++ b/templates/init.erb @@ -4,7 +4,7 @@ # <%- if @osfamily == 'Debian' -%> ### BEGIN INIT INFO -# Provides: <%- @service_name -%> +# Provides: <%= @service_name %> # Required-Start: <%= @service_requires.join(' ') %> # Required-Stop: # Default-Start: 2 3 4 5 From 9b1448eb3ef34e8ed67e830269463cb8a9a566bf Mon Sep 17 00:00:00 2001 From: Peter Bukowinski Date: Tue, 5 May 2020 22:49:59 -0700 Subject: [PATCH 2/2] add kafka service_name presence test Add a lines to *_spec.rb files to test for the presence of the service name in the init script for pre-systemd Debian osfamily --- spec/acceptance/broker_spec.rb | 10 ++++++++++ spec/acceptance/consumer_spec.rb | 9 +++++++++ spec/acceptance/mirror_spec.rb | 9 +++++++++ spec/acceptance/producer_spec.rb | 4 ++++ 4 files changed, 32 insertions(+) diff --git a/spec/acceptance/broker_spec.rb b/spec/acceptance/broker_spec.rb index 8f9973c4..e242c324 100644 --- a/spec/acceptance/broker_spec.rb +++ b/spec/acceptance/broker_spec.rb @@ -204,6 +204,16 @@ class { 'kafka::broker': it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/tmp/log4j.properties"' } end + describe file('/etc/init.d/kafka'), if: (fact('service_provider') == 'upstart' && fact('osfamily') == 'Debian') do + it { is_expected.to be_file } + it { is_expected.to be_owned_by 'root' } + it { is_expected.to be_grouped_into 'root' } + it { is_expected.to contain %r{^# Provides:\s+kafka$} } + it { is_expected.to contain 'export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote"' } + it { is_expected.to contain 'export KAFKA_HEAP_OPTS="-Xmx512M -Xmx512M"' } + it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/tmp/log4j.properties"' } + end + describe file('/etc/systemd/system/kafka.service'), if: (fact('operatingsystemmajrelease') == '7' && fact('osfamily') == 'RedHat') do it { is_expected.to be_file } it { is_expected.to be_owned_by 'root' } diff --git a/spec/acceptance/consumer_spec.rb b/spec/acceptance/consumer_spec.rb index 31c4526d..0650a4a2 100644 --- a/spec/acceptance/consumer_spec.rb +++ b/spec/acceptance/consumer_spec.rb @@ -140,6 +140,15 @@ class { 'kafka::consumer': it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/opt/kafka/config/log4j.properties"' } end + describe file('/etc/init.d/kafka-consumer'), if: (fact('service_provider') == 'upstart' && fact('osfamily') == 'Debian') do + it { is_expected.to be_file } + it { is_expected.to be_owned_by 'root' } + it { is_expected.to be_grouped_into 'root' } + it { is_expected.to contain %r{^# Provides:\s+kafka-consumer$} } + it { is_expected.to contain 'export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9993"' } + it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/opt/kafka/config/log4j.properties"' } + end + describe file('/etc/systemd/system/kafka-consumer.service'), if: (fact('operatingsystemmajrelease') == '7' && fact('osfamily') == 'RedHat') do it { is_expected.to be_file } it { is_expected.to be_owned_by 'root' } diff --git a/spec/acceptance/mirror_spec.rb b/spec/acceptance/mirror_spec.rb index e61102f6..b17f4e96 100644 --- a/spec/acceptance/mirror_spec.rb +++ b/spec/acceptance/mirror_spec.rb @@ -218,6 +218,15 @@ class { 'kafka::mirror': it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/opt/kafka/config/log4j.properties"' } end + describe file('/etc/init.d/kafka-mirror'), if: (fact('service_provider') == 'upstart' && fact('osfamily') == 'Debian') do + it { is_expected.to be_file } + it { is_expected.to be_owned_by 'root' } + it { is_expected.to be_grouped_into 'root' } + it { is_expected.to contain %r{^# Provides:\s+kafka-mirror$} } + it { is_expected.to contain 'export KAFKA_JMX_OPTS="-Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.port=9991"' } + it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/opt/kafka/config/log4j.properties"' } + end + describe file('/etc/systemd/system/kafka-mirror.service'), if: (fact('operatingsystemmajrelease') == '7' && fact('osfamily') == 'RedHat') do it { is_expected.to be_file } it { is_expected.to be_owned_by 'root' } diff --git a/spec/acceptance/producer_spec.rb b/spec/acceptance/producer_spec.rb index c97d2f3e..b2e18f84 100644 --- a/spec/acceptance/producer_spec.rb +++ b/spec/acceptance/producer_spec.rb @@ -138,6 +138,10 @@ class { 'kafka::producer': it { is_expected.to contain 'export KAFKA_LOG4J_OPTS="-Dlog4j.configuration=file:/opt/kafka/config/log4j.properties"' } end + describe file('/etc/init.d/kafka-producer'), if: (fact('service_provider') == 'upstart' && fact('osfamily') == 'Debian') do + it { is_expected.to contain %r{^# Provides:\s+kafka-producer$} } + end + describe service('kafka-producer') do it { is_expected.to be_running } it { is_expected.to be_enabled }