logstash-core 6.0.0.beta1-java → 6.0.0.beta2-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 (44) 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/agent.rb +0 -16
  5. data/lib/logstash/compiler/lscl.rb +2 -53
  6. data/lib/logstash/compiler/lscl/helpers.rb +55 -0
  7. data/lib/logstash/config/config_ast.rb +6 -3
  8. data/lib/logstash/config/modules_common.rb +4 -1
  9. data/lib/logstash/elasticsearch_client.rb +4 -1
  10. data/lib/logstash/environment.rb +8 -2
  11. data/lib/logstash/filter_delegator.rb +11 -6
  12. data/lib/logstash/instrument/collector.rb +7 -5
  13. data/lib/logstash/instrument/metric_store.rb +6 -9
  14. data/lib/logstash/instrument/namespaced_metric.rb +4 -0
  15. data/lib/logstash/instrument/namespaced_null_metric.rb +4 -0
  16. data/lib/logstash/instrument/null_metric.rb +10 -0
  17. data/lib/logstash/instrument/wrapped_write_client.rb +33 -24
  18. data/lib/logstash/modules/kibana_client.rb +5 -3
  19. data/lib/logstash/modules/kibana_config.rb +1 -4
  20. data/lib/logstash/modules/scaffold.rb +2 -0
  21. data/lib/logstash/modules/settings_merger.rb +52 -4
  22. data/lib/logstash/output_delegator.rb +7 -5
  23. data/lib/logstash/pipeline.rb +37 -14
  24. data/lib/logstash/pipeline_settings.rb +2 -0
  25. data/lib/logstash/runner.rb +14 -2
  26. data/lib/logstash/settings.rb +26 -0
  27. data/lib/logstash/util/cloud_setting_auth.rb +29 -0
  28. data/lib/logstash/util/cloud_setting_id.rb +41 -0
  29. data/lib/logstash/util/modules_setting_array.rb +28 -0
  30. data/lib/logstash/util/wrapped_acked_queue.rb +5 -6
  31. data/lib/logstash/util/wrapped_synchronous_queue.rb +14 -9
  32. data/lib/logstash/version.rb +1 -1
  33. data/locales/en.yml +16 -0
  34. data/spec/logstash/agent/converge_spec.rb +6 -7
  35. data/spec/logstash/config/source/multi_local_spec.rb +11 -0
  36. data/spec/logstash/filter_delegator_spec.rb +20 -8
  37. data/spec/logstash/legacy_ruby_event_spec.rb +4 -4
  38. data/spec/logstash/modules/scaffold_spec.rb +2 -7
  39. data/spec/logstash/modules/settings_merger_spec.rb +111 -0
  40. data/spec/logstash/output_delegator_spec.rb +15 -5
  41. data/spec/logstash/pipeline_spec.rb +39 -7
  42. data/spec/logstash/runner_spec.rb +4 -1
  43. data/spec/logstash/settings/modules_spec.rb +115 -0
  44. metadata +10 -2
@@ -41,6 +41,8 @@ class DummyCodec < LogStash::Codecs::Base
41
41
  config_name "dummycodec"
42
42
  milestone 2
43
43
 
44
+ config :format, :validate => :string
45
+
44
46
  def decode(data)
45
47
  data
46
48
  end
@@ -93,11 +95,21 @@ class DummyFlushingFilter < LogStash::Filters::Base
93
95
  true
94
96
  end
95
97
  def flush(options)
96
- return [::LogStash::Event.new("message" => "dummy_flush")]
98
+ [::LogStash::Event.new("message" => "dummy_flush")]
97
99
  end
98
100
  def close() end
99
101
  end
100
102
 
103
+ class DummyFlushingFilterPeriodic < DummyFlushingFilter
104
+ config_name "dummyflushingfilterperiodic"
105
+
106
+ def flush(options)
107
+ # Don't generate events on the shutdown flush to make sure we actually test the
108
+ # periodic flush.
109
+ options[:final] ? [] : [::LogStash::Event.new("message" => "dummy_flush")]
110
+ end
111
+ end
112
+
101
113
  class TestPipeline < LogStash::Pipeline
102
114
  attr_reader :outputs, :settings
103
115
  end
@@ -108,7 +120,7 @@ describe LogStash::Pipeline do
108
120
  let(:override_thread_count) { 42 }
109
121
  let(:dead_letter_queue_enabled) { false }
110
122
  let(:dead_letter_queue_path) { }
111
- let(:pipeline_settings_obj) { LogStash::SETTINGS }
123
+ let(:pipeline_settings_obj) { LogStash::SETTINGS.clone }
112
124
  let(:pipeline_settings) { {} }
113
125
  let(:max_retry) {10} #times
114
126
  let(:timeout) {120} #seconds
@@ -124,10 +136,6 @@ describe LogStash::Pipeline do
124
136
  pipeline_settings.each {|k, v| pipeline_settings_obj.set(k, v) }
125
137
  end
126
138
 
127
- after :each do
128
- pipeline_settings_obj.reset
129
- end
130
-
131
139
  describe "#ephemeral_id" do
132
140
  it "creates an ephemeral_id at creation time" do
133
141
  pipeline = mock_pipeline_from_string("input { generator { count => 1 } } output { null {} }")
@@ -355,6 +363,30 @@ describe LogStash::Pipeline do
355
363
  end
356
364
  end
357
365
 
366
+ context "with no explicit ids declared" do
367
+ before(:each) do
368
+ allow(LogStash::Plugin).to receive(:lookup).with("input", "dummyinput").and_return(DummyInput)
369
+ allow(LogStash::Plugin).to receive(:lookup).with("codec", "plain").and_return(DummyCodec)
370
+ allow(LogStash::Plugin).to receive(:lookup).with("filter", "dummyfilter").and_return(DummyFilter)
371
+ allow(LogStash::Plugin).to receive(:lookup).with("output", "dummyoutput").and_return(::LogStash::Outputs::DummyOutput)
372
+ end
373
+
374
+ let(:config) { "input { dummyinput { codec => plain { format => 'something' } } } filter { dummyfilter {} } output { dummyoutput {} }"}
375
+ let(:pipeline) { mock_pipeline_from_string(config) }
376
+
377
+ after do
378
+ # If you don't start/stop the pipeline it won't release the queue lock and will
379
+ # cause the suite to fail :(
380
+ pipeline.close
381
+ end
382
+
383
+ it "should use LIR provided IDs" do
384
+ expect(pipeline.inputs.first.id).to eq(pipeline.lir.input_plugin_vertices.first.id)
385
+ expect(pipeline.filters.first.id).to eq(pipeline.lir.filter_plugin_vertices.first.id)
386
+ expect(pipeline.outputs.first.id).to eq(pipeline.lir.output_plugin_vertices.first.id)
387
+ end
388
+ end
389
+
358
390
  context "compiled flush function" do
359
391
  describe "flusher thread" do
360
392
  before(:each) do
@@ -627,7 +659,7 @@ describe LogStash::Pipeline do
627
659
  before do
628
660
  allow(::LogStash::Outputs::DummyOutput).to receive(:new).with(any_args).and_return(output)
629
661
  allow(LogStash::Plugin).to receive(:lookup).with("input", "dummy_input").and_return(DummyInput)
630
- allow(LogStash::Plugin).to receive(:lookup).with("filter", "dummy_flushing_filter").and_return(DummyFlushingFilter)
662
+ allow(LogStash::Plugin).to receive(:lookup).with("filter", "dummy_flushing_filter").and_return(DummyFlushingFilterPeriodic)
631
663
  allow(LogStash::Plugin).to receive(:lookup).with("output", "dummy_output").and_return(::LogStash::Outputs::DummyOutput)
632
664
  allow(LogStash::Plugin).to receive(:lookup).with("codec", "plain").and_return(LogStash::Codecs::Plain)
633
665
  end
@@ -294,6 +294,9 @@ describe LogStash::Runner do
294
294
  end
295
295
 
296
296
  describe "config.debug" do
297
+ after(:each) do
298
+ LogStash::SETTINGS.set("config.debug", false)
299
+ end
297
300
  it "should set 'config.debug' to false by default" do
298
301
  expect(LogStash::Agent).to receive(:new) do |settings|
299
302
  expect(settings.get("config.debug")).to eq(false)
@@ -340,7 +343,7 @@ describe LogStash::Runner do
340
343
  end
341
344
 
342
345
  describe "--modules" do
343
- let(:args) { ["--modules", module_string] }
346
+ let(:args) { ["--modules", module_string, "--setup"] }
344
347
 
345
348
  context "with an available module specified but no connection to elasticsearch" do
346
349
  let(:module_string) { "tester" }
@@ -0,0 +1,115 @@
1
+ # encoding: utf-8
2
+ require "spec_helper"
3
+ require "logstash/settings"
4
+ require "logstash/util/cloud_setting_id"
5
+ require "logstash/util/cloud_setting_auth"
6
+ require "logstash/util/modules_setting_array"
7
+
8
+ describe LogStash::Setting::Modules do
9
+ describe "Modules.Cli" do
10
+ subject { described_class.new("mycloudid", LogStash::Util::ModulesSettingArray, []) }
11
+ context "when given an array of hashes that contains a password key" do
12
+ it "should convert password Strings to Password" do
13
+ source = [{"var.kibana.password" => "some_secret"}]
14
+ setting = subject.set(source)
15
+ expect(setting).to be_a(Array)
16
+ expect(setting.__class__).to eq(LogStash::Util::ModulesSettingArray)
17
+ expect(setting.first.fetch("var.kibana.password")).to be_a(LogStash::Util::Password)
18
+ end
19
+ end
20
+ end
21
+
22
+ describe "Cloud.Id" do
23
+ subject { described_class.new("mycloudid", LogStash::Util::CloudSettingId) }
24
+ context "when given a string which is not a cloud id" do
25
+ it "should raise an exception" do
26
+ expect { subject.set("foobarbaz") }.to raise_error(ArgumentError, /Cloud Id does not decode/)
27
+ end
28
+ end
29
+
30
+ context "when given a string which is empty" do
31
+ it "should raise an exception" do
32
+ expect { subject.set("") }.to raise_error(ArgumentError, /Cloud Id does not decode/)
33
+ end
34
+ end
35
+
36
+ context "when given a string which is has environment prefix only" do
37
+ it "should raise an exception" do
38
+ expect { subject.set("testing:") }.to raise_error(ArgumentError, /Cloud Id does not decode/)
39
+ end
40
+ end
41
+
42
+ context "when given a badly formatted encoded id" do
43
+ it "should not raise an error" do
44
+ encoded = Base64.urlsafe_encode64("foo$$bal")
45
+ expect { subject.set(encoded) }.to raise_error(ArgumentError, /Cloud Id, after decoding, is invalid. Format: '<part1>\$<part2>\$<part3>'/)
46
+ end
47
+ end
48
+
49
+ context "when given a nil" do
50
+ it "should not raise an error" do
51
+ expect { subject.set(nil) }.to_not raise_error
52
+ end
53
+ end
54
+
55
+ context "when given a string which is an unlabelled cloud id" do
56
+ it "should set a LogStash::Util::CloudId instance" do
57
+ expect { subject.set("dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy") }.to_not raise_error
58
+ expect(subject.value.elasticsearch_host).to eq("notareal.us-east-1.aws.found.io:443")
59
+ expect(subject.value.kibana_host).to eq("identifier.us-east-1.aws.found.io:443")
60
+ expect(subject.value.label).to eq("")
61
+ end
62
+ end
63
+
64
+ context "when given a string which is a labelled cloud id" do
65
+ it "should set a LogStash::Util::CloudId instance" do
66
+ expect { subject.set("staging:dXMtZWFzdC0xLmF3cy5mb3VuZC5pbyRub3RhcmVhbCRpZGVudGlmaWVy") }.to_not raise_error
67
+ expect(subject.value.elasticsearch_host).to eq("notareal.us-east-1.aws.found.io:443")
68
+ expect(subject.value.kibana_host).to eq("identifier.us-east-1.aws.found.io:443")
69
+ expect(subject.value.label).to eq("staging")
70
+ end
71
+ end
72
+ end
73
+
74
+ describe "Cloud.Auth" do
75
+ subject { described_class.new("mycloudauth", LogStash::Util::CloudSettingAuth) }
76
+ context "when given a string without a separator or a password" do
77
+ it "should raise an exception" do
78
+ expect { subject.set("foobarbaz") }.to raise_error(ArgumentError, /Cloud Auth username and password format should be/)
79
+ end
80
+ end
81
+
82
+ context "when given a string without a password" do
83
+ it "should raise an exception" do
84
+ expect { subject.set("foo:") }.to raise_error(ArgumentError, /Cloud Auth username and password format should be/)
85
+ end
86
+ end
87
+
88
+ context "when given a string without a username" do
89
+ it "should raise an exception" do
90
+ expect { subject.set(":bar") }.to raise_error(ArgumentError, /Cloud Auth username and password format should be/)
91
+ end
92
+ end
93
+
94
+ context "when given a string which is empty" do
95
+ it "should raise an exception" do
96
+ expect { subject.set("") }.to raise_error(ArgumentError, /Cloud Auth username and password format should be/)
97
+ end
98
+ end
99
+
100
+ context "when given a nil" do
101
+ it "should not raise an error" do
102
+ expect { subject.set(nil) }.to_not raise_error
103
+ end
104
+ end
105
+
106
+ context "when given a string which is a cloud auth" do
107
+ it "should set the string" do
108
+ expect { subject.set("frodo:baggins") }.to_not raise_error
109
+ expect(subject.value.username).to eq("frodo")
110
+ expect(subject.value.password.value).to eq("baggins")
111
+ expect(subject.value.to_s).to eq("frodo:<password>")
112
+ end
113
+ end
114
+ end
115
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 6.0.0.beta1
4
+ version: 6.0.0.beta2
5
5
  platform: java
6
6
  authors:
7
7
  - Elastic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-08-03 00:00:00.000000000 Z
11
+ date: 2017-08-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  requirement: !ruby/object:Gem::Requirement
@@ -369,6 +369,7 @@ files:
369
369
  - lib/logstash/codecs/base.rb
370
370
  - lib/logstash/compiler.rb
371
371
  - lib/logstash/compiler/lscl.rb
372
+ - lib/logstash/compiler/lscl/helpers.rb
372
373
  - lib/logstash/compiler/lscl/lscl_grammar.rb
373
374
  - lib/logstash/compiler/treetop_monkeypatches.rb
374
375
  - lib/logstash/config/config_ast.rb
@@ -476,6 +477,8 @@ files:
476
477
  - lib/logstash/util/buftok.rb
477
478
  - lib/logstash/util/byte_value.rb
478
479
  - lib/logstash/util/charset.rb
480
+ - lib/logstash/util/cloud_setting_auth.rb
481
+ - lib/logstash/util/cloud_setting_id.rb
479
482
  - lib/logstash/util/dead_letter_queue_manager.rb
480
483
  - lib/logstash/util/decorators.rb
481
484
  - lib/logstash/util/duration_formatter.rb
@@ -483,6 +486,7 @@ files:
483
486
  - lib/logstash/util/filetools.rb
484
487
  - lib/logstash/util/java_version.rb
485
488
  - lib/logstash/util/loggable.rb
489
+ - lib/logstash/util/modules_setting_array.rb
486
490
  - lib/logstash/util/password.rb
487
491
  - lib/logstash/util/plugin_version.rb
488
492
  - lib/logstash/util/prctl.rb
@@ -554,6 +558,7 @@ files:
554
558
  - spec/logstash/modules/cli_parser_spec.rb
555
559
  - spec/logstash/modules/logstash_config_spec.rb
556
560
  - spec/logstash/modules/scaffold_spec.rb
561
+ - spec/logstash/modules/settings_merger_spec.rb
557
562
  - spec/logstash/output_delegator_spec.rb
558
563
  - spec/logstash/outputs/base_spec.rb
559
564
  - spec/logstash/patches_spec.rb
@@ -573,6 +578,7 @@ files:
573
578
  - spec/logstash/settings/array_coercible_spec.rb
574
579
  - spec/logstash/settings/bytes_spec.rb
575
580
  - spec/logstash/settings/integer_spec.rb
581
+ - spec/logstash/settings/modules_spec.rb
576
582
  - spec/logstash/settings/numeric_spec.rb
577
583
  - spec/logstash/settings/port_range_spec.rb
578
584
  - spec/logstash/settings/splittable_string_array_spec.rb
@@ -691,6 +697,7 @@ test_files:
691
697
  - spec/logstash/modules/cli_parser_spec.rb
692
698
  - spec/logstash/modules/logstash_config_spec.rb
693
699
  - spec/logstash/modules/scaffold_spec.rb
700
+ - spec/logstash/modules/settings_merger_spec.rb
694
701
  - spec/logstash/output_delegator_spec.rb
695
702
  - spec/logstash/outputs/base_spec.rb
696
703
  - spec/logstash/patches_spec.rb
@@ -710,6 +717,7 @@ test_files:
710
717
  - spec/logstash/settings/array_coercible_spec.rb
711
718
  - spec/logstash/settings/bytes_spec.rb
712
719
  - spec/logstash/settings/integer_spec.rb
720
+ - spec/logstash/settings/modules_spec.rb
713
721
  - spec/logstash/settings/numeric_spec.rb
714
722
  - spec/logstash/settings/port_range_spec.rb
715
723
  - spec/logstash/settings/splittable_string_array_spec.rb