logstash-input-relp 0.1.3 → 0.1.4

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: 2148057f735b2a5edb327beff5d106602dad57c9
4
- data.tar.gz: 04537891291c2c4d367544459da01a09103ca092
3
+ metadata.gz: 3f136b2ae376bb7219926bbb97ea97be2314757a
4
+ data.tar.gz: 0aa28fa74ee6ceba4e3713e488d971d8fe1c2cde
5
5
  SHA512:
6
- metadata.gz: 2177fd80b7ed5854bdbd8c0f3709edaf11a82c78e5cd9b47af49b1ca8f3d71414732e5dec029180c46bacf2be0303d6061dfa4f59f712539b39c6927d504ec03
7
- data.tar.gz: 5bb0e0b254571216fa0553e6e24627bc9304c54ed1b4a9e1c98e7dc14c7446c9a391e1efb854e0c34d715fae3fdf0c205f4b616b7d4a1e4793d590496d53904e
6
+ metadata.gz: 7d3a95308a7672189db3c7e828f2036f87a146da7810ebbf32d6ed8bf13909ded0db77391f38a6cb9d57d8c625e87ba40d450b9084a4df7de3dbbcaf0bc0ee9e
7
+ data.tar.gz: 6884706af0e0574ef7257a3fb65cd70d593d510eaf3faaebf79ba7902aa3266740b29ee0d24e189bb565f4c5da77d2102f9b720182cddac4a2647561f9bc42f7
@@ -8,7 +8,7 @@ require "logstash/util/socket_peer"
8
8
 
9
9
  # Read RELP events over a TCP socket.
10
10
  #
11
- # For more information about RELP, see
11
+ # For more information about RELP, see
12
12
  # <http://www.rsyslog.com/doc/imrelp.html>
13
13
  #
14
14
  # This protocol implements application-level acknowledgements to help protect
@@ -17,8 +17,6 @@ require "logstash/util/socket_peer"
17
17
  # Message acks only function as far as messages being put into the queue for
18
18
  # filters; anything lost after that point will not be retransmitted
19
19
  class LogStash::Inputs::Relp < LogStash::Inputs::Base
20
- class Interrupted < StandardError; end
21
-
22
20
  config_name "relp"
23
21
 
24
22
  default :codec, "plain"
@@ -31,6 +29,8 @@ class LogStash::Inputs::Relp < LogStash::Inputs::Base
31
29
 
32
30
  def initialize(*args)
33
31
  super(*args)
32
+ @interrupted = false
33
+ @relp_server = nil
34
34
  end # def initialize
35
35
 
36
36
  public
@@ -49,7 +49,7 @@ class LogStash::Inputs::Relp < LogStash::Inputs::Base
49
49
  output_queue << event
50
50
  end
51
51
 
52
- #To get this far, the message must have made it into the queue for
52
+ #To get this far, the message must have made it into the queue for
53
53
  #filtering. I don't think it's possible to wait for output before ack
54
54
  #without fundamentally breaking the plugin architecture
55
55
  relpserver.ack(socket, frame['txnr'])
@@ -59,7 +59,7 @@ class LogStash::Inputs::Relp < LogStash::Inputs::Base
59
59
  public
60
60
  def run(output_queue)
61
61
  @thread = Thread.current
62
- loop do
62
+ while !@interrupted
63
63
  begin
64
64
  # Start a new thread for each connection.
65
65
  Thread.start(@relp_server.accept) do |client|
@@ -87,22 +87,22 @@ class LogStash::Inputs::Relp < LogStash::Inputs::Base
87
87
  @logger.warn('Relp client trying to open connection with something other than open:'+e.message)
88
88
  rescue Relp::InsufficientCommands
89
89
  @logger.warn('Relp client incapable of syslog')
90
- rescue IOError, Interrupted
91
- if @interrupted
92
- # Intended shutdown, get out of the loop
93
- @relp_server.shutdown
94
- break
95
- else
96
- # Else it was a genuine IOError caused by something else, so propagate it up..
97
- raise
98
- end
90
+ rescue IOError
91
+ break if @interrupted
92
+ raise
93
+ rescue LogStash::ShutdownSignal
94
+ @interrupted = true
95
+ break
99
96
  end
100
97
  end # loop
101
98
  end # def run
102
99
 
103
100
  def teardown
104
101
  @interrupted = true
105
- @thread.raise(Interrupted.new)
102
+ if @relp_server
103
+ @relp_server.shutdown rescue nil
104
+ @relp_server = nil
105
+ end
106
106
  end
107
107
  end # class LogStash::Inputs::Relp
108
108
 
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
 
3
3
  s.name = 'logstash-input-relp'
4
- s.version = '0.1.3'
4
+ s.version = '0.1.4'
5
5
  s.licenses = ['Apache License (2.0)']
6
6
  s.summary = "Read RELP events over a TCP socket."
7
7
  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"
@@ -3,12 +3,12 @@ require "logstash/devutils/rspec/spec_helper"
3
3
  require "socket"
4
4
  require "logstash/util/relp"
5
5
 
6
- describe "inputs/relp", :socket => true do
6
+ describe "inputs/relp" do
7
7
 
8
- describe "Single client connection" do
8
+ it "should do single client connection" do
9
9
  event_count = 10
10
10
  port = 5511
11
- config <<-CONFIG
11
+ conf = <<-CONFIG
12
12
  input {
13
13
  relp {
14
14
  type => "blah"
@@ -17,29 +17,23 @@ describe "inputs/relp", :socket => true do
17
17
  }
18
18
  CONFIG
19
19
 
20
- input do |pipeline, queue|
21
- th = Thread.new { pipeline.run }
22
- sleep 0.1 while !pipeline.ready?
23
-
24
- #Send events from clients
20
+ events = input(conf) do |pipeline, queue|
25
21
  client = RelpClient.new("0.0.0.0", port, ["syslog"])
26
22
  event_count.times do |value|
27
23
  client.syslog_write("Hello #{value}")
28
24
  end
25
+ event_count.times.collect { queue.pop }
26
+ end
29
27
 
30
- events = event_count.times.collect { queue.pop }
31
- event_count.times do |i|
32
- insist { events[i]["message"] } == "Hello #{i}"
33
- end
34
-
35
- pipeline.shutdown
36
- th.join
37
- end # input
28
+ event_count.times do |i|
29
+ insist { events[i]["message"] } == "Hello #{i}"
30
+ end
38
31
  end
39
- describe "Two client connection" do
32
+
33
+ it "should do two client connection" do
40
34
  event_count = 100
41
35
  port = 5512
42
- config <<-CONFIG
36
+ conf = <<-CONFIG
43
37
  input {
44
38
  relp {
45
39
  type => "blah"
@@ -48,22 +42,19 @@ describe "inputs/relp", :socket => true do
48
42
  }
49
43
  CONFIG
50
44
 
51
- input do |pipeline, queue|
52
- Thread.new { pipeline.run }
53
- sleep 0.1 while !pipeline.ready?
54
-
55
- #Send events from clients sockets
45
+ events = input(conf) do |pipeline, queue|
56
46
  client = RelpClient.new("0.0.0.0", port, ["syslog"])
57
47
  client2 = RelpClient.new("0.0.0.0", port, ["syslog"])
58
48
 
59
- event_count.times do |value|
49
+ event_count.times do
60
50
  client.syslog_write("Hello from client")
61
51
  client2.syslog_write("Hello from client 2")
62
52
  end
63
53
 
64
- events = (event_count*2).times.collect { queue.pop }
65
- insist { events.select{|event| event["message"]=="Hello from client" }.size } == event_count
66
- insist { events.select{|event| event["message"]=="Hello from client 2" }.size } == event_count
67
- end # input
54
+ (event_count * 2).times.map{queue.pop}
55
+ end
56
+
57
+ insist { events.select{|event| event["message"] == "Hello from client" }.size } == event_count
58
+ insist { events.select{|event| event["message"] == "Hello from client 2" }.size } == event_count
68
59
  end
69
60
  end
metadata CHANGED
@@ -1,17 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: logstash-input-relp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Elasticsearch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-26 00:00:00.000000000 Z
11
+ date: 2015-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- requirement: !ruby/object:Gem::Requirement
14
+ name: logstash-core
15
+ version_requirements: !ruby/object:Gem::Requirement
15
16
  requirements:
16
17
  - - '>='
17
18
  - !ruby/object:Gem::Version
@@ -19,10 +20,7 @@ dependencies:
19
20
  - - <
20
21
  - !ruby/object:Gem::Version
21
22
  version: 2.0.0
22
- name: logstash-core
23
- prerelease: false
24
- type: :runtime
25
- version_requirements: !ruby/object:Gem::Requirement
23
+ requirement: !ruby/object:Gem::Requirement
26
24
  requirements:
27
25
  - - '>='
28
26
  - !ruby/object:Gem::Version
@@ -30,34 +28,36 @@ dependencies:
30
28
  - - <
31
29
  - !ruby/object:Gem::Version
32
30
  version: 2.0.0
31
+ prerelease: false
32
+ type: :runtime
33
33
  - !ruby/object:Gem::Dependency
34
+ name: logstash-codec-plain
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - '>='
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
34
40
  requirement: !ruby/object:Gem::Requirement
35
41
  requirements:
36
42
  - - '>='
37
43
  - !ruby/object:Gem::Version
38
44
  version: '0'
39
- name: logstash-codec-plain
40
45
  prerelease: false
41
46
  type: :runtime
47
+ - !ruby/object:Gem::Dependency
48
+ name: logstash-devutils
42
49
  version_requirements: !ruby/object:Gem::Requirement
43
50
  requirements:
44
51
  - - '>='
45
52
  - !ruby/object:Gem::Version
46
53
  version: '0'
47
- - !ruby/object:Gem::Dependency
48
54
  requirement: !ruby/object:Gem::Requirement
49
55
  requirements:
50
56
  - - '>='
51
57
  - !ruby/object:Gem::Version
52
58
  version: '0'
53
- name: logstash-devutils
54
59
  prerelease: false
55
60
  type: :development
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - '>='
59
- - !ruby/object:Gem::Version
60
- version: '0'
61
61
  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
62
62
  email: info@elasticsearch.com
63
63
  executables: []
@@ -96,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
96
96
  version: '0'
97
97
  requirements: []
98
98
  rubyforge_project:
99
- rubygems_version: 2.4.5
99
+ rubygems_version: 2.1.9
100
100
  signing_key:
101
101
  specification_version: 4
102
102
  summary: Read RELP events over a TCP socket.