logstash/qa/docker/shared_examples/container.rb
Cas Donoghue 227c0d8150
Update container acceptance tests with stdout/stderr changes (#17138)
In https://github.com/elastic/logstash/pull/17125 jvm setup was redirected to
stderr to avoid polluting stdout. This test was actually having to do some
additional processing to parse that information. Now that we have split the
destinations the tests can be simplified to look for the data they are trying to
validate on the appropriate stream.
2025-02-21 10:40:43 -08:00

94 lines
3.2 KiB
Ruby

shared_examples_for 'the container is configured correctly' do |flavor|
before do
@image = find_image(flavor)
@container = create_container(@image, {})
end
after do
cleanup_container(@container)
end
context 'logstash' do
it 'does not warn cannot change locale' do
expect(@container.logs(stderr: true)).not_to match /cannot change locale/
end
it 'should run with the correct version' do
console_out = exec_in_container(@container, 'logstash --version')
expect(console_out).to match /#{version}/
end
it 'should run with the bundled JDK' do
full_command = exec_in_container_full(@container, 'logstash --version')
std_err = full_command[:stderr].join.chomp.strip
expect(std_err).to match /Using bundled JDK: \/usr\/share\/logstash\/jdk/
end
it 'should be running an API server on port 9600' do
wait_for_logstash(@container)
expect(get_logstash_status(@container)).not_to be_nil
end
end
context 'container files' do
it 'should have the correct license agreement' do
expect(exec_in_container(@container, 'cat /licenses/LICENSE.txt')).to have_correct_license_agreement(flavor)
end
it 'should have the license notices file' do
expect(exec_in_container(@container, 'cat /licenses/NOTICE.TXT')).to match /Notice for/
end
it 'should have the correct user' do
expect(exec_in_container(@container, 'whoami')).to eql 'logstash'
end
it 'should have the correct home directory' do
expect(exec_in_container(@container, 'printenv HOME')).to eql '/usr/share/logstash'
end
it 'should link /opt/logstash to /usr/share/logstash' do
expect(exec_in_container(@container, 'readlink /opt/logstash')).to eql '/usr/share/logstash'
end
it 'should have all files owned by the logstash user' do
expect(exec_in_container(@container, 'find /usr/share/logstash ! -user logstash')).to be_empty
expect(exec_in_container(@container, 'find /usr/share/logstash -user logstash')).not_to be_empty
end
it 'should have a logstash user with uid 1000' do
expect(exec_in_container(@container, 'id -u logstash')).to eql '1000'
end
it 'should have a logstash user with gid 1000' do
expect(exec_in_container(@container, 'id -g logstash')).to eql '1000'
end
it 'should not have a RollingFile appender' do
expect(exec_in_container(@container, 'cat /usr/share/logstash/config/log4j2.properties')).not_to match /RollingFile/
end
end
context 'the java process' do
before do
wait_for_logstash(@container)
end
it 'should be running under the logstash user' do
expect(java_process(@container)["user"]).to eql 'logstash'
end
it 'should be running under the logstash group' do
expect(java_process(@container)["group"]).to eql 'logstash'
end
it 'should have cgroup overrides set' do
expect(java_process(@container)["args"]).to match /-Dls.cgroup.cpu.path.override=/
expect(java_process(@container)["args"]).to match /-Dls.cgroup.cpuacct.path.override=/
end
it 'should have a pid of 1' do
expect(java_process(@container)["pid"]).to eql '1'
end
end
end