diff --git a/spec/acceptance/tests/acceptance_spec.rb b/spec/acceptance/tests/acceptance_spec.rb index 2b99156..c511149 100644 --- a/spec/acceptance/tests/acceptance_spec.rb +++ b/spec/acceptance/tests/acceptance_spec.rb @@ -1,92 +1,92 @@ require 'spec_helper_acceptance' require 'helpers/acceptance/tests/basic_shared_examples.rb' require 'helpers/acceptance/tests/template_shared_examples.rb' require 'helpers/acceptance/tests/removal_shared_examples.rb' require 'helpers/acceptance/tests/pipeline_shared_examples.rb' require 'helpers/acceptance/tests/plugin_shared_examples.rb' require 'helpers/acceptance/tests/plugin_upgrade_shared_examples.rb' require 'helpers/acceptance/tests/snapshot_repository_shared_examples.rb' require 'helpers/acceptance/tests/datadir_shared_examples.rb' require 'helpers/acceptance/tests/package_url_shared_examples.rb' require 'helpers/acceptance/tests/hiera_shared_examples.rb' require 'helpers/acceptance/tests/usergroup_shared_examples.rb' require 'helpers/acceptance/tests/security_shared_examples.rb' describe "elasticsearch v#{v[:elasticsearch_full_version]} class" do es_config = { 'http.port' => 9200, 'node.name' => 'elasticsearch01' } let(:elastic_repo) { not v[:is_snapshot] } let(:manifest) do package = if not v[:is_snapshot] <<-MANIFEST # Hard version set here due to plugin incompatibilities. version => '#{v[:elasticsearch_full_version]}', MANIFEST else <<-MANIFEST manage_repo => false, package_url => '#{v[:snapshot_package]}', MANIFEST end <<-MANIFEST api_timeout => 60, config => { 'cluster.name' => '#{v[:cluster_name]}', 'http.bind_host' => '0.0.0.0', #{es_config.map { |k, v| " '#{k}' => '#{v}'," }.join("\n")} }, jvm_options => [ '-Xms128m', '-Xmx128m', ], oss => #{v[:oss]}, #{package} MANIFEST end context 'testing with' do describe 'simple config' do include_examples('basic acceptance tests', es_config) end include_examples('module removal', es_config) end include_examples('template operations', es_config, v[:template]) include_examples('pipeline operations', es_config, v[:pipeline]) include_examples('plugin acceptance tests', es_config, v[:elasticsearch_plugins]) unless v[:elasticsearch_plugins].empty? # # Only pre-5.x versions supported versions differing from core ES # if semver(v[:elasticsearch_full_version]) < semver('5.0.0') # include_examples( # 'plugin upgrade acceptance tests', # :name => 'kopf', # :initial => '2.0.1', # :upgraded => '2.1.2', # :repository => 'lmenezes/elasticsearch' # ) # end include_examples('snapshot repository acceptance tests') - # include_examples 'datadir acceptance tests' + include_examples('datadir acceptance tests', es_config) # # Skip this for snapshot testing, as we only have package files anyway. # include_examples 'package_url acceptance tests' unless v[:is_snapshot] # include_examples 'hiera acceptance tests', v[:elasticsearch_plugins] # include_examples 'user/group acceptance tests' # # Security-related tests (shield/x-pack). # # # # Skip OSS-only distributions since they do not bundle x-pack, and skip # # snapshots since we they don't recognize prod licenses. # include_examples 'security acceptance tests', instances unless v[:oss] or v[:is_snapshot] end diff --git a/spec/helpers/acceptance/tests/datadir_shared_examples.rb b/spec/helpers/acceptance/tests/datadir_shared_examples.rb index c4467c6..0ec67db 100644 --- a/spec/helpers/acceptance/tests/datadir_shared_examples.rb +++ b/spec/helpers/acceptance/tests/datadir_shared_examples.rb @@ -1,102 +1,72 @@ require 'json' require 'helpers/acceptance/tests/manifest_shared_examples' -shared_examples 'datadir directory validation' do |instances, datapaths| - include_examples( - 'manifest application', - instances - ) +shared_examples 'datadir directory validation' do |es_config, datapaths| + include_examples('manifest application') - instances.each_pair do |instance, config| - describe file("/etc/elasticsearch/#{instance}/elasticsearch.yml") do - it { should be_file } - datapaths.each do |datapath| - it { should contain datapath } - end + describe file('/etc/elasticsearch/elasticsearch.yml') do + it { should be_file } + datapaths.each do |datapath| + it { should contain datapath } end + end - datapaths.each do |datapath| - describe file(datapath) do - it { should be_directory } - end + datapaths.each do |datapath| + describe file(datapath) do + it { should be_directory } end + end - describe port(config['config']['http.port']) do - it 'open', :with_retries do - should be_listening - end + es_port = es_config['http.port'] + describe port(es_port) do + it 'open', :with_retries do + should be_listening end + end - describe server :container do - describe http( - "http://localhost:#{config['config']['http.port']}/_nodes/_local" - ) do - it 'uses a custom data path' do - json = JSON.parse(response.body)['nodes'].values.first - expect( - json['settings']['path']['data'] - ).to((datapaths.one? and v[:elasticsearch_major_version] <= 2) ? eq(datapaths.first) : contain_exactly(*datapaths)) - end + describe server :container do + describe http( + "http://localhost:#{es_port}/_nodes/_local" + ) do + it 'uses a custom data path' do + json = JSON.parse(response.body)['nodes'].values.first + expect( + json['settings']['path']['data'] + ).to((datapaths.one? and v[:elasticsearch_major_version] <= 2) ? eq(datapaths.first) : contain_exactly(*datapaths)) end end end end -shared_examples 'datadir acceptance tests' do +shared_examples 'datadir acceptance tests' do |es_config| describe 'elasticsearch::datadir' do let(:manifest_class_parameters) { 'restart_on_change => true' } - instances = - { - 'es-01' => { - 'config' => { - 'http.port' => 9200 - } - } - } - - context 'single path from class', :with_cleanup do + context 'single path', :with_cleanup do let(:manifest_class_parameters) do <<-MANIFEST - datadir => '/var/lib/elasticsearch-data', + datadir => '/var/lib/elasticsearch-data', restart_on_change => true, MANIFEST end - include_examples 'datadir directory validation', instances, ['/var/lib/elasticsearch-data/es-01'] + include_examples('datadir directory validation', + es_config, + ['/var/lib/elasticsearch-data']) end - context 'single path from instance', :with_cleanup do - let(:manifest_instance_parameters) { "datadir => '/var/lib/elasticsearch-data/1'" } - include_examples 'datadir directory validation', instances, ['/var/lib/elasticsearch-data/1'] - end - - context 'multiple paths from class', :with_cleanup do + context 'multiple paths', :with_cleanup do let(:manifest_class_parameters) do <<-MANIFEST datadir => [ '/var/lib/elasticsearch-01', '/var/lib/elasticsearch-02' ], restart_on_change => true, MANIFEST end - include_examples 'datadir directory validation', - instances, - ['/var/lib/elasticsearch-01/es-01', '/var/lib/elasticsearch-02/es-01'] - end - - context 'multiple paths from instance', :with_cleanup do - let(:manifest_instance_parameters) do - <<-MANIFEST - datadir => [ - '/var/lib/elasticsearch-data/2', - '/var/lib/elasticsearch-data/3' - ] - MANIFEST - end - include_examples 'datadir directory validation', - instances, - ['/var/lib/elasticsearch-data/2', '/var/lib/elasticsearch-data/3'] + include_examples('datadir directory validation', + es_config, + ['/var/lib/elasticsearch-01', '/var/lib/elasticsearch-02']) end end end