fluent-plugin-nats 0.0.1 → 0.0.2

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.
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
data/README.md CHANGED
@@ -3,6 +3,9 @@ fluent-plugin-nats
3
3
 
4
4
  NATS plugin for fluent Event Collector
5
5
 
6
+ [![Build Status](https://secure.travis-ci.org/achied/fluent-plugin-nats.png)](http://travis-ci.org/achied/fluent-plugin-nats)
7
+
8
+
6
9
  # Getting Started
7
10
  Setup the NATS input:
8
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.1
1
+ 0.0.2
@@ -19,6 +19,7 @@ module Fluent
19
19
  def configure(conf)
20
20
  super
21
21
  @conf = conf
22
+ @uri = "nats://#{user}:#{password}@#{host}:#{port}"
22
23
  unless @host && @queue
23
24
  raise ConfigError, "'host' and 'queue' must be all specified."
24
25
  end
@@ -26,7 +27,7 @@ module Fluent
26
27
 
27
28
  def start
28
29
  super
29
- $log.info "listening nats on nats://#{host}:#{port}/#{queue}"
30
+ $log.info "listening nats on #{@uri}/#{@queue}"
30
31
  @thread = Thread.new(&method(:run))
31
32
  end
32
33
 
@@ -37,7 +38,7 @@ module Fluent
37
38
  end
38
39
 
39
40
  def run
40
- NATS.start {
41
+ NATS.start(:uri => @uri) {
41
42
  NATS.subscribe(@queue) do |msg, reply, sub|
42
43
  Engine.emit(sub, 0, msg)
43
44
  end
@@ -2,8 +2,10 @@ require 'test/unit'
2
2
  require 'fluent/test'
3
3
  require 'lib/fluent/plugin/in_nats'
4
4
  require 'nats/client'
5
+ require 'test_helper'
5
6
 
6
7
  class NATSInputTest < Test::Unit::TestCase
8
+ include NATSTestHelper
7
9
 
8
10
  CONFIG = %[
9
11
  port 4222
@@ -13,10 +15,11 @@ class NATSInputTest < Test::Unit::TestCase
13
15
  queue fluent.>
14
16
  ]
15
17
 
18
+
16
19
  def create_driver(conf=CONFIG)
17
20
  Fluent::Test::InputTestDriver.new(Fluent::NATSInput).configure(conf)
18
21
  end
19
-
22
+
20
23
  def test_configure
21
24
  d = create_driver
22
25
  assert_equal 4222, d.instance.port
@@ -26,7 +29,7 @@ class NATSInputTest < Test::Unit::TestCase
26
29
  assert_equal 'fluent.>', d.instance.queue
27
30
  end
28
31
 
29
- def test_emit
32
+ def test_emit_with_credentials
30
33
  d = create_driver
31
34
 
32
35
  time = Time.parse("2011-01-02 13:14:15 UTC").to_i
@@ -35,21 +38,47 @@ class NATSInputTest < Test::Unit::TestCase
35
38
  d.expect_emit "fluent.test1", 0, {"message"=>'nats'}.to_json
36
39
  d.expect_emit "fluent.test2", 0, {"message"=>'nats'}.to_json
37
40
 
41
+ uri = "nats://#{d.instance.user}:#{d.instance.password}@#{d.instance.host}:#{d.instance.port}"
42
+
43
+ start_nats(uri)
38
44
  d.run do
39
45
  d.expected_emits.each { |tag, time, record|
40
- send(tag, record)
46
+ send(uri, tag, record)
41
47
  sleep 0.5
42
48
  }
43
49
  end
50
+ kill_nats
44
51
  end
45
52
 
53
+ def test_emit_without_credentials
54
+ d = create_driver
55
+
56
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
57
+ Fluent::Engine.now = time
58
+
59
+ d.expect_emit "fluent.test1", 0, {"message"=>'nats'}.to_json
60
+ d.expect_emit "fluent.test2", 0, {"message"=>'nats'}.to_json
61
+
62
+ uri = "nats://#{d.instance.host}:#{d.instance.port}"
63
+
64
+ start_nats(uri)
65
+ d.run do
66
+ d.expected_emits.each { |tag, time, record|
67
+ send(uri, tag, record)
68
+ sleep 0.5
69
+ }
70
+ end
71
+ kill_nats
72
+ end
73
+
74
+
46
75
  def setup
47
76
  Fluent::Test.setup
48
77
  end
49
78
 
50
- def send(tag, msg)
79
+ def send(uri, tag, msg)
51
80
  EM.run {
52
- n = NATS.connect
81
+ n = NATS.connect(:uri => uri)
53
82
  n.publish(tag,msg)
54
83
  n.close
55
84
  }
data/test/test_helper.rb CHANGED
@@ -22,7 +22,50 @@ unless ENV.has_key?('VERBOSE')
22
22
  $log = nulllogger
23
23
  end
24
24
 
25
- require 'fluent/plugin/in_nats'
26
-
27
25
  class Test::Unit::TestCase
28
26
  end
27
+
28
+ require 'nats/client'
29
+
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
52
+ end
53
+ end
54
+
55
+ def start_nats(uri)
56
+
57
+ args = setup_nats_server(uri)
58
+
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
68
+ end
69
+ end
70
+
71
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-nats
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-30 00:00:00.000000000 Z
12
+ date: 2012-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: fluentd
@@ -83,6 +83,7 @@ extensions: []
83
83
  extra_rdoc_files: []
84
84
  files:
85
85
  - .gitignore
86
+ - .travis.yml
86
87
  - COPYING
87
88
  - Gemfile
88
89
  - Gemfile.lock