logstash-input-mongodb 0.3.2 → 0.3.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5239efc622206199789eedf0e1af75242fc6262d
4
- data.tar.gz: d254084e1e1b9791b02e4f3207260da0f11cf046
3
+ metadata.gz: 388af0f33d8e7e99f421dfb5f178b213b394fbb8
4
+ data.tar.gz: a5275546392e3c9c588f266e9d84f5c8124af36b
5
5
  SHA512:
6
- metadata.gz: d717f6a55dbe745b3e4c66bb43465559c7c409dc9d0191636ab49f23c3c054d6b55f2283ba45aa11a5ac245c6040925185cada2e5637606c903f84f29d32ec83
7
- data.tar.gz: 61562cf62e60a8f6055d4f31849dc06d5033bffdf01ed1858e71938d3d04d77a88a1278cd1f6efeebfc5b74e81c52ed0ed1619c85ffeac411cbf3536d1f2accc
6
+ metadata.gz: e61433c0e8d75fcb990c7353d5ba5edb3af08a5ae924696b40f8ad2b0e0e4a2edef4d71a204caf2b6d7dc439b85db24983edade05f1725c3fa713284974583d5
7
+ data.tar.gz: 45321ea60084617ea0e917632b072cd12eae3a6098de2712dc3a8eb4b15738cb164821e17daee8b92ec29c04c8f17c686767726338c6c131476055ca38245862
data/README.md CHANGED
@@ -69,3 +69,9 @@ output {
69
69
  }
70
70
  }
71
71
  ```
72
+
73
+ ### MongoDB URI
74
+
75
+ The URI parameter is where you would specify all of your mongodb options including things like auth and SSL. You should use a connection string (URI) compatible with the mongodb spec.
76
+
77
+ For more information on MongoDB URI's please see the MongoDB documentation: https://docs.mongodb.org/v3.0/reference/connection-string/
@@ -213,10 +213,11 @@ class LogStash::Inputs::MongoDB < LogStash::Inputs::Base
213
213
  sleep_max = 5
214
214
  sleeptime = sleep_min
215
215
 
216
- begin
217
- @logger.debug("Tailing MongoDB")
218
- @logger.debug("Collection data is: #{@collection_data}")
219
- loop do
216
+ @logger.debug("Tailing MongoDB")
217
+ @logger.debug("Collection data is: #{@collection_data}")
218
+
219
+ while true && !stop?
220
+ begin
220
221
  @collection_data.each do |index, collection|
221
222
  collection_name = collection[:name]
222
223
  @logger.debug("collection_data is: #{@collection_data}")
@@ -341,13 +342,15 @@ class LogStash::Inputs::MongoDB < LogStash::Inputs::Base
341
342
  @logger.debug("No new rows. Sleeping.", :time => sleeptime)
342
343
  sleeptime = [sleeptime * 2, sleep_max].min
343
344
  sleep(sleeptime)
344
- #sleeptime = sleep_min
345
- end
346
- rescue LogStash::ShutdownSignal
347
- if @interrupted
348
- @logger.debug("Mongo Input shutting down")
345
+ rescue => e
346
+ @logger.warn('MongoDB Input threw an exception, restarting', :exception => e)
349
347
  end
350
348
  end
351
349
  end # def run
352
350
 
351
+ def close
352
+ # If needed, use this to tidy up on shutdown
353
+ @logger.debug("Shutting down...")
354
+ end
355
+
353
356
  end # class LogStash::Inputs::Example
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'logstash-input-mongodb'
3
- s.version = '0.3.2'
3
+ s.version = '0.3.3'
4
4
  s.licenses = ['Apache License (2.0)']
5
5
  s.summary = "This takes entries from mongodb as an input to logstash."
6
6
  s.description = "This gem is a logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/plugin install gemname. This gem is not a stand-alone program"
@@ -0,0 +1,81 @@
1
+ # encoding: utf-8
2
+
3
+ require "logstash/devutils/rspec/spec_helper"
4
+ require "tempfile"
5
+ require "stud/temporary"
6
+ require "logstash/inputs/mongodb"
7
+
8
+ FILE_DELIMITER = LogStash::Environment.windows? ? "\r\n" : "\n"
9
+
10
+ describe LogStash::Inputs::Mongodb do
11
+ before(:all) do
12
+ @abort_on_exception = Thread.abort_on_exception
13
+ Thread.abort_on_exception = true
14
+ end
15
+
16
+ after(:all) do
17
+ Thread.abort_on_exception = @abort_on_exception
18
+ end
19
+
20
+ it_behaves_like "an interruptible input plugin" do
21
+ let(:config) do
22
+ {
23
+ placeholder_db_dir => Stud::Temporary.pathname,
24
+ placeholder_db_bame => Stud::Temporary.file,
25
+ collection => 'logstash-input-mongodb_test'
26
+ }
27
+ end
28
+ end
29
+
30
+ it "should start at the beginning of a collection when no sincedb data exists" do
31
+ placeholder_db_dir = Stud::Temporary.pathname
32
+ placeholder_db_name = Stud::Temporary.pathname
33
+ collection = 'logstash-input-mongodb_test'
34
+
35
+ conf = <<-CONFIG
36
+ input {
37
+ mongodb {
38
+ uri => 'mongodb://localhost/logstash-input-mongodb_test',
39
+ placeholder_db_dir => "#{placeholder_db_dir}"
40
+ placeholder_db_name => "#{placeholder_db_name}"
41
+ collection => "#{collection}"
42
+ }
43
+ }
44
+ CONFIG
45
+
46
+ # Create the test DB and populate it with some data
47
+ # add "first message"
48
+ # add "second message"
49
+
50
+ events = input(conf) do |pipeline, queue|
51
+
52
+ events = []
53
+
54
+ retries = 0
55
+ while retries < 20
56
+ # Add some new entries to the database
57
+ # add "third message"
58
+ # add "fourth message"
59
+
60
+ if queue.size >= 4
61
+ events = 4.times.collect { queue.pop }
62
+ break
63
+ end
64
+
65
+ sleep(0.1)
66
+ retries += 1
67
+ end
68
+
69
+ events
70
+ end
71
+
72
+ insist { events[0]["message"] } == "first message"
73
+ insist { events[1]["message"] } == "second message"
74
+ insist { events[2]["message"] } == "third message"
75
+ insist { events[3]["message"] } == "fourth message"
76
+ end
77
+
78
+ it "should start where it left off in a collection when it has sincedb data" do
79
+
80
+ end
81
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-mongodb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Philip Hutchins
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-16 00:00:00.000000000 Z
11
+ date: 2015-12-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logstash-core
@@ -128,7 +128,7 @@ files:
128
128
  - README.md
129
129
  - lib/logstash/inputs/mongodb.rb
130
130
  - logstash-input-mongodb.gemspec
131
- - spec/inputs/example_spec.rb
131
+ - spec/inputs/mongodb_spec.rb
132
132
  homepage: http://www.phutchins.com
133
133
  licenses:
134
134
  - Apache License (2.0)
@@ -156,4 +156,4 @@ signing_key:
156
156
  specification_version: 4
157
157
  summary: This takes entries from mongodb as an input to logstash.
158
158
  test_files:
159
- - spec/inputs/example_spec.rb
159
+ - spec/inputs/mongodb_spec.rb
@@ -1 +0,0 @@
1
- require "logstash/devutils/rspec/spec_helper"