logstash-output-elasticsearch 7.4.3-java → 8.0.0-java
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/CHANGELOG.md +5 -18
- data/docs/index.asciidoc +13 -50
- data/lib/logstash/outputs/elasticsearch/common.rb +39 -43
- data/lib/logstash/outputs/elasticsearch/common_configs.rb +2 -11
- data/lib/logstash/outputs/elasticsearch/http_client.rb +22 -27
- data/lib/logstash/outputs/elasticsearch/http_client/manticore_adapter.rb +2 -2
- data/lib/logstash/outputs/elasticsearch/http_client/pool.rb +12 -31
- data/lib/logstash/outputs/elasticsearch/template_manager.rb +6 -4
- data/logstash-output-elasticsearch.gemspec +1 -1
- data/spec/es_spec_helper.rb +0 -6
- data/spec/integration/outputs/compressed_indexing_spec.rb +44 -46
- data/spec/integration/outputs/delete_spec.rb +49 -51
- data/spec/integration/outputs/groovy_update_spec.rb +129 -131
- data/spec/integration/outputs/index_version_spec.rb +81 -82
- data/spec/integration/outputs/ingest_pipeline_spec.rb +49 -51
- data/spec/integration/outputs/painless_update_spec.rb +130 -170
- data/spec/integration/outputs/parent_spec.rb +55 -149
- data/spec/integration/outputs/sniffer_spec.rb +2 -5
- data/spec/integration/outputs/templates_5x_spec.rb +82 -81
- data/spec/integration/outputs/templates_spec.rb +81 -81
- data/spec/integration/outputs/update_spec.rb +99 -101
- data/spec/unit/outputs/elasticsearch/http_client/manticore_adapter_spec.rb +5 -30
- data/spec/unit/outputs/elasticsearch/http_client/pool_spec.rb +0 -3
- data/spec/unit/outputs/elasticsearch/http_client_spec.rb +12 -11
- data/spec/unit/outputs/elasticsearch/template_manager_spec.rb +25 -13
- data/spec/unit/outputs/elasticsearch_spec.rb +1 -10
- metadata +4 -6
@@ -1,116 +1,114 @@
|
|
1
1
|
require_relative "../../../spec/es_spec_helper"
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
3
|
+
describe "Update actions without scripts", :integration => true, :version_greater_than_equal_to_2x => true do
|
4
|
+
require "logstash/outputs/elasticsearch"
|
5
|
+
|
6
|
+
def get_es_output( options={} )
|
7
|
+
settings = {
|
8
|
+
"manage_template" => true,
|
9
|
+
"index" => "logstash-update",
|
10
|
+
"template_overwrite" => true,
|
11
|
+
"hosts" => get_host_port(),
|
12
|
+
"action" => "update"
|
13
|
+
}
|
14
|
+
LogStash::Outputs::ElasticSearch.new(settings.merge!(options))
|
15
|
+
end
|
16
|
+
|
17
|
+
before :each do
|
18
|
+
@es = get_client
|
19
|
+
# Delete all templates first.
|
20
|
+
# Clean ES of data before we start.
|
21
|
+
@es.indices.delete_template(:name => "*")
|
22
|
+
# This can fail if there are no indexes, ignore failure.
|
23
|
+
@es.indices.delete(:index => "*") rescue nil
|
24
|
+
@es.index(
|
25
|
+
:index => 'logstash-update',
|
26
|
+
:type => 'logs',
|
27
|
+
:id => "123",
|
28
|
+
:body => { :message => 'Test', :counter => 1 }
|
29
|
+
)
|
30
|
+
@es.indices.refresh
|
31
|
+
end
|
32
|
+
|
33
|
+
it "should fail without a document_id" do
|
34
|
+
subject = get_es_output
|
35
|
+
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when update only" do
|
39
|
+
it "should not create new document" do
|
40
|
+
subject = get_es_output({ 'document_id' => "456" } )
|
41
|
+
subject.register
|
42
|
+
subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
|
43
|
+
expect {@es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should update existing document" do
|
47
|
+
subject = get_es_output({ 'document_id' => "123" })
|
48
|
+
subject.register
|
49
|
+
subject.multi_receive([LogStash::Event.new("message" => "updated message here")])
|
50
|
+
r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
|
51
|
+
insist { r["_source"]["message"] } == 'updated message here'
|
52
|
+
end
|
53
|
+
|
54
|
+
# The es ruby client treats the data field differently. Make sure this doesn't
|
55
|
+
# raise an exception
|
56
|
+
it "should update an existing document that has a 'data' field" do
|
57
|
+
subject = get_es_output({ 'document_id' => "123" })
|
58
|
+
subject.register
|
59
|
+
subject.multi_receive([LogStash::Event.new("data" => "updated message here", "message" => "foo")])
|
60
|
+
r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
|
61
|
+
insist { r["_source"]["data"] } == 'updated message here'
|
62
|
+
insist { r["_source"]["message"] } == 'foo'
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should allow default (internal) version" do
|
66
|
+
subject = get_es_output({ 'document_id' => "123", "version" => "99" })
|
67
|
+
subject.register
|
16
68
|
end
|
17
69
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
# Clean ES of data before we start.
|
22
|
-
@es.indices.delete_template(:name => "*")
|
23
|
-
# This can fail if there are no indexes, ignore failure.
|
24
|
-
@es.indices.delete(:index => "*") rescue nil
|
25
|
-
@es.index(
|
26
|
-
:index => 'logstash-update',
|
27
|
-
:type => 'logs',
|
28
|
-
:id => "123",
|
29
|
-
:body => { :message => 'Test', :counter => 1 }
|
30
|
-
)
|
31
|
-
@es.indices.refresh
|
70
|
+
it "should allow internal version" do
|
71
|
+
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "internal" })
|
72
|
+
subject.register
|
32
73
|
end
|
33
74
|
|
34
|
-
it "should
|
35
|
-
subject = get_es_output
|
75
|
+
it "should not allow external version" do
|
76
|
+
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "external" })
|
36
77
|
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
37
78
|
end
|
38
79
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
|
44
|
-
expect {@es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)}.to raise_error(Elasticsearch::Transport::Transport::Errors::NotFound)
|
45
|
-
end
|
46
|
-
|
47
|
-
it "should update existing document" do
|
48
|
-
subject = get_es_output({ 'document_id' => "123" })
|
49
|
-
subject.register
|
50
|
-
subject.multi_receive([LogStash::Event.new("message" => "updated message here")])
|
51
|
-
r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
|
52
|
-
insist { r["_source"]["message"] } == 'updated message here'
|
53
|
-
end
|
54
|
-
|
55
|
-
# The es ruby client treats the data field differently. Make sure this doesn't
|
56
|
-
# raise an exception
|
57
|
-
it "should update an existing document that has a 'data' field" do
|
58
|
-
subject = get_es_output({ 'document_id' => "123" })
|
59
|
-
subject.register
|
60
|
-
subject.multi_receive([LogStash::Event.new("data" => "updated message here", "message" => "foo")])
|
61
|
-
r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
|
62
|
-
insist { r["_source"]["data"] } == 'updated message here'
|
63
|
-
insist { r["_source"]["message"] } == 'foo'
|
64
|
-
end
|
65
|
-
|
66
|
-
it "should allow default (internal) version" do
|
67
|
-
subject = get_es_output({ 'document_id' => "123", "version" => "99" })
|
68
|
-
subject.register
|
69
|
-
end
|
70
|
-
|
71
|
-
it "should allow internal version" do
|
72
|
-
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "internal" })
|
73
|
-
subject.register
|
74
|
-
end
|
75
|
-
|
76
|
-
it "should not allow external version" do
|
77
|
-
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "external" })
|
78
|
-
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "should not allow external_gt version" do
|
82
|
-
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "external_gt" })
|
83
|
-
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
84
|
-
end
|
85
|
-
|
86
|
-
it "should not allow external_gte version" do
|
87
|
-
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "external_gte" })
|
88
|
-
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
89
|
-
end
|
80
|
+
it "should not allow external_gt version" do
|
81
|
+
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "external_gt" })
|
82
|
+
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
83
|
+
end
|
90
84
|
|
85
|
+
it "should not allow external_gte version" do
|
86
|
+
subject = get_es_output({ 'document_id' => "123", "version" => "99", "version_type" => "external_gte" })
|
87
|
+
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
91
88
|
end
|
92
89
|
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when update with upsert" do
|
93
|
+
it "should create new documents with provided upsert" do
|
94
|
+
subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
|
95
|
+
subject.register
|
96
|
+
subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
|
97
|
+
r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
|
98
|
+
insist { r["_source"]["message"] } == 'upsert message'
|
99
|
+
end
|
100
|
+
|
101
|
+
it "should create new documents with event/doc as upsert" do
|
102
|
+
subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
|
103
|
+
subject.register
|
104
|
+
subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
|
105
|
+
r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
|
106
|
+
insist { r["_source"]["message"] } == 'sample message here'
|
107
|
+
end
|
108
|
+
|
109
|
+
it "should fail on documents with event/doc as upsert at external version" do
|
110
|
+
subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true, 'version' => 999, "version_type" => "external" })
|
111
|
+
expect { subject.register }.to raise_error(LogStash::ConfigurationError)
|
114
112
|
end
|
115
113
|
end
|
116
114
|
end
|
@@ -44,44 +44,19 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::ManticoreAdapter do
|
|
44
44
|
end
|
45
45
|
end
|
46
46
|
|
47
|
-
describe "bad response codes" do
|
48
|
-
let(:uri) { ::LogStash::Util::SafeURI.new("http://localhost:9200") }
|
49
|
-
|
50
|
-
it "should raise a bad response code error" do
|
51
|
-
resp = double("response")
|
52
|
-
allow(resp).to receive(:call)
|
53
|
-
allow(resp).to receive(:code).and_return(500)
|
54
|
-
allow(resp).to receive(:body).and_return("a body")
|
55
|
-
|
56
|
-
expect(subject.manticore).to receive(:get).
|
57
|
-
with(uri.to_s + "/", anything).
|
58
|
-
and_return(resp)
|
59
|
-
|
60
|
-
uri_with_path = uri.clone
|
61
|
-
uri_with_path.path = "/"
|
62
|
-
|
63
|
-
expect(::LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError).to receive(:new).
|
64
|
-
with(resp.code, uri_with_path, nil, resp.body).and_call_original
|
65
|
-
|
66
|
-
expect do
|
67
|
-
subject.perform_request(uri, :get, "/")
|
68
|
-
end.to raise_error(::LogStash::Outputs::ElasticSearch::HttpClient::Pool::BadResponseCodeError)
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
47
|
describe "format_url" do
|
73
48
|
let(:url) { ::LogStash::Util::SafeURI.new("http://localhost:9200/path/") }
|
74
49
|
let(:path) { "_bulk" }
|
75
50
|
subject { described_class.new(double("logger"), {}) }
|
76
51
|
|
77
52
|
it "should add the path argument to the uri's path" do
|
78
|
-
expect(subject.format_url(url, path).path).to eq("/path/_bulk")
|
53
|
+
expect(java.net.URI.new(subject.format_url(url, path)).path).to eq("/path/_bulk")
|
79
54
|
end
|
80
55
|
|
81
56
|
context "when uri contains query parameters" do
|
82
57
|
let(:query_params) { "query=value&key=value2" }
|
83
58
|
let(:url) { ::LogStash::Util::SafeURI.new("http://localhost:9200/path/?#{query_params}") }
|
84
|
-
let(:formatted) { subject.format_url(url, path)}
|
59
|
+
let(:formatted) { java.net.URI.new(subject.format_url(url, path))}
|
85
60
|
|
86
61
|
it "should retain query_params after format" do
|
87
62
|
expect(formatted.query).to eq(query_params)
|
@@ -98,7 +73,7 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::ManticoreAdapter do
|
|
98
73
|
|
99
74
|
context "when the path contains query parameters" do
|
100
75
|
let(:path) { "/special_bulk?pathParam=1"}
|
101
|
-
let(:formatted) { subject.format_url(url, path) }
|
76
|
+
let(:formatted) { java.net.URI.new(subject.format_url(url, path)) }
|
102
77
|
|
103
78
|
it "should add the path correctly" do
|
104
79
|
expect(formatted.path).to eq("#{url.path}special_bulk")
|
@@ -111,10 +86,10 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::ManticoreAdapter do
|
|
111
86
|
|
112
87
|
context "when uri contains credentials" do
|
113
88
|
let(:url) { ::LogStash::Util::SafeURI.new("http://myuser:mypass@localhost:9200") }
|
114
|
-
let(:formatted) { subject.format_url(url, path) }
|
89
|
+
let(:formatted) { java.net.URI.new(subject.format_url(url, path)) }
|
115
90
|
|
116
91
|
it "should remove credentials after format" do
|
117
|
-
expect(formatted.
|
92
|
+
expect(formatted.user_info).to be_nil
|
118
93
|
end
|
119
94
|
end
|
120
95
|
end
|
@@ -21,9 +21,6 @@ describe LogStash::Outputs::ElasticSearch::HttpClient::Pool do
|
|
21
21
|
|
22
22
|
allow(::Manticore::Client).to receive(:new).and_return(manticore_double)
|
23
23
|
|
24
|
-
allow(subject).to receive(:connected_es_versions).with(any_args).and_return(["0.0.0"])
|
25
|
-
allow(subject).to receive(:get_es_version).with(any_args).and_return("0.0.0")
|
26
|
-
|
27
24
|
subject.start
|
28
25
|
end
|
29
26
|
|
@@ -29,7 +29,7 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
29
29
|
let(:http_hostname_port) { ::LogStash::Util::SafeURI.new("http://#{hostname_port}") }
|
30
30
|
let(:https_hostname_port) { ::LogStash::Util::SafeURI.new("https://#{hostname_port}") }
|
31
31
|
let(:http_hostname_port_path) { ::LogStash::Util::SafeURI.new("http://#{hostname_port}/path") }
|
32
|
-
|
32
|
+
|
33
33
|
shared_examples("proper host handling") do
|
34
34
|
it "should properly transform a host:port string to a URL" do
|
35
35
|
expect(subject.host_to_url(hostname_port_uri).to_s).to eq(http_hostname_port.to_s + "/")
|
@@ -58,7 +58,7 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
58
58
|
context "when SSL is false" do
|
59
59
|
let(:ssl) { false }
|
60
60
|
let(:base_options) { super.merge(:hosts => [https_hostname_port]) }
|
61
|
-
|
61
|
+
|
62
62
|
it "should refuse to handle an https url" do
|
63
63
|
expect {
|
64
64
|
subject.host_to_url(https_hostname_port)
|
@@ -72,32 +72,32 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
72
72
|
subject
|
73
73
|
expect(subject.host_to_url(https_hostname_port).to_s).to eq(https_hostname_port.to_s + "/")
|
74
74
|
end
|
75
|
-
end
|
75
|
+
end
|
76
76
|
end
|
77
77
|
|
78
78
|
describe "path" do
|
79
79
|
let(:url) { http_hostname_port_path }
|
80
80
|
let(:base_options) { super.merge(:hosts => [url]) }
|
81
|
-
|
81
|
+
|
82
82
|
it "should allow paths in a url" do
|
83
83
|
expect(subject.host_to_url(url)).to eq(url)
|
84
84
|
end
|
85
85
|
|
86
86
|
context "with the path option set" do
|
87
87
|
let(:base_options) { super.merge(:client_settings => {:path => "/otherpath"}) }
|
88
|
-
|
88
|
+
|
89
89
|
it "should not allow paths in two places" do
|
90
90
|
expect {
|
91
91
|
subject.host_to_url(url)
|
92
92
|
}.to raise_error(LogStash::ConfigurationError)
|
93
93
|
end
|
94
94
|
end
|
95
|
-
|
95
|
+
|
96
96
|
context "with a path missing a leading /" do
|
97
97
|
let(:url) { http_hostname_port }
|
98
98
|
let(:base_options) { super.merge(:client_settings => {:path => "otherpath"}) }
|
99
|
-
|
100
|
-
|
99
|
+
|
100
|
+
|
101
101
|
it "should automatically insert a / in front of path overlays" do
|
102
102
|
expected = url.clone
|
103
103
|
expected.path = url.path + "/otherpath"
|
@@ -132,7 +132,7 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
132
132
|
}
|
133
133
|
|
134
134
|
it "returns the hash response" do
|
135
|
-
expect(subject.pool).to receive(:get).with(path, nil).and_return(get_response)
|
135
|
+
expect(subject.pool).to receive(:get).with(path, nil).and_return([nil, get_response])
|
136
136
|
expect(subject.get(path)["body"]).to eq(body)
|
137
137
|
end
|
138
138
|
end
|
@@ -182,6 +182,8 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
182
182
|
|
183
183
|
describe "#bulk" do
|
184
184
|
subject { described_class.new(base_options) }
|
185
|
+
|
186
|
+
require "json"
|
185
187
|
let(:message) { "hey" }
|
186
188
|
let(:actions) { [
|
187
189
|
["index", {:_id=>nil, :_index=>"logstash"}, {"message"=> message}],
|
@@ -191,7 +193,7 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
191
193
|
let(:target_bulk_bytes) { LogStash::Outputs::ElasticSearch::TARGET_BULK_BYTES }
|
192
194
|
let(:message) { "a" * (target_bulk_bytes + 1) }
|
193
195
|
|
194
|
-
it "
|
196
|
+
it "should be handled properly" do
|
195
197
|
allow(subject).to receive(:join_bulk_responses)
|
196
198
|
expect(subject).to receive(:bulk_send).once do |data|
|
197
199
|
expect(data.size).to be > target_bulk_bytes
|
@@ -207,7 +209,6 @@ describe LogStash::Outputs::ElasticSearch::HttpClient do
|
|
207
209
|
["index", {:_id=>nil, :_index=>"logstash"}, {"message"=> message1}],
|
208
210
|
["index", {:_id=>nil, :_index=>"logstash"}, {"message"=> message2}],
|
209
211
|
]}
|
210
|
-
|
211
212
|
it "executes one bulk_send operation" do
|
212
213
|
allow(subject).to receive(:join_bulk_responses)
|
213
214
|
expect(subject).to receive(:bulk_send).once
|
@@ -6,21 +6,32 @@ require "json"
|
|
6
6
|
describe LogStash::Outputs::ElasticSearch::TemplateManager do
|
7
7
|
|
8
8
|
describe ".get_es_major_version" do
|
9
|
+
let(:es_1x_version) { '{ "number" : "1.7.0", "build_hash" : "929b9739cae115e73c346cb5f9a6f24ba735a743", "build_timestamp" : "2015-07-16T14:31:07Z", "build_snapshot" : false, "lucene_version" : "4.10.4" }' }
|
10
|
+
let(:es_2x_version) { '{ "number" : "2.3.4", "build_hash" : "e455fd0c13dceca8dbbdbb1665d068ae55dabe3f", "build_timestamp" : "2016-06-30T11:24:31Z", "build_snapshot" : false, "lucene_version" : "5.5.0" }' }
|
11
|
+
let(:es_5x_version) { '{ "number" : "5.0.0-alpha4", "build_hash" : "b0da471", "build_date" : "2016-06-22T12:33:48.164Z", "build_snapshot" : false, "lucene_version" : "6.1.0" }' }
|
9
12
|
let(:client) { double("client") }
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
context "elasticsearch 1.x" do
|
14
|
+
before(:each) do
|
15
|
+
allow(client).to receive(:get_version).and_return(JSON.parse(es_1x_version))
|
16
|
+
end
|
17
|
+
it "detects major version is 1" do
|
18
|
+
expect(described_class.get_es_major_version(client)).to eq("1")
|
19
|
+
end
|
13
20
|
end
|
14
|
-
|
15
|
-
|
16
|
-
|
21
|
+
context "elasticsearch 2.x" do
|
22
|
+
before(:each) do
|
23
|
+
allow(client).to receive(:get_version).and_return(JSON.parse(es_2x_version))
|
24
|
+
end
|
25
|
+
it "detects major version is 2" do
|
26
|
+
expect(described_class.get_es_major_version(client)).to eq("2")
|
27
|
+
end
|
17
28
|
end
|
18
|
-
context "
|
29
|
+
context "elasticsearch 5.x" do
|
19
30
|
before(:each) do
|
20
|
-
allow(client).to receive(:
|
31
|
+
allow(client).to receive(:get_version).and_return(JSON.parse(es_5x_version))
|
21
32
|
end
|
22
|
-
it "
|
23
|
-
expect(described_class.get_es_major_version(client)).to eq(
|
33
|
+
it "detects major version is 5" do
|
34
|
+
expect(described_class.get_es_major_version(client)).to eq("5")
|
24
35
|
end
|
25
36
|
end
|
26
37
|
end
|
@@ -28,18 +39,19 @@ describe LogStash::Outputs::ElasticSearch::TemplateManager do
|
|
28
39
|
describe ".default_template_path" do
|
29
40
|
context "elasticsearch 1.x" do
|
30
41
|
it "chooses the 2x template" do
|
31
|
-
expect(described_class.default_template_path(1)).to match(/elasticsearch-template-es2x.json/)
|
42
|
+
expect(described_class.default_template_path("1")).to match(/elasticsearch-template-es2x.json/)
|
32
43
|
end
|
33
44
|
end
|
34
45
|
context "elasticsearch 2.x" do
|
35
46
|
it "chooses the 2x template" do
|
36
|
-
expect(described_class.default_template_path(2)).to match(/elasticsearch-template-es2x.json/)
|
47
|
+
expect(described_class.default_template_path("2")).to match(/elasticsearch-template-es2x.json/)
|
37
48
|
end
|
38
49
|
end
|
39
50
|
context "elasticsearch 5.x" do
|
40
51
|
it "chooses the 5x template" do
|
41
|
-
expect(described_class.default_template_path(5)).to match(/elasticsearch-template-es5x.json/)
|
52
|
+
expect(described_class.default_template_path("5")).to match(/elasticsearch-template-es5x.json/)
|
42
53
|
end
|
43
54
|
end
|
44
55
|
end
|
56
|
+
|
45
57
|
end
|