logstash-output-elasticsearch 7.4.0-java → 7.4.1-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.
@@ -1,18 +1,19 @@
1
1
  require_relative "../../../spec/es_spec_helper"
2
2
 
3
- describe "Ingest pipeline execution behavior", :integration => true, :version_greater_than_equal_to_5x => true do
4
- subject! do
5
- require "logstash/outputs/elasticsearch"
6
- settings = {
7
- "hosts" => "#{get_host_port()}",
8
- "pipeline" => "apache-logs"
9
- }
10
- next LogStash::Outputs::ElasticSearch.new(settings)
11
- end
3
+ if ESHelper.es_version_satisfies?(">= 5")
4
+ describe "Ingest pipeline execution behavior", :integration => true do
5
+ subject! do
6
+ require "logstash/outputs/elasticsearch"
7
+ settings = {
8
+ "hosts" => "#{get_host_port()}",
9
+ "pipeline" => "apache-logs"
10
+ }
11
+ next LogStash::Outputs::ElasticSearch.new(settings)
12
+ end
12
13
 
13
- let(:ftw_client) { FTW::Agent.new }
14
- let(:ingest_url) { "http://#{get_host_port()}/_ingest/pipeline/apache-logs" }
15
- let(:apache_logs_pipeline) { '
14
+ let(:ftw_client) { FTW::Agent.new }
15
+ let(:ingest_url) { "http://#{get_host_port()}/_ingest/pipeline/apache-logs" }
16
+ let(:apache_logs_pipeline) { '
16
17
  {
17
18
  "description" : "Pipeline to parse Apache logs",
18
19
  "processors" : [
@@ -24,52 +25,53 @@ describe "Ingest pipeline execution behavior", :integration => true, :version_gr
24
25
  }
25
26
  ]
26
27
  }'
27
- }
28
+ }
28
29
 
29
- before :each do
30
- # Delete all templates first.
31
- require "elasticsearch"
30
+ before :each do
31
+ # Delete all templates first.
32
+ require "elasticsearch"
32
33
 
33
- # Clean ES of data before we start.
34
- @es = get_client
35
- @es.indices.delete_template(:name => "*")
34
+ # Clean ES of data before we start.
35
+ @es = get_client
36
+ @es.indices.delete_template(:name => "*")
36
37
 
37
- # This can fail if there are no indexes, ignore failure.
38
- @es.indices.delete(:index => "*") rescue nil
38
+ # This can fail if there are no indexes, ignore failure.
39
+ @es.indices.delete(:index => "*") rescue nil
39
40
 
40
- # delete existing ingest pipeline
41
- req = ftw_client.delete(ingest_url)
42
- ftw_client.execute(req)
41
+ # delete existing ingest pipeline
42
+ req = ftw_client.delete(ingest_url)
43
+ ftw_client.execute(req)
43
44
 
44
- # register pipeline
45
- req = ftw_client.put(ingest_url, :body => apache_logs_pipeline)
46
- req.headers["Content-Type"] = "application/json"
47
- ftw_client.execute(req)
45
+ # register pipeline
46
+ req = ftw_client.put(ingest_url, :body => apache_logs_pipeline)
47
+ req.headers["Content-Type"] = "application/json"
48
+ ftw_client.execute(req)
48
49
 
49
- #TODO: Use esclient
50
- #@es.ingest.put_pipeline :id => 'apache_pipeline', :body => pipeline_defintion
50
+ #TODO: Use esclient
51
+ #@es.ingest.put_pipeline :id => 'apache_pipeline', :body => pipeline_defintion
51
52
 
52
- subject.register
53
- subject.multi_receive([LogStash::Event.new("message" => '183.60.215.50 - - [01/Jun/2015:18:00:00 +0000] "GET /scripts/netcat-webserver HTTP/1.1" 200 182 "-" "Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)"')])
54
- @es.indices.refresh
53
+ subject.register
54
+ subject.multi_receive([LogStash::Event.new("message" => '183.60.215.50 - - [01/Jun/2015:18:00:00 +0000] "GET /scripts/netcat-webserver HTTP/1.1" 200 182 "-" "Mozilla/5.0 (compatible; EasouSpider; +http://www.easou.com/search/spider.html)"')])
55
+ @es.indices.refresh
55
56
 
56
- #Wait or fail until everything's indexed.
57
- Stud::try(20.times) do
58
- r = @es.search
59
- insist { r["hits"]["total"] } == 1
57
+ #Wait or fail until everything's indexed.
58
+ Stud::try(20.times) do
59
+ r = @es.search
60
+ insist { r["hits"]["total"] } == 1
61
+ end
60
62
  end
61
- end
62
63
 
63
- it "indexes using the proper pipeline" do
64
- results = @es.search(:index => 'logstash-*', :q => "message:\"netcat\"")
65
- insist { results["hits"]["total"] } == 1
66
- insist { results["hits"]["hits"][0]["_source"]["response"] } == "200"
67
- insist { results["hits"]["hits"][0]["_source"]["bytes"] } == "182"
68
- insist { results["hits"]["hits"][0]["_source"]["verb"] } == "GET"
69
- insist { results["hits"]["hits"][0]["_source"]["request"] } == "/scripts/netcat-webserver"
70
- insist { results["hits"]["hits"][0]["_source"]["auth"] } == "-"
71
- insist { results["hits"]["hits"][0]["_source"]["ident"] } == "-"
72
- insist { results["hits"]["hits"][0]["_source"]["clientip"] } == "183.60.215.50"
73
- insist { results["hits"]["hits"][0]["_source"]["junkfieldaaaa"] } == nil
64
+ it "indexes using the proper pipeline" do
65
+ results = @es.search(:index => 'logstash-*', :q => "message:\"netcat\"")
66
+ insist { results["hits"]["total"] } == 1
67
+ insist { results["hits"]["hits"][0]["_source"]["response"] } == "200"
68
+ insist { results["hits"]["hits"][0]["_source"]["bytes"] } == "182"
69
+ insist { results["hits"]["hits"][0]["_source"]["verb"] } == "GET"
70
+ insist { results["hits"]["hits"][0]["_source"]["request"] } == "/scripts/netcat-webserver"
71
+ insist { results["hits"]["hits"][0]["_source"]["auth"] } == "-"
72
+ insist { results["hits"]["hits"][0]["_source"]["ident"] } == "-"
73
+ insist { results["hits"]["hits"][0]["_source"]["clientip"] } == "183.60.215.50"
74
+ insist { results["hits"]["hits"][0]["_source"]["junkfieldaaaa"] } == nil
75
+ end
74
76
  end
75
77
  end
@@ -1,148 +1,150 @@
1
1
  require_relative "../../../spec/es_spec_helper"
2
2
 
3
- describe "Update actions using painless scripts", :integration => true, :update_tests => 'painless', :version_greater_than_equal_to_5x => true do
4
- require "logstash/outputs/elasticsearch"
3
+ if ESHelper.es_version_satisfies?(">= 5")
4
+ describe "Update actions using painless scripts", :integration => true, :update_tests => 'painless' do
5
+ require "logstash/outputs/elasticsearch"
5
6
 
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
- "script_lang" => "painless"
14
- }
15
- LogStash::Outputs::ElasticSearch.new(settings.merge!(options))
16
- end
17
-
18
- before :each do
19
- @es = get_client
20
- # Delete all templates first.
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
32
- end
33
-
34
- context "scripted updates" do
35
- it "should increment a counter with event/doc 'count' variable" do
36
- subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update', 'script_type' => 'file' })
37
- subject.register
38
- subject.multi_receive([LogStash::Event.new("count" => 2)])
39
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
40
- insist { r["_source"]["counter"] } == 3
7
+ def get_es_output( options={} )
8
+ settings = {
9
+ "manage_template" => true,
10
+ "index" => "logstash-update",
11
+ "template_overwrite" => true,
12
+ "hosts" => get_host_port(),
13
+ "action" => "update",
14
+ "script_lang" => "painless"
15
+ }
16
+ LogStash::Outputs::ElasticSearch.new(settings.merge!(options))
41
17
  end
42
18
 
43
- it "should increment a counter with event/doc '[data][count]' nested variable" do
44
- subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update_nested', 'script_type' => 'file' })
45
- subject.register
46
- subject.multi_receive([LogStash::Event.new("data" => { "count" => 3 })])
47
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
48
- insist { r["_source"]["counter"] } == 4
19
+ before :each do
20
+ @es = get_client
21
+ # Delete all templates first.
22
+ # Clean ES of data before we start.
23
+ @es.indices.delete_template(:name => "*")
24
+ # This can fail if there are no indexes, ignore failure.
25
+ @es.indices.delete(:index => "*") rescue nil
26
+ @es.index(
27
+ :index => 'logstash-update',
28
+ :type => 'logs',
29
+ :id => "123",
30
+ :body => { :message => 'Test', :counter => 1 }
31
+ )
32
+ @es.indices.refresh
49
33
  end
50
34
 
51
- it "should increment a counter with event/doc 'count' variable with inline script" do
52
- subject = get_es_output({
53
- 'document_id' => "123",
54
- 'script' => 'ctx._source.counter += params.event.counter',
55
- 'script_lang' => 'painless',
56
- 'script_type' => 'inline'
57
- })
58
- subject.register
59
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
60
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
61
- insist { r["_source"]["counter"] } == 4
62
- end
35
+ context "scripted updates" do
36
+ it "should increment a counter with event/doc 'count' variable" do
37
+ subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update', 'script_type' => 'file' })
38
+ subject.register
39
+ subject.multi_receive([LogStash::Event.new("count" => 2)])
40
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
41
+ insist { r["_source"]["counter"] } == 3
42
+ end
63
43
 
64
- it "should increment a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
65
- subject = get_es_output({
66
- 'document_id' => "123",
67
- 'doc_as_upsert' => true,
68
- 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
69
- 'script_lang' => 'painless',
70
- 'script_type' => 'inline'
71
- })
72
- subject.register
73
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
74
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
75
- insist { r["_source"]["counter"] } == 4
76
- end
44
+ it "should increment a counter with event/doc '[data][count]' nested variable" do
45
+ subject = get_es_output({ 'document_id' => "123", 'script' => 'scripted_update_nested', 'script_type' => 'file' })
46
+ subject.register
47
+ subject.multi_receive([LogStash::Event.new("data" => { "count" => 3 })])
48
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
49
+ insist { r["_source"]["counter"] } == 4
50
+ end
77
51
 
78
- it "should, with new doc, set a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
79
- subject = get_es_output({
80
- 'document_id' => "456",
81
- 'doc_as_upsert' => true,
82
- 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
83
- 'script_lang' => 'painless',
84
- 'script_type' => 'inline'
85
- })
86
- subject.register
87
- subject.multi_receive([LogStash::Event.new("counter" => 3 )])
88
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
89
- insist { r["_source"]["counter"] } == 3
90
- end
52
+ it "should increment a counter with event/doc 'count' variable with inline script" do
53
+ subject = get_es_output({
54
+ 'document_id' => "123",
55
+ 'script' => 'ctx._source.counter += params.event.counter',
56
+ 'script_lang' => 'painless',
57
+ 'script_type' => 'inline'
58
+ })
59
+ subject.register
60
+ subject.multi_receive([LogStash::Event.new("counter" => 3 )])
61
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
62
+ insist { r["_source"]["counter"] } == 4
63
+ end
91
64
 
92
- it "should increment a counter with event/doc 'count' variable with indexed script" do
93
- @es.put_script lang: 'painless', id: 'indexed_update', body: { script: 'ctx._source.counter += params.event.count' }
94
- subject = get_es_output({
95
- 'document_id' => "123",
96
- 'script' => 'indexed_update',
97
- 'script_lang' => 'painless',
98
- 'script_type' => 'indexed'
99
- })
100
- subject.register
101
- subject.multi_receive([LogStash::Event.new("count" => 4 )])
102
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
103
- insist { r["_source"]["counter"] } == 5
104
- end
105
- end
106
-
107
- context "when update with upsert" do
108
- it "should create new documents with provided upsert" do
109
- subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
110
- subject.register
111
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
112
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
113
- insist { r["_source"]["message"] } == 'upsert message'
114
- end
65
+ it "should increment a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
66
+ subject = get_es_output({
67
+ 'document_id' => "123",
68
+ 'doc_as_upsert' => true,
69
+ 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
70
+ 'script_lang' => 'painless',
71
+ 'script_type' => 'inline'
72
+ })
73
+ subject.register
74
+ subject.multi_receive([LogStash::Event.new("counter" => 3 )])
75
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
76
+ insist { r["_source"]["counter"] } == 4
77
+ end
115
78
 
116
- it "should create new documents with event/doc as upsert" do
117
- subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
118
- subject.register
119
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
120
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
121
- insist { r["_source"]["message"] } == 'sample message here'
122
- end
79
+ it "should, with new doc, set a counter with event/doc 'count' variable with event/doc as upsert and inline script" do
80
+ subject = get_es_output({
81
+ 'document_id' => "456",
82
+ 'doc_as_upsert' => true,
83
+ 'script' => 'if( ctx._source.containsKey("counter") ){ ctx._source.counter += params.event.counter; } else { ctx._source.counter = params.event.counter; }',
84
+ 'script_lang' => 'painless',
85
+ 'script_type' => 'inline'
86
+ })
87
+ subject.register
88
+ subject.multi_receive([LogStash::Event.new("counter" => 3 )])
89
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
90
+ insist { r["_source"]["counter"] } == 3
91
+ end
123
92
 
124
- it "should fail on documents with event/doc as upsert at external version" do
125
- subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true, 'version' => 999, "version_type" => "external" })
126
- expect { subject.register }.to raise_error(LogStash::ConfigurationError)
127
- end
128
- end
93
+ it "should increment a counter with event/doc 'count' variable with indexed script" do
94
+ @es.put_script lang: 'painless', id: 'indexed_update', body: { script: 'ctx._source.counter += params.event.count' }
95
+ subject = get_es_output({
96
+ 'document_id' => "123",
97
+ 'script' => 'indexed_update',
98
+ 'script_lang' => 'painless',
99
+ 'script_type' => 'indexed'
100
+ })
101
+ subject.register
102
+ subject.multi_receive([LogStash::Event.new("count" => 4 )])
103
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "123", :refresh => true)
104
+ insist { r["_source"]["counter"] } == 5
105
+ end
106
+ end
129
107
 
130
- context "updates with scripted upsert" do
131
- it "should create new documents with upsert content" do
132
- subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_update', 'upsert' => '{"message": "upsert message"}', 'script_type' => 'file' })
133
- subject.register
134
- subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
135
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
136
- insist { r["_source"]["message"] } == 'upsert message'
108
+ context "when update with upsert" do
109
+ it "should create new documents with provided upsert" do
110
+ subject = get_es_output({ 'document_id' => "456", 'upsert' => '{"message": "upsert message"}' })
111
+ subject.register
112
+ subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
113
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
114
+ insist { r["_source"]["message"] } == 'upsert message'
115
+ end
116
+
117
+ it "should create new documents with event/doc as upsert" do
118
+ subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true })
119
+ subject.register
120
+ subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
121
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
122
+ insist { r["_source"]["message"] } == 'sample message here'
123
+ end
124
+
125
+ it "should fail on documents with event/doc as upsert at external version" do
126
+ subject = get_es_output({ 'document_id' => "456", 'doc_as_upsert' => true, 'version' => 999, "version_type" => "external" })
127
+ expect { subject.register }.to raise_error(LogStash::ConfigurationError)
128
+ end
137
129
  end
138
130
 
139
- it "should create new documents with event/doc as script params" do
140
- subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_upsert', 'scripted_upsert' => true, 'script_type' => 'file' })
141
- subject.register
142
- subject.multi_receive([LogStash::Event.new("counter" => 1)])
143
- @es.indices.refresh
144
- r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
145
- insist { r["_source"]["counter"] } == 1
131
+ context "updates with scripted upsert" do
132
+ it "should create new documents with upsert content" do
133
+ subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_update', 'upsert' => '{"message": "upsert message"}', 'script_type' => 'file' })
134
+ subject.register
135
+ subject.multi_receive([LogStash::Event.new("message" => "sample message here")])
136
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
137
+ insist { r["_source"]["message"] } == 'upsert message'
138
+ end
139
+
140
+ it "should create new documents with event/doc as script params" do
141
+ subject = get_es_output({ 'document_id' => "456", 'script' => 'scripted_upsert', 'scripted_upsert' => true, 'script_type' => 'file' })
142
+ subject.register
143
+ subject.multi_receive([LogStash::Event.new("counter" => 1)])
144
+ @es.indices.refresh
145
+ r = @es.get(:index => 'logstash-update', :type => 'logs', :id => "456", :refresh => true)
146
+ insist { r["_source"]["counter"] } == 1
147
+ end
146
148
  end
147
149
  end
148
150
  end
@@ -1,71 +1,73 @@
1
1
  require_relative "../../../spec/es_spec_helper"
2
2
  require "logstash/outputs/elasticsearch"
3
3
 
4
- shared_examples "a parent indexer" do
5
- let(:index) { 10.times.collect { rand(10).to_s }.join("") }
6
- let(:type) { 10.times.collect { rand(10).to_s }.join("") }
7
- let(:event_count) { 10000 + rand(500) }
8
- let(:parent) { "not_implemented" }
9
- let(:config) { "not_implemented" }
10
- let(:default_headers) {
11
- {"Content-Type" => "application/json"}
12
- }
13
- subject { LogStash::Outputs::ElasticSearch.new(config) }
4
+ if ESHelper.es_version_satisfies?("<= 5")
5
+ shared_examples "a parent indexer" do
6
+ let(:index) { 10.times.collect { rand(10).to_s }.join("") }
7
+ let(:type) { 10.times.collect { rand(10).to_s }.join("") }
8
+ let(:event_count) { 10000 + rand(500) }
9
+ let(:parent) { "not_implemented" }
10
+ let(:config) { "not_implemented" }
11
+ let(:default_headers) {
12
+ {"Content-Type" => "application/json"}
13
+ }
14
+ subject { LogStash::Outputs::ElasticSearch.new(config) }
14
15
 
15
- before do
16
- # Add mapping and a parent document
17
- index_url = "http://#{get_host_port()}/#{index}"
18
- ftw = FTW::Agent.new
19
- mapping = { "mappings" => { "#{type}" => { "_parent" => { "type" => "#{type}_parent" } } } }
20
- ftw.put!("#{index_url}", {:body => mapping.to_json, :headers => default_headers})
21
- pdoc = { "foo" => "bar" }
22
- ftw.put!("#{index_url}/#{type}_parent/test", {:body => pdoc.to_json, :headers => default_headers})
16
+ before do
17
+ # Add mapping and a parent document
18
+ index_url = "http://#{get_host_port()}/#{index}"
19
+ ftw = FTW::Agent.new
20
+ mapping = { "mappings" => { "#{type}" => { "_parent" => { "type" => "#{type}_parent" } } } }
21
+ ftw.put!("#{index_url}", {:body => mapping.to_json, :headers => default_headers})
22
+ pdoc = { "foo" => "bar" }
23
+ ftw.put!("#{index_url}/#{type}_parent/test", {:body => pdoc.to_json, :headers => default_headers})
23
24
 
24
- subject.register
25
- subject.multi_receive(event_count.times.map { LogStash::Event.new("link_to" => "test", "message" => "Hello World!", "type" => type) })
26
- end
25
+ subject.register
26
+ subject.multi_receive(event_count.times.map { LogStash::Event.new("link_to" => "test", "message" => "Hello World!", "type" => type) })
27
+ end
27
28
 
28
29
 
29
- it "ships events" do
30
- index_url = "http://#{get_host_port()}/#{index}"
30
+ it "ships events" do
31
+ index_url = "http://#{get_host_port()}/#{index}"
31
32
 
32
- ftw = FTW::Agent.new
33
- ftw.post!("#{index_url}/_refresh")
33
+ ftw = FTW::Agent.new
34
+ ftw.post!("#{index_url}/_refresh")
34
35
 
35
- # Wait until all events are available.
36
- Stud::try(10.times) do
37
- query = { "query" => { "has_parent" => { "type" => "#{type}_parent", "query" => { "match" => { "foo" => "bar" } } } } }
38
- data = ""
39
- response = ftw.post!("#{index_url}/_count", {:body => query.to_json, :headers => default_headers})
40
- response.read_body { |chunk| data << chunk }
41
- result = LogStash::Json.load(data)
42
- cur_count = result["count"]
43
- insist { cur_count } == event_count
36
+ # Wait until all events are available.
37
+ Stud::try(10.times) do
38
+ query = { "query" => { "has_parent" => { "type" => "#{type}_parent", "query" => { "match" => { "foo" => "bar" } } } } }
39
+ data = ""
40
+ response = ftw.post!("#{index_url}/_count", {:body => query.to_json, :headers => default_headers})
41
+ response.read_body { |chunk| data << chunk }
42
+ result = LogStash::Json.load(data)
43
+ cur_count = result["count"]
44
+ insist { cur_count } == event_count
45
+ end
44
46
  end
45
- end
46
- end
47
+ end
47
48
 
48
- describe "(http protocol) index events with static parent", :integration => true do
49
- it_behaves_like 'a parent indexer' do
50
- let(:parent) { "test" }
51
- let(:config) {
52
- {
53
- "hosts" => get_host_port,
54
- "index" => index,
55
- "parent" => parent
49
+ describe "(http protocol) index events with static parent", :integration => true do
50
+ it_behaves_like 'a parent indexer' do
51
+ let(:parent) { "test" }
52
+ let(:config) {
53
+ {
54
+ "hosts" => get_host_port,
55
+ "index" => index,
56
+ "parent" => parent
57
+ }
56
58
  }
57
- }
59
+ end
58
60
  end
59
- end
60
61
 
61
- describe "(http_protocol) index events with fieldref in parent value", :integration => true do
62
- it_behaves_like 'a parent indexer' do
63
- let(:config) {
64
- {
65
- "hosts" => get_host_port,
66
- "index" => index,
67
- "parent" => "%{link_to}"
62
+ describe "(http_protocol) index events with fieldref in parent value", :integration => true do
63
+ it_behaves_like 'a parent indexer' do
64
+ let(:config) {
65
+ {
66
+ "hosts" => get_host_port,
67
+ "index" => index,
68
+ "parent" => "%{link_to}"
69
+ }
68
70
  }
69
- }
71
+ end
70
72
  end
71
73
  end