qa/docker/shared_examples/container_options.rb (75 lines of code) (raw):
shared_examples_for 'it applies settings correctly' do |flavor|
before do
@image = find_image(flavor)
@container = start_container(@image, options)
wait_for_pipeline(@container)
end
after do
cleanup_container(@container)
end
context 'when setting pipeline workers shell style' do
let(:options) { { 'ENV' => ['PIPELINE_WORKERS=32'] } }
it "should correctly set the number of pipeline workers" do
expect(get_pipeline_setting(@container, 'workers')).to eql 32
end
end
context 'when setting pipeline workers dot style' do
let(:options) { { 'ENV' => ['pipeline.workers=64'] } }
it "should correctly set the number of pipeline workers" do
expect(get_pipeline_setting(@container, 'workers')).to eql 64
end
end
context 'when setting pipeline batch size' do
let(:options) { { 'ENV' => ['pipeline.batch.size=123'] } }
it "should correctly set the batch size" do
expect(get_pipeline_setting(@container, 'batch_size')).to eql 123
end
end
context 'when setting pipeline batch delay' do
let(:options) { { 'ENV' => ['pipeline.batch.delay=36'] } }
it 'should correctly set batch delay' do
expect(get_pipeline_setting(@container, 'batch_delay')).to eql 36
end
end
context 'when setting unsafe shutdown to true shell style' do
let(:options) { { 'ENV' => ['pipeline.unsafe_shutdown=true'] } }
it 'should set unsafe shutdown to true' do
expect(get_settings(@container)['pipeline.unsafe_shutdown']).to be_truthy
end
end
context 'when setting unsafe shutdown to true dot style' do
let(:options) { { 'ENV' => ['pipeline.unsafe_shutdown=true'] } }
it 'should set unsafe shutdown to true' do
expect(get_settings(@container)['pipeline.unsafe_shutdown']).to be_truthy
end
end
context 'when setting config.string' do
let(:options) {
{
'ENV' => [
'USER=kimchy',
'CONFIG_STRING=input {
beats { port => 5040 }
}
output {
elasticsearch {
hosts => ["https://es:9200"]
user => "${USER}"
password => \'changeme\'
}
}'
]
}
}
it "persists ${CONFIG_STRING} key in logstash.yml, resolves when running and spins up without issue" do
settings = get_settings(@container)
expect(settings['config.string']).to eq("${CONFIG_STRING}")
pipeline_config = get_pipeline_stats(@container)
input_plugins = pipeline_config.dig('plugins', 'inputs')
expect(input_plugins[0].dig('name')).to eql('beats')
output_plugins = pipeline_config.dig('plugins', 'outputs')
expect(output_plugins[0].dig('name')).to eql('elasticsearch')
# check if logs contain the ES request with the resolved ${USER}
wait_for_log_message(@container, 'https://kimchy:xxxxxx@es:9200')
end
end
end