logstash/qa/integration/specs/cli/prepare_offline_pack_spec.rb
Jake Landis 196d1a1f7e Introduce docker for CI builds.
This commit includes:
* A base Dockerfile and script to push to a Docker repo
* A per-build Dockerfile (derived from the base)
* Updates to the test scripts to allow for more parallel builds
* Docker wrappers for the tests scripts
* Update for the integration test readme to manually run the tests
* Clean up the output of the Java tests
* Remove offline tag for tests (no longer needed that we don't use docker dependent services)

This commit does NOT include:
* Changes needed for the CI system to use Docker

Fixes #8223
2017-09-14 18:55:41 +00:00

87 lines
3 KiB
Ruby

# encoding: utf-8
require_relative "../../framework/fixture"
require_relative "../../framework/settings"
require_relative "../../services/logstash_service"
require_relative "../../framework/helpers"
describe "CLI > logstash-plugin prepare-offline-pack" do
before(:all) do
@fixture = Fixture.new(__FILE__)
@logstash_plugin = @fixture.get_service("logstash").plugin_cli
end
let(:temporary_zip_file) do
p = Stud::Temporary.pathname
FileUtils.mkdir_p(p)
File.join(p, "mypack.zip")
end
context "creating a pack for specific plugins" do
let(:plugins_to_pack) { %w(logstash-input-beats logstash-output-elasticsearch) }
it "successfully create a pack" do
execute = @logstash_plugin.prepare_offline_pack(plugins_to_pack, temporary_zip_file)
expect(execute.exit_code).to eq(0)
expect(execute.stderr_and_stdout).to match(/Offline package created at/)
expect(execute.stderr_and_stdout).to match(/#{temporary_zip_file}/)
unpacked = unpack(temporary_zip_file)
expect(unpacked.plugins.collect(&:name)).to include(*plugins_to_pack)
expect(unpacked.plugins.size).to eq(2)
expect(unpacked.dependencies.size).to be > 0
end
end
context "create a pack from a wildcard" do
let(:plugins_to_pack) { %w(logstash-filter-*) }
it "successfully create a pack" do
execute = @logstash_plugin.prepare_offline_pack(plugins_to_pack, temporary_zip_file)
expect(execute.exit_code).to eq(0)
expect(execute.stderr_and_stdout).to match(/Offline package created at/)
expect(execute.stderr_and_stdout).to match(/#{temporary_zip_file}/)
unpacked = unpack(temporary_zip_file)
filters = @logstash_plugin.list(plugins_to_pack.first).stderr_and_stdout.split("\n").delete_if { |f| f =~ /cext/ || f =~ /JAVA_OPT/ }
expect(unpacked.plugins.collect(&:name)).to include(*filters)
expect(unpacked.plugins.size).to eq(filters.size)
expect(unpacked.dependencies.size).to be > 0
end
end
context "create a pack with a locally installed .gem" do
let(:plugin_to_pack) { "logstash-filter-qatest" }
before do
@logstash_plugin.install(File.join(File.dirname(__FILE__), "..", "..", "fixtures", "logstash-filter-qatest-0.1.1.gem"))
# assert that the plugins is correctly installed
execute = @logstash_plugin.list(plugin_to_pack)
expect(execute.stderr_and_stdout).to match(/#{plugin_to_pack}/)
expect(execute.exit_code).to eq(0)
end
it "successfully create a pack" do
execute = @logstash_plugin.prepare_offline_pack(plugin_to_pack, temporary_zip_file)
expect(execute.stderr_and_stdout).to match(/Offline package created at/)
expect(execute.stderr_and_stdout).to match(/#{temporary_zip_file}/)
expect(execute.exit_code).to eq(0)
unpacked = unpack(temporary_zip_file)
expect(unpacked.plugins.collect(&:name)).to include(plugin_to_pack)
expect(unpacked.plugins.size).to eq(1)
expect(unpacked.dependencies.size).to eq(0)
end
end
end