logstash-core 5.5.3-java → 5.6.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.
Files changed (60) hide show
  1. checksums.yaml +4 -4
  2. data/lib/logstash-core/logstash-core.jar +0 -0
  3. data/lib/logstash-core/version.rb +1 -1
  4. data/lib/logstash/api/commands/node.rb +2 -2
  5. data/lib/logstash/api/commands/stats.rb +2 -2
  6. data/lib/logstash/config/config_ast.rb +24 -1
  7. data/lib/logstash/config/modules_common.rb +47 -15
  8. data/lib/logstash/config/source/modules.rb +55 -0
  9. data/lib/logstash/config/string_escape.rb +27 -0
  10. data/lib/logstash/elasticsearch_client.rb +24 -2
  11. data/lib/logstash/environment.rb +2 -0
  12. data/lib/logstash/filter_delegator.rb +9 -6
  13. data/lib/logstash/instrument/collector.rb +7 -5
  14. data/lib/logstash/instrument/metric_store.rb +11 -11
  15. data/lib/logstash/instrument/namespaced_metric.rb +4 -0
  16. data/lib/logstash/instrument/namespaced_null_metric.rb +4 -0
  17. data/lib/logstash/instrument/null_metric.rb +10 -0
  18. data/lib/logstash/instrument/periodic_poller/dlq.rb +19 -0
  19. data/lib/logstash/instrument/periodic_pollers.rb +3 -1
  20. data/lib/logstash/instrument/wrapped_write_client.rb +33 -24
  21. data/lib/logstash/logging/logger.rb +26 -19
  22. data/lib/logstash/modules/{importer.rb → elasticsearch_importer.rb} +3 -3
  23. data/lib/logstash/modules/kibana_base.rb +24 -0
  24. data/lib/logstash/modules/kibana_client.rb +124 -0
  25. data/lib/logstash/modules/kibana_config.rb +29 -28
  26. data/lib/logstash/modules/kibana_dashboards.rb +36 -0
  27. data/lib/logstash/modules/kibana_importer.rb +17 -0
  28. data/lib/logstash/modules/kibana_settings.rb +40 -0
  29. data/lib/logstash/modules/logstash_config.rb +89 -17
  30. data/lib/logstash/modules/resource_base.rb +6 -5
  31. data/lib/logstash/modules/scaffold.rb +11 -3
  32. data/lib/logstash/modules/settings_merger.rb +23 -0
  33. data/lib/logstash/modules/util.rb +17 -0
  34. data/lib/logstash/output_delegator.rb +7 -5
  35. data/lib/logstash/pipeline.rb +34 -2
  36. data/lib/logstash/runner.rb +8 -13
  37. data/lib/logstash/settings.rb +20 -1
  38. data/lib/logstash/util/wrapped_acked_queue.rb +5 -24
  39. data/lib/logstash/util/wrapped_synchronous_queue.rb +14 -24
  40. data/lib/logstash/version.rb +1 -1
  41. data/locales/en.yml +11 -4
  42. data/spec/logstash/agent_spec.rb +19 -6
  43. data/spec/logstash/api/modules/node_spec.rb +2 -1
  44. data/spec/logstash/config/config_ast_spec.rb +47 -8
  45. data/spec/logstash/config/string_escape_spec.rb +24 -0
  46. data/spec/logstash/event_spec.rb +9 -0
  47. data/spec/logstash/filter_delegator_spec.rb +21 -7
  48. data/spec/logstash/instrument/periodic_poller/dlq_spec.rb +17 -0
  49. data/spec/logstash/instrument/periodic_poller/jvm_spec.rb +1 -1
  50. data/spec/logstash/legacy_ruby_event_spec.rb +4 -4
  51. data/spec/logstash/modules/logstash_config_spec.rb +56 -0
  52. data/spec/logstash/modules/scaffold_spec.rb +234 -0
  53. data/spec/logstash/output_delegator_spec.rb +15 -5
  54. data/spec/logstash/pipeline_spec.rb +76 -26
  55. data/spec/logstash/runner_spec.rb +46 -25
  56. data/spec/logstash/settings/splittable_string_array_spec.rb +51 -0
  57. data/spec/logstash/util/wrapped_synchronous_queue_spec.rb +0 -22
  58. metadata +22 -4
  59. data/lib/logstash/modules/kibana_base_resource.rb +0 -10
  60. data/lib/logstash/program.rb +0 -14
@@ -4,10 +4,19 @@ require "logstash/execution_context"
4
4
  require "spec_helper"
5
5
 
6
6
  describe LogStash::OutputDelegator do
7
+
8
+ class MockGauge
9
+ def increment(_)
10
+ end
11
+ end
12
+
7
13
  let(:logger) { double("logger") }
8
14
  let(:events) { 7.times.map { LogStash::Event.new }}
9
15
  let(:plugin_args) { {"id" => "foo", "arg1" => "val1"} }
10
16
  let(:collector) { [] }
17
+ let(:counter_in) { MockGauge.new }
18
+ let(:counter_out) { MockGauge.new }
19
+ let(:counter_time) { MockGauge.new }
11
20
  let(:metric) { LogStash::Instrument::NamespacedNullMetric.new(collector, :null) }
12
21
  let(:default_execution_context) { LogStash::ExecutionContext.new(:main, "foo", "output",
13
22
  LogStash::Util::DummyDeadLetterQueueWriter.new) }
@@ -22,6 +31,9 @@ describe LogStash::OutputDelegator do
22
31
  before(:each) do
23
32
  # use the same metric instance
24
33
  allow(metric).to receive(:namespace).with(any_args).and_return(metric)
34
+ allow(metric).to receive(:counter).with(:in).and_return(counter_in)
35
+ allow(metric).to receive(:counter).with(:out).and_return(counter_out)
36
+ allow(metric).to receive(:counter).with(:duration_in_millis).and_return(counter_time)
25
37
 
26
38
  allow(out_klass).to receive(:new).with(any_args).and_return(out_inst)
27
39
  allow(out_klass).to receive(:name).and_return("example")
@@ -57,15 +69,13 @@ describe LogStash::OutputDelegator do
57
69
  end
58
70
 
59
71
  it "should increment the number of events received" do
60
- expect(subject.metric_events).to receive(:increment).with(:in, events.length)
61
- expect(subject.metric_events).to receive(:increment).with(:out, events.length)
72
+ expect(counter_in).to receive(:increment).with(events.length)
73
+ expect(counter_out).to receive(:increment).with(events.length)
62
74
  subject.multi_receive(events)
63
75
  end
64
76
 
65
77
  it "should record the `duration_in_millis`" do
66
- clock = spy("clock")
67
- expect(subject.metric_events).to receive(:time).with(:duration_in_millis).and_return(clock)
68
- expect(clock).to receive(:stop)
78
+ expect(counter_time).to receive(:increment).with(Integer)
69
79
  subject.multi_receive(events)
70
80
  end
71
81
  end
@@ -4,6 +4,8 @@ require "logstash/inputs/generator"
4
4
  require "logstash/filters/multiline"
5
5
  require_relative "../support/mocks_classes"
6
6
  require_relative "../logstash/pipeline_reporter_spec" # for DummyOutput class
7
+ require "stud/try"
8
+ require 'timeout'
7
9
 
8
10
  class DummyInput < LogStash::Inputs::Base
9
11
  config_name "dummyinput"
@@ -103,20 +105,24 @@ describe LogStash::Pipeline do
103
105
  let(:worker_thread_count) { 5 }
104
106
  let(:safe_thread_count) { 1 }
105
107
  let(:override_thread_count) { 42 }
106
- let(:pipeline_settings_obj) { LogStash::SETTINGS }
108
+ let(:dead_letter_queue_enabled) { false }
109
+ let(:dead_letter_queue_path) { }
110
+ let(:pipeline_settings_obj) { LogStash::SETTINGS.clone }
107
111
  let(:pipeline_settings) { {} }
112
+ let(:max_retry) {10} #times
113
+ let(:timeout) {120} #seconds
108
114
 
109
115
  before :each do
110
116
  pipeline_workers_setting = LogStash::SETTINGS.get_setting("pipeline.workers")
111
117
  allow(pipeline_workers_setting).to receive(:default).and_return(worker_thread_count)
112
- pipeline_settings.each {|k, v| pipeline_settings_obj.set(k, v) }
113
- end
118
+ dlq_enabled_setting = LogStash::SETTINGS.get_setting("dead_letter_queue.enable")
119
+ allow(dlq_enabled_setting).to receive(:value).and_return(dead_letter_queue_enabled)
120
+ dlq_path_setting = LogStash::SETTINGS.get_setting("path.dead_letter_queue")
121
+ allow(dlq_path_setting).to receive(:value).and_return(dead_letter_queue_path)
114
122
 
115
- after :each do
116
- pipeline_settings_obj.reset
123
+ pipeline_settings.each {|k, v| pipeline_settings_obj.set(k, v) }
117
124
  end
118
125
 
119
-
120
126
  describe "event cancellation" do
121
127
  # test harness for https://github.com/elastic/logstash/issues/6055
122
128
 
@@ -155,12 +161,16 @@ describe LogStash::Pipeline do
155
161
 
156
162
  pipeline = LogStash::Pipeline.new(config, pipeline_settings_obj)
157
163
  t = Thread.new { pipeline.run }
158
- sleep(0.1) until pipeline.ready?
159
- wait(3).for do
160
- # give us a bit of time to flush the events
161
- # puts("*****" + output.events.map{|e| e.message}.to_s)
162
- output.events.map{|e| e.get("message")}.include?("END")
163
- end.to be_truthy
164
+ Timeout.timeout(timeout) do
165
+ sleep(0.1) until pipeline.ready?
166
+ end
167
+ Stud.try(max_retry.times, [StandardError, RSpec::Expectations::ExpectationNotMetError]) do
168
+ wait(3).for do
169
+ # give us a bit of time to flush the events
170
+ # puts("*****" + output.events.map{|e| e.message}.to_s)
171
+ output.events.map{|e| e.get("message")}.include?("END")
172
+ end.to be_truthy
173
+ end
164
174
  expect(output.events.size).to eq(2)
165
175
  expect(output.events[0].get("tags")).to eq(["notdropped"])
166
176
  expect(output.events[1].get("tags")).to eq(["notdropped"])
@@ -409,7 +419,9 @@ describe LogStash::Pipeline do
409
419
  # race condition if called in the thread
410
420
  p = pipeline
411
421
  t = Thread.new { p.run }
412
- sleep(0.1) until pipeline.ready?
422
+ Timeout.timeout(timeout) do
423
+ sleep(0.1) until pipeline.ready?
424
+ end
413
425
  pipeline.shutdown
414
426
  t.join
415
427
  end
@@ -608,11 +620,15 @@ describe LogStash::Pipeline do
608
620
 
609
621
  pipeline = LogStash::Pipeline.new(config, pipeline_settings_obj)
610
622
  t = Thread.new { pipeline.run }
611
- sleep(0.1) until pipeline.ready?
612
- wait(10).for do
613
- # give us a bit of time to flush the events
614
- output.events.empty?
615
- end.to be_falsey
623
+ Timeout.timeout(timeout) do
624
+ sleep(0.1) until pipeline.ready?
625
+ end
626
+ Stud.try(max_retry.times, [StandardError, RSpec::Expectations::ExpectationNotMetError]) do
627
+ wait(10).for do
628
+ # give us a bit of time to flush the events
629
+ output.events.empty?
630
+ end.to be_falsey
631
+ end
616
632
 
617
633
  expect(output.events.any? {|e| e.get("message") == "dummy_flush"}).to eq(true)
618
634
 
@@ -712,9 +728,12 @@ describe LogStash::Pipeline do
712
728
  # subject must be first call outside the thread context because of lazy initialization
713
729
  s = subject
714
730
  t = Thread.new { s.run }
715
- sleep(0.1) until subject.ready?
716
-
717
- sleep(0.1)
731
+ Timeout.timeout(timeout) do
732
+ sleep(0.1) until subject.ready?
733
+ end
734
+ Timeout.timeout(timeout) do
735
+ sleep(0.1)
736
+ end
718
737
  expect(subject.uptime).to be > 0
719
738
  subject.shutdown
720
739
  t.join
@@ -778,13 +797,17 @@ describe LogStash::Pipeline do
778
797
  allow(LogStash::Plugin).to receive(:lookup).with("output", "dummyoutput").and_return(::LogStash::Outputs::DummyOutput)
779
798
 
780
799
  pipeline_thread
781
- sleep(0.1) until subject.ready?
800
+ Timeout.timeout(timeout) do
801
+ sleep(0.1) until subject.ready?
802
+ end
782
803
 
783
804
  # make sure we have received all the generated events
784
- wait(3).for do
785
- # give us a bit of time to flush the events
786
- dummyoutput.events.size >= number_of_events
787
- end.to be_truthy
805
+ Stud.try(max_retry.times, [StandardError, RSpec::Expectations::ExpectationNotMetError]) do
806
+ wait(3).for do
807
+ # give us a bit of time to flush the events
808
+ dummyoutput.events.size >= number_of_events
809
+ end.to be_truthy
810
+ end
788
811
  end
789
812
 
790
813
  after :each do
@@ -841,6 +864,33 @@ describe LogStash::Pipeline do
841
864
  expect(collected_metric[:stats][:pipelines][:main][:plugins][:filters][plugin_name][:name].value).to eq(LogStash::Filters::Multiline.config_name)
842
865
  end
843
866
  end
867
+
868
+ context 'when dlq is disabled' do
869
+ let (:collect_stats) { subject.collect_dlq_stats}
870
+ let (:collected_stats) { collected_metric[:stats][:pipelines][:main][:dlq]}
871
+ let (:available_stats) {[:path, :queue_size_in_bytes]}
872
+
873
+ it 'should show not show any dlq stats' do
874
+ collect_stats
875
+ expect(collected_stats).to be_nil
876
+ end
877
+
878
+ end
879
+
880
+ context 'when dlq is enabled' do
881
+ let (:dead_letter_queue_enabled) { true }
882
+ let (:dead_letter_queue_path) { Stud::Temporary.directory }
883
+ let (:pipeline_dlq_path) { "#{dead_letter_queue_path}/#{pipeline_id}"}
884
+
885
+ let (:collect_stats) { subject.collect_dlq_stats }
886
+ let (:collected_stats) { collected_metric[:stats][:pipelines][:main][:dlq]}
887
+
888
+ it 'should show dlq stats' do
889
+ collect_stats
890
+ # A newly created dead letter queue with no entries will have a size of 1 (the version 'header')
891
+ expect(collected_stats[:queue_size_in_bytes].value).to eq(1)
892
+ end
893
+ end
844
894
  end
845
895
  end
846
896
 
@@ -7,6 +7,7 @@ require "stud/temporary"
7
7
  require "logstash/util/java_version"
8
8
  require "logstash/logging/json"
9
9
  require "logstash/config/modules_common"
10
+ require "logstash/modules/util"
10
11
  require "logstash/elasticsearch_client"
11
12
  require "json"
12
13
  require_relative "../support/helpers"
@@ -20,6 +21,7 @@ describe LogStash::Runner do
20
21
 
21
22
  subject { LogStash::Runner }
22
23
  let(:logger) { double("logger") }
24
+ let(:agent) { double("agent") }
23
25
 
24
26
  before :each do
25
27
  allow(LogStash::Runner).to receive(:logger).and_return(logger)
@@ -34,6 +36,13 @@ describe LogStash::Runner do
34
36
  allow(LogStash::Logging::Logger).to receive(:configure_logging) do |level, path|
35
37
  allow(logger).to receive(:level).and_return(level.to_sym)
36
38
  end
39
+ allow(LogStash::Logging::Logger).to receive(:reconfigure).with(any_args)
40
+ # Make sure we don't start a real pipeline here.
41
+ # because we cannot easily close the pipeline
42
+ allow(LogStash::Agent).to receive(:new).with(any_args).and_return(agent)
43
+ allow(agent).to receive(:execute)
44
+ allow(agent).to receive(:shutdown)
45
+ allow(agent).to receive(:register_pipeline)
37
46
  end
38
47
 
39
48
  describe "argument precedence" do
@@ -297,6 +306,9 @@ describe LogStash::Runner do
297
306
  end
298
307
 
299
308
  describe "config.debug" do
309
+ after(:each) do
310
+ LogStash::SETTINGS.set("config.debug", false)
311
+ end
300
312
  it "should set 'config.debug' to false by default" do
301
313
  expect(LogStash::Agent).to receive(:new) do |settings|
302
314
  expect(settings.get("config.debug")).to eq(false)
@@ -316,14 +328,18 @@ describe LogStash::Runner do
316
328
  end
317
329
 
318
330
  describe "logstash modules" do
331
+ before(:each) do
332
+ test_modules_dir = File.expand_path(File.join(File.dirname(__FILE__), "..", "modules_test_files"))
333
+ LogStash::Modules::Util.register_local_modules(test_modules_dir)
334
+ end
335
+
319
336
  describe "--config.test_and_exit" do
320
337
  subject { LogStash::Runner.new("") }
321
338
  let(:args) { ["-t", "--modules", module_string] }
322
339
 
323
340
  context "with a good configuration" do
324
- let(:module_string) { "cef" }
341
+ let(:module_string) { "tester" }
325
342
  it "should exit successfully" do
326
- skip("Skipped until cef module is added back to the codebase as explained in #7455")
327
343
  expect(logger).not_to receive(:fatal)
328
344
  expect(subject.run(args)).to eq(0)
329
345
  end
@@ -339,53 +355,58 @@ describe LogStash::Runner do
339
355
  end
340
356
 
341
357
  describe "--modules" do
342
- let(:args) { ["--modules", module_string] }
343
- let(:agent_instance) { double("agent") }
358
+ let(:args) { ["--modules", module_string, "--setup"] }
359
+
344
360
  context "with an available module specified but no connection to elasticsearch" do
345
- let(:module_string) { "cef" }
361
+ let(:module_string) { "tester" }
346
362
  before do
347
363
  expect(logger).to receive(:fatal) do |msg, hash|
348
364
  expect(msg).to eq("An unexpected error occurred!")
349
365
  expect(hash).to be_a_config_loading_error_hash(
350
- /Failed to import module configurations to Elasticsearch. Module: cef/)
366
+ /Failed to import module configurations to Elasticsearch and\/or Kibana. Module: tester has/)
351
367
  end
352
368
  end
353
369
  it "should log fatally and return a bad exit code" do
354
- skip("Skipped until cef module is added back to the codebase as explained in #7455")
355
370
  expect(subject.run("bin/logstash", args)).to eq(1)
356
371
  end
357
372
  end
358
373
 
359
374
  context "with an available module specified and a mocked connection to elasticsearch" do
360
- let(:module_string) { "cef" }
361
- let(:client) { double(:client) }
375
+ let(:module_string) { "tester" }
376
+ let(:kbn_version) { "5.6.0" }
377
+ let(:esclient) { double(:esclient) }
378
+ let(:kbnclient) { double(:kbnclient) }
362
379
  let(:response) { double(:response) }
363
380
  before do
364
381
  allow(response).to receive(:status).and_return(404)
365
- allow(client).to receive(:head).and_return(response)
366
- allow(client).to receive(:can_connect?).and_return(true)
367
- allow(agent_instance).to receive(:register_pipeline)
368
- allow(agent_instance).to receive(:execute)
369
- allow(agent_instance).to receive(:shutdown)
370
- allow(LogStash::ElasticsearchClient).to receive(:build).and_return(client)
371
-
372
- expect(client).to receive(:put).at_least(15).times do |path, content|
382
+ allow(esclient).to receive(:head).and_return(response)
383
+ allow(esclient).to receive(:can_connect?).and_return(true)
384
+ allow(kbnclient).to receive(:version).and_return(kbn_version)
385
+ allow(kbnclient).to receive(:version_parts).and_return(kbn_version.split('.'))
386
+ allow(kbnclient).to receive(:can_connect?).and_return(true)
387
+ allow(LogStash::ElasticsearchClient).to receive(:build).and_return(esclient)
388
+ allow(LogStash::Modules::KibanaClient).to receive(:new).and_return(kbnclient)
389
+
390
+ expect(esclient).to receive(:put).once do |path, content|
373
391
  LogStash::ElasticsearchClient::Response.new(201, "", {})
374
392
  end
375
- expect(LogStash::Agent).to receive(:new) do |settings|
393
+ expect(kbnclient).to receive(:post).twice do |path, content|
394
+ LogStash::Modules::KibanaClient::Response.new(201, "", {})
395
+ end
396
+
397
+ expect(LogStash::Agent).to receive(:new) do |settings, source_loader|
376
398
  pipelines = LogStash::Config::ModulesCommon.pipeline_configs(settings)
377
399
  expect(pipelines).not_to be_empty
378
- cef_pipeline = pipelines.first
379
- expect(cef_pipeline).to include("pipeline_id", "config_string")
380
- expect(cef_pipeline["pipeline_id"]).to include('cef')
381
- expect(cef_pipeline["config_string"]).to include('index => "cef-')
382
- agent_instance
400
+ module_pipeline = pipelines.first
401
+ expect(module_pipeline).to include("pipeline_id", "config_string")
402
+ expect(module_pipeline["pipeline_id"]).to include('tester')
403
+ expect(module_pipeline["config_string"]).to include('index => "tester-')
404
+ agent
383
405
  end
384
406
  expect(logger).not_to receive(:fatal)
385
407
  expect(logger).not_to receive(:error)
386
408
  end
387
- it "should not terminate logstash" do
388
- skip("Skipped until cef module is added back to the codebase as explained in #7455")
409
+ xit "should not terminate logstash" do
389
410
  expect(subject.run("bin/logstash", args)).to be_nil
390
411
  end
391
412
  end
@@ -0,0 +1,51 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+ require "logstash/settings"
4
+
5
+ describe LogStash::Setting::SplittableStringArray do
6
+ let(:element_class) { String }
7
+ let(:default_value) { [] }
8
+
9
+ subject { described_class.new("testing", element_class, default_value) }
10
+
11
+ before do
12
+ subject.set(candidate)
13
+ end
14
+
15
+ context "when giving an array" do
16
+ let(:candidate) { ["hello,", "ninja"] }
17
+
18
+ it "returns the same elements" do
19
+ expect(subject.value).to match(candidate)
20
+ end
21
+ end
22
+
23
+ context "when given a string" do
24
+ context "with 1 element" do
25
+ let(:candidate) { "hello" }
26
+
27
+ it "returns 1 element" do
28
+ expect(subject.value).to match(["hello"])
29
+ end
30
+ end
31
+
32
+ context "with multiple element" do
33
+ let(:candidate) { "hello,ninja" }
34
+
35
+ it "returns an array of string" do
36
+ expect(subject.value).to match(["hello", "ninja"])
37
+ end
38
+ end
39
+ end
40
+
41
+ context "when defining a custom tokenizer" do
42
+ subject { described_class.new("testing", element_class, default_value, strict=true, ";") }
43
+
44
+ let(:candidate) { "hello;ninja" }
45
+
46
+ it "returns an array of string" do
47
+ expect(subject.value).to match(["hello", "ninja"])
48
+ end
49
+ end
50
+ end
51
+
@@ -4,28 +4,6 @@ require "logstash/util/wrapped_synchronous_queue"
4
4
  require "logstash/instrument/collector"
5
5
 
6
6
  describe LogStash::Util::WrappedSynchronousQueue do
7
- context "#offer" do
8
- context "queue is blocked" do
9
- it "fails and give feedback" do
10
- expect(subject.offer("Bonjour", 2)).to be_falsey
11
- end
12
- end
13
-
14
- context "queue is not blocked" do
15
- before do
16
- @consumer = Thread.new { loop { subject.take } }
17
- sleep(0.1)
18
- end
19
-
20
- after do
21
- @consumer.kill
22
- end
23
-
24
- it "inserts successfully" do
25
- expect(subject.offer("Bonjour", 20)).to be_truthy
26
- end
27
- end
28
- end
29
7
 
30
8
  describe "queue clients" do
31
9
  context "when requesting a write client" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.5.3
4
+ version: 5.6.0
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
@@ -371,6 +371,8 @@ files:
371
371
  - lib/logstash/config/loader.rb
372
372
  - lib/logstash/config/mixin.rb
373
373
  - lib/logstash/config/modules_common.rb
374
+ - lib/logstash/config/source/modules.rb
375
+ - lib/logstash/config/string_escape.rb
374
376
  - lib/logstash/elasticsearch_client.rb
375
377
  - lib/logstash/environment.rb
376
378
  - lib/logstash/errors.rb
@@ -395,6 +397,7 @@ files:
395
397
  - lib/logstash/instrument/null_metric.rb
396
398
  - lib/logstash/instrument/periodic_poller/base.rb
397
399
  - lib/logstash/instrument/periodic_poller/cgroup.rb
400
+ - lib/logstash/instrument/periodic_poller/dlq.rb
398
401
  - lib/logstash/instrument/periodic_poller/jvm.rb
399
402
  - lib/logstash/instrument/periodic_poller/load_average.rb
400
403
  - lib/logstash/instrument/periodic_poller/os.rb
@@ -409,15 +412,21 @@ files:
409
412
  - lib/logstash/logging/logger.rb
410
413
  - lib/logstash/modules/cli_parser.rb
411
414
  - lib/logstash/modules/elasticsearch_config.rb
415
+ - lib/logstash/modules/elasticsearch_importer.rb
412
416
  - lib/logstash/modules/elasticsearch_resource.rb
413
417
  - lib/logstash/modules/file_reader.rb
414
- - lib/logstash/modules/importer.rb
415
- - lib/logstash/modules/kibana_base_resource.rb
418
+ - lib/logstash/modules/kibana_base.rb
419
+ - lib/logstash/modules/kibana_client.rb
416
420
  - lib/logstash/modules/kibana_config.rb
421
+ - lib/logstash/modules/kibana_dashboards.rb
422
+ - lib/logstash/modules/kibana_importer.rb
417
423
  - lib/logstash/modules/kibana_resource.rb
424
+ - lib/logstash/modules/kibana_settings.rb
418
425
  - lib/logstash/modules/logstash_config.rb
419
426
  - lib/logstash/modules/resource_base.rb
420
427
  - lib/logstash/modules/scaffold.rb
428
+ - lib/logstash/modules/settings_merger.rb
429
+ - lib/logstash/modules/util.rb
421
430
  - lib/logstash/namespace.rb
422
431
  - lib/logstash/output_delegator.rb
423
432
  - lib/logstash/output_delegator_strategies/legacy.rb
@@ -439,7 +448,6 @@ files:
439
448
  - lib/logstash/plugin.rb
440
449
  - lib/logstash/plugins/hooks_registry.rb
441
450
  - lib/logstash/plugins/registry.rb
442
- - lib/logstash/program.rb
443
451
  - lib/logstash/queue_factory.rb
444
452
  - lib/logstash/runner.rb
445
453
  - lib/logstash/settings.rb
@@ -492,6 +500,7 @@ files:
492
500
  - spec/logstash/config/defaults_spec.rb
493
501
  - spec/logstash/config/loader_spec.rb
494
502
  - spec/logstash/config/mixin_spec.rb
503
+ - spec/logstash/config/string_escape_spec.rb
495
504
  - spec/logstash/environment_spec.rb
496
505
  - spec/logstash/event_dispatcher_spec.rb
497
506
  - spec/logstash/event_spec.rb
@@ -509,6 +518,7 @@ files:
509
518
  - spec/logstash/instrument/null_metric_spec.rb
510
519
  - spec/logstash/instrument/periodic_poller/base_spec.rb
511
520
  - spec/logstash/instrument/periodic_poller/cgroup_spec.rb
521
+ - spec/logstash/instrument/periodic_poller/dlq_spec.rb
512
522
  - spec/logstash/instrument/periodic_poller/jvm_spec.rb
513
523
  - spec/logstash/instrument/periodic_poller/load_average_spec.rb
514
524
  - spec/logstash/instrument/periodic_poller/os_spec.rb
@@ -517,6 +527,8 @@ files:
517
527
  - spec/logstash/json_spec.rb
518
528
  - spec/logstash/legacy_ruby_event_spec.rb
519
529
  - spec/logstash/legacy_ruby_timestamp_spec.rb
530
+ - spec/logstash/modules/logstash_config_spec.rb
531
+ - spec/logstash/modules/scaffold_spec.rb
520
532
  - spec/logstash/output_delegator_spec.rb
521
533
  - spec/logstash/outputs/base_spec.rb
522
534
  - spec/logstash/patches_spec.rb
@@ -535,6 +547,7 @@ files:
535
547
  - spec/logstash/settings/integer_spec.rb
536
548
  - spec/logstash/settings/numeric_spec.rb
537
549
  - spec/logstash/settings/port_range_spec.rb
550
+ - spec/logstash/settings/splittable_string_array_spec.rb
538
551
  - spec/logstash/settings/string_spec.rb
539
552
  - spec/logstash/settings/time_value_spec.rb
540
553
  - spec/logstash/settings/writable_directory_spec.rb
@@ -610,6 +623,7 @@ test_files:
610
623
  - spec/logstash/config/defaults_spec.rb
611
624
  - spec/logstash/config/loader_spec.rb
612
625
  - spec/logstash/config/mixin_spec.rb
626
+ - spec/logstash/config/string_escape_spec.rb
613
627
  - spec/logstash/environment_spec.rb
614
628
  - spec/logstash/event_dispatcher_spec.rb
615
629
  - spec/logstash/event_spec.rb
@@ -627,6 +641,7 @@ test_files:
627
641
  - spec/logstash/instrument/null_metric_spec.rb
628
642
  - spec/logstash/instrument/periodic_poller/base_spec.rb
629
643
  - spec/logstash/instrument/periodic_poller/cgroup_spec.rb
644
+ - spec/logstash/instrument/periodic_poller/dlq_spec.rb
630
645
  - spec/logstash/instrument/periodic_poller/jvm_spec.rb
631
646
  - spec/logstash/instrument/periodic_poller/load_average_spec.rb
632
647
  - spec/logstash/instrument/periodic_poller/os_spec.rb
@@ -635,6 +650,8 @@ test_files:
635
650
  - spec/logstash/json_spec.rb
636
651
  - spec/logstash/legacy_ruby_event_spec.rb
637
652
  - spec/logstash/legacy_ruby_timestamp_spec.rb
653
+ - spec/logstash/modules/logstash_config_spec.rb
654
+ - spec/logstash/modules/scaffold_spec.rb
638
655
  - spec/logstash/output_delegator_spec.rb
639
656
  - spec/logstash/outputs/base_spec.rb
640
657
  - spec/logstash/patches_spec.rb
@@ -653,6 +670,7 @@ test_files:
653
670
  - spec/logstash/settings/integer_spec.rb
654
671
  - spec/logstash/settings/numeric_spec.rb
655
672
  - spec/logstash/settings/port_range_spec.rb
673
+ - spec/logstash/settings/splittable_string_array_spec.rb
656
674
  - spec/logstash/settings/string_spec.rb
657
675
  - spec/logstash/settings/time_value_spec.rb
658
676
  - spec/logstash/settings/writable_directory_spec.rb