fluent-plugin-nats 0.0.5 → 0.1.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 774b17902a6d2b133d83d093ae6ea1b2e1767112
4
+ data.tar.gz: 6d75ec076c1ab6e82916bd43da7101191a34d5b4
5
+ SHA512:
6
+ metadata.gz: 8dc09878eeee36105446dc2a07669f9cd57c55547d2c430fc1be0f944dcddaa45d94335411474a420639a07cb672078c7caaf8917f721d8136bbf16b24fd0fe7
7
+ data.tar.gz: 5f8a5cfbb0190f7600c8450d8e82afaeaaee9368da6e456d3bb11e0f61d289f430630c0d9c0bfe868d1382bee54b5212efb2ca8887ffa7a312aa039e448df746
data/.gitignore CHANGED
@@ -2,6 +2,7 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
+ Gemfile.lock
5
6
  coverage
6
7
  InstalledFiles
7
8
  lib/bundler/man
@@ -1,4 +1,16 @@
1
1
  language: ruby
2
2
  rvm:
3
- - 1.9.2
4
- - 1.9.3
3
+ - 2.4.2
4
+ - 2.3.5
5
+ - 2.2
6
+ - 2.1
7
+
8
+ env:
9
+ global:
10
+ GNATSD_VERSION: 1.0.4
11
+
12
+ before_install:
13
+ - sudo rm -f /usr/local/bin/gnatsd
14
+ - curl -L https://github.com/nats-io/gnatsd/releases/download/v${GNATSD_VERSION}/gnatsd-v${GNATSD_VERSION}-linux-amd64.zip > /tmp/gnatsd-v${GNATSD_VERSION}-linux-amd64.zip
15
+ - unzip /tmp/gnatsd-v${GNATSD_VERSION}-linux-amd64.zip -d /tmp
16
+ - sudo mv /tmp/gnatsd-v${GNATSD_VERSION}-linux-amd64/gnatsd /usr/local/bin/gnatsd
data/README.md CHANGED
@@ -12,7 +12,7 @@ Setup the NATS input:
12
12
 
13
13
  ~~~~~
14
14
  <source>
15
- type nats
15
+ @type nats
16
16
  tag nats
17
17
  host localhost
18
18
  port 4222
@@ -27,7 +27,7 @@ Setup the match output:
27
27
 
28
28
  ~~~~
29
29
  <match nats.fluent.**>
30
- type stdout
30
+ @type stdout
31
31
  </match>
32
32
  ~~~~
33
33
 
data/Rakefile CHANGED
@@ -8,7 +8,8 @@ Rake::TestTask.new(:test) do |test|
8
8
  test.test_files = Dir['test/plugin/*.rb']
9
9
  test.ruby_opts = ['-rubygems'] if defined? Gem
10
10
  test.ruby_opts << '-I.'
11
- test.verbose = true
11
+ test.verbose = false
12
+ test.warning = false
12
13
  end
13
14
 
14
15
  task :default => :test
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
5
  gem.name = "fluent-plugin-nats"
6
- gem.version = File.read("VERSION").strip
6
+ gem.version = "0.1.0"
7
7
  gem.authors = ["Eduardo Aceituno"]
8
8
  gem.email = ["achied@gmail.com"]
9
9
  gem.homepage = "https://github.com/achied/fluent-plugin-nats"
@@ -15,9 +15,10 @@ Gem::Specification.new do |gem|
15
15
  gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
16
  gem.require_paths = ["lib"]
17
17
 
18
- gem.add_dependency "fluentd", ">= 0.10.7"
18
+ gem.add_dependency "eventmachine", ">= 0.12.10"
19
+ gem.add_dependency "fluentd", ">= 0.10.7", "< 0.14"
19
20
  gem.add_dependency "nats", ">= 0.4.22"
20
- gem.add_dependency "eventmachine", "= 0.12.10"
21
-
21
+
22
22
  gem.add_development_dependency "rake", ">= 0.9.2"
23
+ gem.add_development_dependency "test-unit", "> 3.1"
23
24
  end
@@ -4,7 +4,7 @@ module Fluent
4
4
 
5
5
  config_param :host, :string, :default => "localhost"
6
6
  config_param :user, :string, :default => "nats"
7
- config_param :password, :string, :default => "nats"
7
+ config_param :password, :string, :default => "nats", :secret => true
8
8
  config_param :port, :integer, :default => 4222
9
9
  config_param :queue, :string, :default => "fluent.>"
10
10
  config_param :tag, :string, :default => "nats"
@@ -21,7 +21,7 @@ module Fluent
21
21
 
22
22
  def configure(conf)
23
23
  super
24
- @conf = conf
24
+
25
25
  unless @host && @queue
26
26
  raise ConfigError, "'host' and 'queue' must be all specified."
27
27
  end
@@ -40,7 +40,7 @@ module Fluent
40
40
  super
41
41
  run_reactor_thread
42
42
  @thread = Thread.new(&method(:run))
43
- $log.info "listening nats on #{@uri}/#{@queue}"
43
+ log.info "listening nats on #{@uri}/#{@queue}"
44
44
  end
45
45
 
46
46
  def shutdown
@@ -61,11 +61,11 @@ module Fluent
61
61
  begin
62
62
  msg_json = JSON.parse(msg)
63
63
  rescue JSON::ParserError => e
64
- $log.error "Failed parsing JSON #{e.inspect}. Passing as a normal string"
64
+ log.error "Failed parsing JSON #{e.inspect}. Passing as a normal string"
65
65
  msg_json = msg
66
66
  end
67
67
  time = Engine.now
68
- Engine.emit(tag, time, msg_json)
68
+ router.emit(tag, time, msg_json || {})
69
69
  end
70
70
  end
71
71
  }
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "nats/client"
5
+ require "optparse"
6
+ require "uri"
7
+
8
+ def main(argv)
9
+ uri = nil
10
+ queue = nil
11
+ message = nil
12
+ parser = OptionParser.new
13
+ parser.on("--uri=URI", "NATS server URI") do |value|
14
+ uri = URI.parse(value)
15
+ end
16
+ parser.on("--queue=QUEUE", "Queue names") do |value|
17
+ queue = value
18
+ end
19
+ parser.on("--message=MESSAGE", "Message JSON") do |value|
20
+ message = value[1..-2]
21
+ end
22
+ begin
23
+ parser.parse!
24
+ rescue OptionParser::ParseError => ex
25
+ puts ex.message
26
+ end
27
+ options = {
28
+ uri: uri.to_s
29
+ }
30
+ options[:user] = uri.user if uri.user
31
+ options[:pass] = uri.password if uri.password
32
+ NATS.start(options) do
33
+ NATS.publish(queue, message) do
34
+ sleep 0.5
35
+ NATS.stop
36
+ end
37
+ end
38
+ end
39
+
40
+ main(ARGV)
@@ -0,0 +1,234 @@
1
+ require 'test/unit'
2
+ require 'fluent/test'
3
+ require 'lib/fluent/plugin/in_nats.rb'
4
+ require 'nats/client'
5
+ require 'test_helper'
6
+
7
+ class NATSInputTest < Test::Unit::TestCase
8
+ include NATSTestHelper
9
+
10
+ CONFIG = %[
11
+ port 4222
12
+ host localhost
13
+ user nats
14
+ password nats
15
+ ]
16
+
17
+ def basic_queue_conf
18
+ CONFIG + %[
19
+ queue fluent.>
20
+ ]
21
+ end
22
+
23
+ def multiple_queue_conf
24
+ CONFIG + %[
25
+ queue fluent.>, fluent2.>
26
+ ]
27
+ end
28
+
29
+ def ssl_conf
30
+ basic_queue_conf + %[
31
+ ssl true
32
+ ]
33
+ end
34
+
35
+ def create_driver(conf)
36
+ Fluent::Test::InputTestDriver.new(Fluent::NATSInput).configure(conf)
37
+ end
38
+
39
+ sub_test_case "configure" do
40
+ test "basic" do
41
+ d = create_driver basic_queue_conf
42
+ assert_equal 4222, d.instance.port
43
+ assert_equal 'localhost', d.instance.host
44
+ assert_equal 'nats', d.instance.user
45
+ assert_equal 'nats', d.instance.password
46
+ assert_equal 'fluent.>', d.instance.queue
47
+ end
48
+
49
+ test "multiple queue" do
50
+ d = create_driver multiple_queue_conf
51
+ assert_equal 4222, d.instance.port
52
+ assert_equal 'localhost', d.instance.host
53
+ assert_equal 'nats', d.instance.user
54
+ assert_equal 'nats', d.instance.password
55
+ assert_equal 'fluent.>, fluent2.>', d.instance.queue
56
+ end
57
+
58
+ test "basic with ssl" do
59
+ d = create_driver ssl_conf
60
+ assert_equal 4222, d.instance.port
61
+ assert_equal 'localhost', d.instance.host
62
+ assert_equal 'nats', d.instance.user
63
+ assert_equal 'nats', d.instance.password
64
+ assert_equal 'fluent.>', d.instance.queue
65
+ assert_equal true, d.instance.ssl
66
+ end
67
+ end
68
+
69
+ sub_test_case "events" do
70
+ test "with credentials" do
71
+ d = create_driver basic_queue_conf
72
+
73
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
74
+ Fluent::Engine.now = time
75
+
76
+ d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
77
+ d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
78
+
79
+ uri = generate_uri(d)
80
+
81
+ run_server(uri) do
82
+ d.run do
83
+ d.expected_emits.each { |tag, _time, record|
84
+ send(uri, tag[5..-1], record)
85
+ sleep 0.5
86
+ }
87
+ end
88
+ end
89
+ end
90
+
91
+ test "without credentials" do
92
+ d = create_driver basic_queue_conf
93
+
94
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
95
+ Fluent::Engine.now = time
96
+
97
+ d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
98
+ d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
99
+
100
+ uri = generate_uri(d)
101
+
102
+ run_server(uri) do
103
+ d.run do
104
+ d.expected_emits.each { |tag, time, record|
105
+ send(uri, tag[5..-1], record)
106
+ sleep 0.5
107
+ }
108
+ end
109
+ end
110
+ end
111
+
112
+ test "multiple queues" do
113
+ d = create_driver multiple_queue_conf
114
+
115
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
116
+ Fluent::Engine.now = time
117
+
118
+ d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
119
+ d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
120
+ d.expect_emit "nats.fluent2.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
121
+ d.expect_emit "nats.fluent2.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
122
+
123
+ uri = generate_uri(d)
124
+
125
+ run_server(uri) do
126
+ d.run do
127
+ d.expected_emits.each { |tag, time, record|
128
+ send(uri, tag[5..-1], record)
129
+ sleep 0.5
130
+ }
131
+ end
132
+ end
133
+ end
134
+
135
+ test "without fluent timestamp" do
136
+ d = create_driver basic_queue_conf
137
+
138
+ time = Time.now.to_i
139
+ Fluent::Engine.now = time
140
+
141
+ d.expect_emit "nats.fluent.test1", time, {"message"=>'nats'}
142
+
143
+ uri = generate_uri(d)
144
+ run_server(uri) do
145
+ d.run do
146
+ d.expected_emits.each do |tag, time, record|
147
+ send(uri, tag[5..-1], record)
148
+ sleep 0.5
149
+ end
150
+ end
151
+ end
152
+ end
153
+
154
+ test "arrays" do
155
+ d = create_driver basic_queue_conf
156
+
157
+ time = Time.now.to_i
158
+ Fluent::Engine.now = time
159
+
160
+ d.expect_emit "nats.fluent.empty_array", time, []
161
+ d.expect_emit "nats.fluent.string_array", time, %w(one two three)
162
+
163
+ user = d.instance.user
164
+ password = d.instance.password
165
+ uri = "nats://#{user}:#{password}@#{d.instance.host}:#{d.instance.port}"
166
+ run_server(uri) do
167
+ d.run do
168
+ d.expected_emits.each do |tag, time, record|
169
+ send(uri, tag[5..-1], record)
170
+ sleep 0.5
171
+ end
172
+ end
173
+ end
174
+ end
175
+
176
+ test "empty publish string" do
177
+ d = create_driver basic_queue_conf
178
+
179
+ time = Time.now.to_i
180
+ Fluent::Engine.now = time
181
+
182
+ d.expect_emit "nats.fluent.nil", time, {}
183
+
184
+ uri = generate_uri(d)
185
+ run_server(uri) do
186
+ d.run do
187
+ d.expected_emits.each do |tag, time, record|
188
+ send(uri, tag[5..-1], nil)
189
+ sleep 0.5
190
+ end
191
+ end
192
+ end
193
+ end
194
+
195
+ test "regular publish string" do
196
+ d = create_driver basic_queue_conf
197
+
198
+ time = Time.now.to_i
199
+ Fluent::Engine.now = time
200
+
201
+ d.expect_emit "nats.fluent.string", time, "Lorem ipsum dolor sit amet"
202
+
203
+ uri = generate_uri(d)
204
+ run_server(uri) do
205
+ d.run do
206
+ d.expected_emits.each do |tag, time, record|
207
+ send(uri, tag[5..-1], "Lorem ipsum dolor sit amet")
208
+ sleep 0.5
209
+ end
210
+ end
211
+ end
212
+ end
213
+ end
214
+
215
+ def setup
216
+ Fluent::Test.setup
217
+ end
218
+
219
+ def send(uri, tag, msg)
220
+ system("test/nats-publish-message.rb", *%W[--uri=#{uri} --queue=#{tag} --message='#{msg.to_json}'])
221
+ end
222
+
223
+ def generate_uri(driver)
224
+ user = driver.instance.user
225
+ pass = driver.instance.password
226
+ host = driver.instance.host
227
+ port = driver.instance.port
228
+ if user && pass
229
+ "nats://#{user}:#{pass}@#{host}:#{port}"
230
+ else
231
+ "nats://#{host}:#{port}"
232
+ end
233
+ end
234
+ end
@@ -28,44 +28,26 @@ end
28
28
  require 'nats/client'
29
29
 
30
30
  module NATSTestHelper
31
-
32
- def server_pid
33
- @pid ||= File.read(@pid_file).chomp.to_i
34
- end
35
-
36
- def setup_nats_server(uri)
37
- @uri = URI.parse(uri)
38
- @pid_file = '/tmp/test-nats.pid'
39
- args = "-p #{@uri.port} -P #{@pid_file}"
40
- args += " --user #{@uri.user}" unless (@uri.user.nil? || @uri.user.empty?)
41
- args += " --pass #{@uri.password}" unless (@uri.password.nil? || @uri.password.empty?)
42
- args += " #{@flags}" if @flags
43
- args += ' -d'
44
- end
45
-
46
- def kill_nats
47
- if File.exists? @pid_file
48
- %x[kill -9 #{server_pid} 2> /dev/null]
49
- %x[rm #{@pid_file} 2> /dev/null]
50
- %x[rm #{NATS::AUTOSTART_LOG_FILE} 2> /dev/null]
51
- @pid = nil
31
+ def run_server(uri)
32
+ uri = URI.parse(uri)
33
+ unless NATS.server_running?(uri)
34
+ args = prepare_args(uri)
35
+ # We can invoke gnatsd before run test
36
+ pid = spawn("gnatsd", *args, out: "/dev/null", err: "/dev/null")
37
+ NATS.wait_for_server(uri, 10)
52
38
  end
39
+ yield
40
+ rescue
41
+ raise
42
+ ensure
43
+ Process.kill(:INT, pid) if pid
53
44
  end
54
-
55
- def start_nats(uri)
56
-
57
- args = setup_nats_server(uri)
58
45
 
59
- if NATS.server_running? @uri
60
- @was_running = true
61
- return 0
62
- end
63
-
64
- %x[bundle exec nats-server #{args} 2> /dev/null]
65
- exitstatus = $?.exitstatus
66
- NATS.wait_for_server(@uri, 10)
67
- exitstatus
46
+ def prepare_args(uri)
47
+ args = ["-p", uri.port.to_s]
48
+ args.push("--user", uri.user) if uri.user
49
+ args.push("--pass", uri.password) if uri.password
50
+ args.push(*@flags) if @flags
51
+ args
68
52
  end
69
53
  end
70
-
71
-
metadata CHANGED
@@ -1,80 +1,91 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
5
- prerelease:
4
+ version: 0.1.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Eduardo Aceituno
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-02-27 00:00:00.000000000 Z
11
+ date: 2017-10-25 00:00:00.000000000 Z
13
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: eventmachine
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 0.12.10
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 0.12.10
14
27
  - !ruby/object:Gem::Dependency
15
28
  name: fluentd
16
29
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
30
  requirements:
19
- - - ! '>='
31
+ - - ">="
20
32
  - !ruby/object:Gem::Version
21
33
  version: 0.10.7
34
+ - - "<"
35
+ - !ruby/object:Gem::Version
36
+ version: '0.14'
22
37
  type: :runtime
23
38
  prerelease: false
24
39
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
40
  requirements:
27
- - - ! '>='
41
+ - - ">="
28
42
  - !ruby/object:Gem::Version
29
43
  version: 0.10.7
44
+ - - "<"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.14'
30
47
  - !ruby/object:Gem::Dependency
31
48
  name: nats
32
49
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
50
  requirements:
35
- - - ! '>='
51
+ - - ">="
36
52
  - !ruby/object:Gem::Version
37
53
  version: 0.4.22
38
54
  type: :runtime
39
55
  prerelease: false
40
56
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
57
  requirements:
43
- - - ! '>='
58
+ - - ">="
44
59
  - !ruby/object:Gem::Version
45
60
  version: 0.4.22
46
61
  - !ruby/object:Gem::Dependency
47
- name: eventmachine
62
+ name: rake
48
63
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
64
  requirements:
51
- - - '='
65
+ - - ">="
52
66
  - !ruby/object:Gem::Version
53
- version: 0.12.10
54
- type: :runtime
67
+ version: 0.9.2
68
+ type: :development
55
69
  prerelease: false
56
70
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
71
  requirements:
59
- - - '='
72
+ - - ">="
60
73
  - !ruby/object:Gem::Version
61
- version: 0.12.10
74
+ version: 0.9.2
62
75
  - !ruby/object:Gem::Dependency
63
- name: rake
76
+ name: test-unit
64
77
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
78
  requirements:
67
- - - ! '>='
79
+ - - ">"
68
80
  - !ruby/object:Gem::Version
69
- version: 0.9.2
81
+ version: '3.1'
70
82
  type: :development
71
83
  prerelease: false
72
84
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
85
  requirements:
75
- - - ! '>='
86
+ - - ">"
76
87
  - !ruby/object:Gem::Version
77
- version: 0.9.2
88
+ version: '3.1'
78
89
  description: nats plugin for fluentd, an event collector
79
90
  email:
80
91
  - achied@gmail.com
@@ -82,40 +93,38 @@ executables: []
82
93
  extensions: []
83
94
  extra_rdoc_files: []
84
95
  files:
85
- - .gitignore
86
- - .travis.yml
96
+ - ".gitignore"
97
+ - ".travis.yml"
87
98
  - COPYING
88
99
  - Gemfile
89
- - Gemfile.lock
90
100
  - README.md
91
101
  - Rakefile
92
- - VERSION
93
102
  - fluent-plugin-nats.gemspec
94
103
  - lib/fluent/plugin/in_nats.rb
95
- - test/plugin/in_nats.rb
104
+ - test/nats-publish-message.rb
105
+ - test/plugin/test_in_nats.rb
96
106
  - test/test_helper.rb
97
107
  homepage: https://github.com/achied/fluent-plugin-nats
98
108
  licenses: []
109
+ metadata: {}
99
110
  post_install_message:
100
111
  rdoc_options: []
101
112
  require_paths:
102
113
  - lib
103
114
  required_ruby_version: !ruby/object:Gem::Requirement
104
- none: false
105
115
  requirements:
106
- - - ! '>='
116
+ - - ">="
107
117
  - !ruby/object:Gem::Version
108
118
  version: '0'
109
119
  required_rubygems_version: !ruby/object:Gem::Requirement
110
- none: false
111
120
  requirements:
112
- - - ! '>='
121
+ - - ">="
113
122
  - !ruby/object:Gem::Version
114
123
  version: '0'
115
124
  requirements: []
116
125
  rubyforge_project:
117
- rubygems_version: 1.8.24
126
+ rubygems_version: 2.6.13
118
127
  signing_key:
119
- specification_version: 3
128
+ specification_version: 4
120
129
  summary: nats plugin for fluentd, an event collector
121
130
  test_files: []
@@ -1,45 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- fluent-plugin-nats (0.0.5)
5
- eventmachine (= 0.12.10)
6
- fluentd (>= 0.10.7)
7
- nats (>= 0.4.22)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- cool.io (1.1.0)
13
- iobuffer (>= 1.0.0)
14
- daemons (1.1.9)
15
- eventmachine (0.12.10)
16
- fluentd (0.10.28)
17
- cool.io (~> 1.1.0)
18
- http_parser.rb (~> 0.5.1)
19
- json (>= 1.4.3)
20
- msgpack (~> 0.4.4)
21
- yajl-ruby (~> 1.0)
22
- http_parser.rb (0.5.3)
23
- iobuffer (1.1.2)
24
- json (1.7.5)
25
- json_pure (1.7.5)
26
- msgpack (0.4.7)
27
- nats (0.4.28)
28
- daemons (>= 1.1.5)
29
- eventmachine (= 0.12.10)
30
- json_pure (>= 1.7.3)
31
- thin (>= 1.4.1)
32
- rack (1.4.1)
33
- rake (0.9.2.2)
34
- thin (1.4.1)
35
- daemons (>= 1.0.9)
36
- eventmachine (>= 0.12.6)
37
- rack (>= 1.0.0)
38
- yajl-ruby (1.1.0)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- fluent-plugin-nats!
45
- rake (>= 0.9.2)
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.0.5
@@ -1,223 +0,0 @@
1
- require 'test/unit'
2
- require 'fluent/test'
3
- require 'lib/fluent/plugin/in_nats.rb'
4
- require 'nats/client'
5
- require 'test_helper'
6
-
7
- class NATSInputTest < Test::Unit::TestCase
8
- include NATSTestHelper
9
-
10
- CONFIG = %[
11
- port 4222
12
- host localhost
13
- user nats
14
- password nats
15
- ]
16
-
17
- def basic_queue_conf
18
- conf = CONFIG + %[
19
- queue fluent.>
20
- ]
21
- end
22
-
23
- def multiple_queue_conf
24
- conf = CONFIG + %[
25
- queue fluent.>, fluent2.>
26
- ]
27
- end
28
-
29
- def ssl_conf
30
- conf = basic_queue_conf + %[
31
- ssl true
32
- ]
33
- end
34
-
35
- def create_driver(conf=CONFIG)
36
- Fluent::Test::InputTestDriver.new(Fluent::NATSInput).configure(conf)
37
- end
38
-
39
- def test_configure_basic
40
- d = create_driver basic_queue_conf
41
- assert_equal 4222, d.instance.port
42
- assert_equal 'localhost', d.instance.host
43
- assert_equal 'nats', d.instance.user
44
- assert_equal 'nats', d.instance.password
45
- assert_equal 'fluent.>', d.instance.queue
46
- end
47
-
48
- def test_configure_multiple_queue
49
- d = create_driver multiple_queue_conf
50
- assert_equal 4222, d.instance.port
51
- assert_equal 'localhost', d.instance.host
52
- assert_equal 'nats', d.instance.user
53
- assert_equal 'nats', d.instance.password
54
- assert_equal 'fluent.>, fluent2.>', d.instance.queue
55
- end
56
-
57
- def test_configure_basic_with_ssl
58
- d = create_driver ssl_conf
59
- assert_equal 4222, d.instance.port
60
- assert_equal 'localhost', d.instance.host
61
- assert_equal 'nats', d.instance.user
62
- assert_equal 'nats', d.instance.password
63
- assert_equal 'fluent.>', d.instance.queue
64
- assert_equal true, d.instance.ssl
65
- end
66
-
67
- def test_emit_with_credentials
68
- d = create_driver basic_queue_conf
69
-
70
- time = Time.parse("2011-01-02 13:14:15 UTC").to_i
71
- Fluent::Engine.now = time
72
-
73
- d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
74
- d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
75
-
76
- uri = "nats://#{d.instance.user}:#{d.instance.password}@#{d.instance.host}:#{d.instance.port}"
77
-
78
- start_nats(uri)
79
- d.run do
80
- d.expected_emits.each { |tag, time, record|
81
- send(uri, tag[5..-1], record)
82
- sleep 0.5
83
- }
84
- end
85
- kill_nats
86
- end
87
-
88
- def test_emit_without_credentials
89
- d = create_driver basic_queue_conf
90
-
91
- time = Time.parse("2011-01-02 13:14:15 UTC").to_i
92
- Fluent::Engine.now = time
93
-
94
- d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
95
- d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
96
-
97
- uri = "nats://#{d.instance.host}:#{d.instance.port}"
98
-
99
- start_nats(uri)
100
- d.run do
101
- d.expected_emits.each { |tag, time, record|
102
- send(uri, tag[5..-1], record)
103
- sleep 0.5
104
- }
105
- end
106
- kill_nats
107
- end
108
-
109
- def test_emit_multiple_queues
110
- d = create_driver multiple_queue_conf
111
-
112
- time = Time.parse("2011-01-02 13:14:15 UTC").to_i
113
- Fluent::Engine.now = time
114
-
115
- d.expect_emit "nats.fluent.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
116
- d.expect_emit "nats.fluent.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
117
- d.expect_emit "nats.fluent2.test1", time, {"message"=>'nats', "fluent_timestamp"=>time}
118
- d.expect_emit "nats.fluent2.test2", time, {"message"=>'nats', "fluent_timestamp"=>time}
119
-
120
- uri = "nats://#{d.instance.host}:#{d.instance.port}"
121
-
122
- start_nats(uri)
123
- d.run do
124
- d.expected_emits.each { |tag, time, record|
125
- send(uri, tag[5..-1], record)
126
- sleep 0.5
127
- }
128
- end
129
- kill_nats
130
- end
131
-
132
-
133
- def test_emit_without_fluent_timestamp
134
- d = create_driver basic_queue_conf
135
-
136
- time = Time.now.to_i
137
- Fluent::Engine.now = time
138
-
139
- d.expect_emit "nats.fluent.test1", time, {"message"=>'nats'}
140
-
141
- uri = "nats://#{d.instance.host}:#{d.instance.port}"
142
- start_nats(uri)
143
- d.run do
144
- d.expected_emits.each do |tag, time, record|
145
- send(uri, tag[5..-1], record)
146
- sleep 0.5
147
- end
148
- end
149
- kill_nats
150
- end
151
-
152
- def test_emit_arrays
153
- d = create_driver basic_queue_conf
154
-
155
- time = Time.now.to_i
156
- Fluent::Engine.now = time
157
-
158
- d.expect_emit "nats.fluent.empty_array", time, []
159
- d.expect_emit "nats.fluent.string_array", time, %w(one two three)
160
-
161
- uri = "nats://#{d.instance.host}:#{d.instance.port}"
162
- start_nats(uri)
163
- d.run do
164
- d.expected_emits.each do |tag, time, record|
165
- send(uri, tag[5..-1], record)
166
- sleep 0.5
167
- end
168
- end
169
- kill_nats
170
- end
171
-
172
- def test_empty_publish_string
173
- d = create_driver basic_queue_conf
174
-
175
- time = Time.now.to_i
176
- Fluent::Engine.now = time
177
-
178
- d.expect_emit "nats.fluent.nil", time, nil
179
-
180
- uri = "nats://#{d.instance.host}:#{d.instance.port}"
181
- start_nats(uri)
182
- d.run do
183
- d.expected_emits.each do |tag, time, record|
184
- send(uri, tag[5..-1], nil)
185
- sleep 0.5
186
- end
187
- end
188
- kill_nats
189
- end
190
-
191
- def test_regular_publish_string
192
- d = create_driver basic_queue_conf
193
-
194
- time = Time.now.to_i
195
- Fluent::Engine.now = time
196
-
197
- d.expect_emit "nats.fluent.string", time, "Lorem ipsum dolor sit amet"
198
-
199
- uri = "nats://#{d.instance.host}:#{d.instance.port}"
200
- start_nats(uri)
201
- d.run do
202
- d.expected_emits.each do |tag, time, record|
203
- send(uri, tag[5..-1], "Lorem ipsum dolor sit amet")
204
- sleep 0.5
205
- end
206
- end
207
- kill_nats
208
- end
209
-
210
- def setup
211
- Fluent::Test.setup
212
- end
213
-
214
- def send(uri, tag, msg)
215
- EM.run {
216
- n = NATS.connect(:uri => uri)
217
- n.publish(tag,msg.to_json)
218
- n.close
219
- }
220
- end
221
- end
222
-
223
-