1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
|
# frozen_string_literal: true
require 'json'
require 'helpers/acceptance/tests/manifest_shared_examples'
require 'helpers/acceptance/tests/bad_manifest_shared_examples'
# Describes how to apply a manifest with a ILM policy, verify it, and clean it up
shared_examples 'ILM policy application' do |es_config, name, ilm_policy, param|
context 'present' do
let(:extra_manifest) do
<<-MANIFEST
elasticsearch::ilm_policy { '#{name}':
ensure => 'present',
#{param}
}
MANIFEST
end
include_examples('manifest application')
include_examples('ILM policy content', es_config, ilm_policy, name)
end
context 'absent' do
let(:extra_manifest) do
<<-MANIFEST
elasticsearch::ilm_policy { '#{name}':
ensure => absent,
}
MANIFEST
end
include_examples('manifest application')
end
end
# Verifies the content of a loaded ILM policy.
shared_examples 'ILM policy content' do |es_config, ilm_policy, _name|
elasticsearch_port = es_config['http.port']
describe port(elasticsearch_port) do
it 'open', :with_retries do
expect(subject).to be_listening
end
end
describe "http://localhost:#{elasticsearch_port}/_ilm/policy" do
subject { shell("curl http://localhost:#{elasticsearch_port}/_ilm/policy") }
it 'returns the configured ILM policy', :with_retries do
expect(JSON.parse(subject.stdout).values).
to include(include(ilm_policy))
end
end
end
# Main entrypoint for ILM policy tests
shared_examples 'ILM policy operations' do |es_config, ilm_policy|
describe 'policy resources' do
before :all do # rubocop:disable RSpec/BeforeAfterAll
shell "mkdir -p #{default.puppet['codedir']}/modules/another/files"
create_remote_file(
default,
"#{default.puppet['codedir']}/modules/another/files/good.json",
JSON.dump(ilm_policy)
)
create_remote_file(
default,
"#{default.puppet['codedir']}/modules/another/files/bad.json",
JSON.dump(ilm_policy)[0..-5]
)
end
context 'configured through' do
context '`source`' do
include_examples(
'ILM policy application',
es_config,
SecureRandom.hex(8),
ilm_policy,
"source => 'puppet:///modules/another/good.json'"
)
end
context '`content`' do
include_examples(
'ILM policy application',
es_config,
SecureRandom.hex(8),
ilm_policy,
"content => '#{JSON.dump(ilm_policy)}'"
)
end
context 'bad json' do
let(:extra_manifest) do
<<-MANIFEST
elasticsearch::ilm_policy { '#{SecureRandom.hex(8)}':
ensure => 'present',
file => 'puppet:///modules/another/bad.json'
}
MANIFEST
end
include_examples('invalid manifest application')
end
end
end
end
|