logstash-integration-rabbitmq 7.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.
Files changed (47) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +9 -0
  3. data/CONTRIBUTORS +27 -0
  4. data/Gemfile +11 -0
  5. data/LICENSE +13 -0
  6. data/NOTICE.TXT +5 -0
  7. data/README.md +98 -0
  8. data/docs/index.asciidoc +29 -0
  9. data/docs/input-rabbitmq.asciidoc +398 -0
  10. data/docs/output-rabbitmq.asciidoc +272 -0
  11. data/lib/logstash/inputs/rabbitmq.rb +317 -0
  12. data/lib/logstash/outputs/rabbitmq.rb +131 -0
  13. data/lib/logstash/plugin_mixins/rabbitmq_connection.rb +234 -0
  14. data/lib/logstash_registry.rb +7 -0
  15. data/logstash-integration-rabbitmq.gemspec +53 -0
  16. data/spec/fixtures/README.md +150 -0
  17. data/spec/fixtures/client/cert.pem +69 -0
  18. data/spec/fixtures/client/key.pem +27 -0
  19. data/spec/fixtures/client/keycert.p12 +0 -0
  20. data/spec/fixtures/client/req.pem +15 -0
  21. data/spec/fixtures/client_untrusted/cert.pem +19 -0
  22. data/spec/fixtures/client_untrusted/key.pem +28 -0
  23. data/spec/fixtures/client_untrusted/keycert.p12 +0 -0
  24. data/spec/fixtures/server/cert.pem +69 -0
  25. data/spec/fixtures/server/key.pem +27 -0
  26. data/spec/fixtures/server/key_password +1 -0
  27. data/spec/fixtures/server/keycert.p12 +0 -0
  28. data/spec/fixtures/server/rabbitmq.config +10 -0
  29. data/spec/fixtures/server/req.pem +15 -0
  30. data/spec/fixtures/testca/cacert.cer +0 -0
  31. data/spec/fixtures/testca/cacert.pem +17 -0
  32. data/spec/fixtures/testca/certs/01.pem +18 -0
  33. data/spec/fixtures/testca/certs/02.pem +18 -0
  34. data/spec/fixtures/testca/certs/05.pem +69 -0
  35. data/spec/fixtures/testca/certs/06.pem +69 -0
  36. data/spec/fixtures/testca/index.txt +4 -0
  37. data/spec/fixtures/testca/index.txt.attr +1 -0
  38. data/spec/fixtures/testca/index.txt.attr.old +1 -0
  39. data/spec/fixtures/testca/index.txt.old +3 -0
  40. data/spec/fixtures/testca/openssl.cnf +53 -0
  41. data/spec/fixtures/testca/private/cakey.pem +27 -0
  42. data/spec/fixtures/testca/serial +1 -0
  43. data/spec/fixtures/testca/serial.old +1 -0
  44. data/spec/inputs/rabbitmq_spec.rb +279 -0
  45. data/spec/outputs/rabbitmq_spec.rb +232 -0
  46. data/spec/plugin_mixins/rabbitmq_connection_spec.rb +175 -0
  47. metadata +256 -0
@@ -0,0 +1,175 @@
1
+ # encoding: utf-8
2
+ require "logstash/devutils/rspec/spec_helper"
3
+ require "logstash/pipeline"
4
+ require "logstash/plugin_mixins/rabbitmq_connection"
5
+ require "stud/temporary"
6
+
7
+ class TestPlugin < LogStash::Outputs::Base
8
+ include LogStash::PluginMixins::RabbitMQConnection
9
+
10
+ def register
11
+ connect!
12
+ end
13
+ end
14
+
15
+ describe LogStash::PluginMixins::RabbitMQConnection do
16
+ let(:klass) { TestPlugin }
17
+ let(:host) { "localhost" }
18
+ let(:port) { 5672 }
19
+ let(:rabbitmq_settings) {
20
+ {
21
+ "host" => host,
22
+ "port" => port,
23
+ }
24
+ }
25
+ let(:instance) {
26
+ klass.new(rabbitmq_settings)
27
+ }
28
+ let(:hare_info) { instance.instance_variable_get(:@hare_info) }
29
+
30
+ describe "rabbitmq_settings" do
31
+ let(:file) { Stud::Temporary.file }
32
+ let(:path) { file.path }
33
+ after { File.unlink(path)}
34
+
35
+ let(:rabbitmq_settings) { super.merge({"connection_timeout" => 123,
36
+ "heartbeat" => 456,
37
+ "ssl" => true,
38
+ "ssl_version" => "TLSv1.1",
39
+ "ssl_certificate_path" => path,
40
+ "ssl_certificate_password" => "123"}) }
41
+
42
+ it "should set the timeout to the expected value" do
43
+ expect(instance.rabbitmq_settings[:timeout]).to eql(rabbitmq_settings["connection_timeout"])
44
+ end
45
+
46
+ it "should set heartbeat to the expected value" do
47
+ expect(instance.rabbitmq_settings[:heartbeat]).to eql(rabbitmq_settings["heartbeat"])
48
+ end
49
+
50
+ it "should set tls to the expected value" do
51
+ expect(instance.rabbitmq_settings[:tls]).to eql("TLSv1.1")
52
+ end
53
+
54
+ it "should set tls_certificate_path to the expected value" do
55
+ expect(instance.rabbitmq_settings[:tls_certificate_path]).to eql(rabbitmq_settings["ssl_certificate_path"])
56
+ end
57
+
58
+ it "should set tls_certificate_password to the expected value" do
59
+ expect(instance.rabbitmq_settings[:tls_certificate_password]).to eql(rabbitmq_settings["ssl_certificate_password"])
60
+ end
61
+
62
+ it "should set hosts to the expected value " do
63
+ expect(instance.rabbitmq_settings[:hosts][0]).to eql(host)
64
+ end
65
+
66
+ it "should only insert a single host entry" do
67
+ expect(instance.rabbitmq_settings[:hosts].length).to eql(1)
68
+ end
69
+ end
70
+
71
+ describe "ssl enabled, but no verification" do
72
+ let(:rabbitmq_settings) { super.merge({"connection_timeout" => 123,
73
+ "heartbeat" => 456,
74
+ "ssl" => true}) }
75
+
76
+ it "should not have any certificates set" do
77
+ expect(instance.rabbitmq_settings[:tls_certificate_password]).to be nil
78
+ expect(instance.rabbitmq_settings[:tls_certificate_path]).to be nil
79
+ end
80
+
81
+ end
82
+ describe "rabbitmq_settings multiple hosts" do
83
+ let(:file) { Stud::Temporary.file }
84
+ let(:path) { file.path }
85
+ after { File.unlink(path)}
86
+
87
+ let(:rabbitmq_settings) { super.merge({"host" => ["host01", "host02", "host03"]}) }
88
+
89
+ it "should set hosts to the expected value" do
90
+ expect(instance.rabbitmq_settings[:hosts][0]).to eql("host01")
91
+ expect(instance.rabbitmq_settings[:hosts][1]).to eql("host02")
92
+ expect(instance.rabbitmq_settings[:hosts][2]).to eql("host03")
93
+ end
94
+
95
+ it "should insert 3 host entries" do
96
+ expect(instance.rabbitmq_settings[:hosts].length).to eql(3)
97
+ end
98
+ end
99
+
100
+ context "when connected" do
101
+ let(:connection) { double("MarchHare Connection") }
102
+ let(:channel) { double("Channel") }
103
+
104
+ before do
105
+ allow(instance).to receive(:connect!).and_call_original
106
+ allow(::MarchHare).to receive(:connect).and_return(connection)
107
+ allow(connection).to receive(:create_channel).and_return(channel)
108
+ allow(connection).to receive(:on_blocked)
109
+ allow(connection).to receive(:on_unblocked)
110
+ allow(connection).to receive(:on_shutdown)
111
+
112
+ instance.register
113
+ end
114
+
115
+ describe "#register" do
116
+ subject { instance }
117
+
118
+ it "should create cleanly" do
119
+ expect(subject).to be_a(klass)
120
+ end
121
+
122
+ it "should connect" do
123
+ expect(subject).to have_received(:connect!).once
124
+ end
125
+ end
126
+
127
+ describe "#connect!" do
128
+ subject { hare_info }
129
+
130
+ it "should set @hare_info correctly" do
131
+ expect(subject).to be_a(LogStash::PluginMixins::RabbitMQConnection::HareInfo)
132
+ end
133
+
134
+ it "should set @connection correctly" do
135
+ expect(subject.connection).to eql(connection)
136
+ end
137
+
138
+ it "should set the channel correctly" do
139
+ expect(subject.channel).to eql(channel)
140
+ end
141
+ end
142
+ end
143
+
144
+ # If the connection encounters an exception during its initial
145
+ # connection attempt we must handle that. Subsequent errors should be
146
+ # handled by the automatic retry mechanism built-in to MarchHare
147
+ describe "initial connection exceptions" do
148
+ subject { instance }
149
+
150
+ before do
151
+ allow(subject).to receive(:sleep_for_retry)
152
+
153
+
154
+ i = 0
155
+ allow(subject).to receive(:connect) do
156
+ i += 1
157
+ if i == 1
158
+ raise(MarchHare::ConnectionRefused, "Error!")
159
+ else
160
+ double("connection")
161
+ end
162
+ end
163
+
164
+ subject.send(:connect!)
165
+ end
166
+
167
+ it "should retry its connection when conn fails" do
168
+ expect(subject).to have_received(:connect).twice
169
+ end
170
+
171
+ it "should sleep between retries" do
172
+ expect(subject).to have_received(:sleep_for_retry).once
173
+ end
174
+ end
175
+ end
metadata ADDED
@@ -0,0 +1,256 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: logstash-integration-rabbitmq
3
+ version: !ruby/object:Gem::Version
4
+ version: 7.0.0
5
+ platform: java
6
+ authors:
7
+ - Elastic
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-10-15 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '1.60'
19
+ - - "<="
20
+ - !ruby/object:Gem::Version
21
+ version: '2.99'
22
+ name: logstash-core-plugin-api
23
+ prerelease: false
24
+ type: :runtime
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '1.60'
30
+ - - "<="
31
+ - !ruby/object:Gem::Version
32
+ version: '2.99'
33
+ - !ruby/object:Gem::Dependency
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - ">="
37
+ - !ruby/object:Gem::Version
38
+ version: 6.5.0
39
+ name: logstash-core
40
+ prerelease: false
41
+ type: :runtime
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 6.5.0
47
+ - !ruby/object:Gem::Dependency
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: '0'
53
+ name: logstash-codec-json
54
+ prerelease: false
55
+ type: :runtime
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '4.0'
67
+ name: march_hare
68
+ prerelease: false
69
+ type: :runtime
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '4.0'
75
+ - !ruby/object:Gem::Dependency
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.0.22
81
+ name: stud
82
+ prerelease: false
83
+ type: :runtime
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: 0.0.22
89
+ - !ruby/object:Gem::Dependency
90
+ requirement: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ name: back_pressure
96
+ prerelease: false
97
+ type: :runtime
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - "~>"
101
+ - !ruby/object:Gem::Version
102
+ version: '1.0'
103
+ - !ruby/object:Gem::Dependency
104
+ requirement: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ name: logstash-devutils
110
+ prerelease: false
111
+ type: :development
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ requirement: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ name: logstash-input-generator
124
+ prerelease: false
125
+ type: :development
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ requirement: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ name: logstash-codec-plain
138
+ prerelease: false
139
+ type: :development
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ description: This gem is a Logstash plugin required to be installed on top of the
146
+ Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This
147
+ gem is not a stand-alone program.
148
+ email: info@elastic.co
149
+ executables: []
150
+ extensions: []
151
+ extra_rdoc_files: []
152
+ files:
153
+ - CHANGELOG.md
154
+ - CONTRIBUTORS
155
+ - Gemfile
156
+ - LICENSE
157
+ - NOTICE.TXT
158
+ - README.md
159
+ - docs/index.asciidoc
160
+ - docs/input-rabbitmq.asciidoc
161
+ - docs/output-rabbitmq.asciidoc
162
+ - lib/logstash/inputs/rabbitmq.rb
163
+ - lib/logstash/outputs/rabbitmq.rb
164
+ - lib/logstash/plugin_mixins/rabbitmq_connection.rb
165
+ - lib/logstash_registry.rb
166
+ - logstash-integration-rabbitmq.gemspec
167
+ - spec/fixtures/README.md
168
+ - spec/fixtures/client/cert.pem
169
+ - spec/fixtures/client/key.pem
170
+ - spec/fixtures/client/keycert.p12
171
+ - spec/fixtures/client/req.pem
172
+ - spec/fixtures/client_untrusted/cert.pem
173
+ - spec/fixtures/client_untrusted/key.pem
174
+ - spec/fixtures/client_untrusted/keycert.p12
175
+ - spec/fixtures/server/cert.pem
176
+ - spec/fixtures/server/key.pem
177
+ - spec/fixtures/server/key_password
178
+ - spec/fixtures/server/keycert.p12
179
+ - spec/fixtures/server/rabbitmq.config
180
+ - spec/fixtures/server/req.pem
181
+ - spec/fixtures/testca/cacert.cer
182
+ - spec/fixtures/testca/cacert.pem
183
+ - spec/fixtures/testca/certs/01.pem
184
+ - spec/fixtures/testca/certs/02.pem
185
+ - spec/fixtures/testca/certs/05.pem
186
+ - spec/fixtures/testca/certs/06.pem
187
+ - spec/fixtures/testca/index.txt
188
+ - spec/fixtures/testca/index.txt.attr
189
+ - spec/fixtures/testca/index.txt.attr.old
190
+ - spec/fixtures/testca/index.txt.old
191
+ - spec/fixtures/testca/openssl.cnf
192
+ - spec/fixtures/testca/private/cakey.pem
193
+ - spec/fixtures/testca/serial
194
+ - spec/fixtures/testca/serial.old
195
+ - spec/inputs/rabbitmq_spec.rb
196
+ - spec/outputs/rabbitmq_spec.rb
197
+ - spec/plugin_mixins/rabbitmq_connection_spec.rb
198
+ homepage: http://www.elastic.co/guide/en/logstash/current/index.html
199
+ licenses:
200
+ - Apache License (2.0)
201
+ metadata:
202
+ logstash_plugin: 'true'
203
+ logstash_group: integration
204
+ integration_plugins: logstash-input-rabbitmq,logstash-output-rabbitmq
205
+ post_install_message:
206
+ rdoc_options: []
207
+ require_paths:
208
+ - lib
209
+ required_ruby_version: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ required_rubygems_version: !ruby/object:Gem::Requirement
215
+ requirements:
216
+ - - ">="
217
+ - !ruby/object:Gem::Version
218
+ version: '0'
219
+ requirements: []
220
+ rubyforge_project:
221
+ rubygems_version: 2.7.9
222
+ signing_key:
223
+ specification_version: 4
224
+ summary: Integration with RabbitMQ - input and output plugins
225
+ test_files:
226
+ - spec/fixtures/README.md
227
+ - spec/fixtures/client/cert.pem
228
+ - spec/fixtures/client/key.pem
229
+ - spec/fixtures/client/keycert.p12
230
+ - spec/fixtures/client/req.pem
231
+ - spec/fixtures/client_untrusted/cert.pem
232
+ - spec/fixtures/client_untrusted/key.pem
233
+ - spec/fixtures/client_untrusted/keycert.p12
234
+ - spec/fixtures/server/cert.pem
235
+ - spec/fixtures/server/key.pem
236
+ - spec/fixtures/server/key_password
237
+ - spec/fixtures/server/keycert.p12
238
+ - spec/fixtures/server/rabbitmq.config
239
+ - spec/fixtures/server/req.pem
240
+ - spec/fixtures/testca/cacert.cer
241
+ - spec/fixtures/testca/cacert.pem
242
+ - spec/fixtures/testca/certs/01.pem
243
+ - spec/fixtures/testca/certs/02.pem
244
+ - spec/fixtures/testca/certs/05.pem
245
+ - spec/fixtures/testca/certs/06.pem
246
+ - spec/fixtures/testca/index.txt
247
+ - spec/fixtures/testca/index.txt.attr
248
+ - spec/fixtures/testca/index.txt.attr.old
249
+ - spec/fixtures/testca/index.txt.old
250
+ - spec/fixtures/testca/openssl.cnf
251
+ - spec/fixtures/testca/private/cakey.pem
252
+ - spec/fixtures/testca/serial
253
+ - spec/fixtures/testca/serial.old
254
+ - spec/inputs/rabbitmq_spec.rb
255
+ - spec/outputs/rabbitmq_spec.rb
256
+ - spec/plugin_mixins/rabbitmq_connection_spec.rb