fluent-plugin-ping-message 0.1.0 → 0.1.1

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: 4590741934c3f800f8cd3f65622b74f6408245ad
4
+ data.tar.gz: f97a6947379d8d9ace320234b4dc0b12c22089bd
5
+ SHA512:
6
+ metadata.gz: d633f0d812bdd513b4c7c9aa56f056bab8546659439c61f08a2f448fc093ad8a10fd5dd1cb41de666d900e5918ffda047cb65b075c019bf173756457a6c418ad
7
+ data.tar.gz: 6ded881210049fa94d42ea59e877c79cb5b106b7d73cc7a5f9949c6444f7ff733dbf63745f5d7af6a481ef70fb9390630dea18a6bf4f5b4bf2002794088fa599
data/.pryrc ADDED
@@ -0,0 +1,3 @@
1
+ Pry.commands.alias_command 'c', 'continue'
2
+ Pry.commands.alias_command 's', 'step'
3
+ Pry.commands.alias_command 'n', 'next'
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # fluent-plugin-ping-message
2
2
 
3
- Fluentd plugins:
3
+ [Fluentd](http://fluentd.org) plugins:
4
4
 
5
5
  * to generate ping messages for monitoring of heatbeats
6
6
  * to check ping messages not arrived, and emits notifications
data/Rakefile CHANGED
@@ -1,2 +1,12 @@
1
1
  #!/usr/bin/env rake
2
2
  require "bundler/gem_tasks"
3
+
4
+ require 'rake/testtask'
5
+ Rake::TestTask.new(:test) do |test|
6
+ test.libs << 'lib' << 'test'
7
+ test.pattern = 'test/**/test_*.rb'
8
+ test.verbose = true
9
+ end
10
+
11
+ task :default => :test
12
+
@@ -1,12 +1,13 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |gem|
3
3
  gem.name = "fluent-plugin-ping-message"
4
- gem.version = "0.1.0"
4
+ gem.version = "0.1.1"
5
5
  gem.authors = ["TAGOMORI Satoshi"]
6
6
  gem.email = ["tagomoris@gmail.com"]
7
7
  gem.description = %q{for heartbeat monitoring of Fluentd processes}
8
8
  gem.summary = %q{Fluentd plugin to send/check ping messages}
9
9
  gem.homepage = "https://github.com/tagomoris/fluent-plugin-ping-message"
10
+ gem.license = "APLv2"
10
11
 
11
12
  gem.files = `git ls-files`.split($\)
12
13
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
@@ -15,4 +16,7 @@ Gem::Specification.new do |gem|
15
16
 
16
17
  gem.add_runtime_dependency "fluentd"
17
18
  gem.add_runtime_dependency "fluent-mixin-config-placeholders"
19
+ gem.add_development_dependency "rake"
20
+ gem.add_development_dependency "pry"
21
+ gem.add_development_dependency "pry-nav"
18
22
  end
@@ -3,6 +3,11 @@ require 'fluent/mixin/config_placeholders'
3
3
  class Fluent::PingMessageInput < Fluent::Input
4
4
  Fluent::Plugin.register_input('ping_message', self)
5
5
 
6
+ # Define `log` method for v0.10.42 or earlier
7
+ unless method_defined?(:log)
8
+ define_method("log") { $log }
9
+ end
10
+
6
11
  include Fluent::Mixin::ConfigPlaceholders
7
12
 
8
13
  config_param :tag, :string, :default => 'ping'
@@ -3,6 +3,11 @@ require 'fluent/mixin/config_placeholders'
3
3
  class Fluent::PingMessageCheckerOutput < Fluent::Output
4
4
  Fluent::Plugin.register_output('ping_message_checker', self)
5
5
 
6
+ # Define `log` method for v0.10.42 or earlier
7
+ unless method_defined?(:log)
8
+ define_method("log") { $log }
9
+ end
10
+
6
11
  config_param :data_field, :string, :default => 'data'
7
12
 
8
13
  config_param :tag, :string
@@ -81,15 +86,21 @@ class Fluent::PingMessageCheckerOutput < Fluent::Output
81
86
  Fluent::Engine.emit(@tag, Fluent::Engine.now, {@data_field => data})
82
87
  end
83
88
  end
89
+
90
+ notifications
84
91
  end
85
92
 
86
93
  def watch
87
94
  @last_checked = Fluent::Engine.now
88
95
  loop do
89
96
  sleep 1
90
- if Fluent::Engine.now - @last_checked >= @check_interval
91
- check_and_flush()
92
- @last_checked = Fluent::Engine.now
97
+ begin
98
+ if Fluent::Engine.now - @last_checked >= @check_interval
99
+ check_and_flush()
100
+ @last_checked = Fluent::Engine.now
101
+ end
102
+ rescue => e
103
+ log.warn "out_ping_message_checker: #{e.class} #{e.message} #{e.backtrace.first}"
93
104
  end
94
105
  end
95
106
  end
@@ -103,5 +114,7 @@ class Fluent::PingMessageCheckerOutput < Fluent::Output
103
114
  update_state(datalist)
104
115
 
105
116
  chain.next
117
+ rescue => e
118
+ log.warn "out_ping_message_checker: #{e.message} #{e.class} #{e.backtrace.first}"
106
119
  end
107
120
  end
@@ -22,7 +22,8 @@ unless ENV.has_key?('VERBOSE')
22
22
  $log = nulllogger
23
23
  end
24
24
 
25
- require 'fluent/plugin/out_webhdfs'
25
+ require 'fluent/plugin/in_ping_message'
26
+ require 'fluent/plugin/out_ping_message_checker'
26
27
 
27
28
  class Test::Unit::TestCase
28
29
  end
@@ -0,0 +1,93 @@
1
+ require 'helper'
2
+
3
+ class PingMessageCheckerOutputTest < Test::Unit::TestCase
4
+ def setup
5
+ Fluent::Test.setup
6
+ end
7
+
8
+ CONFIG = %[
9
+ tag ping.message.checker
10
+ ]
11
+
12
+ def create_driver(conf = CONFIG, tag='test.input')
13
+ Fluent::Test::OutputTestDriver.new(Fluent::PingMessageCheckerOutput, tag).configure(conf)
14
+ end
15
+
16
+ def test_configure
17
+ assert_nothing_raised {
18
+ d = create_driver(CONFIG)
19
+ }
20
+ assert_raise(Fluent::ConfigError) {
21
+ d = create_driver('')
22
+ }
23
+ end
24
+
25
+ def test_found_not_emit
26
+ d1 = create_driver(CONFIG, 'ping.webserver')
27
+ flushed = nil
28
+ d1.run do
29
+ d1.emit({'data' => 'your.hostname.local'})
30
+ flushed = d1.instance.check_and_flush
31
+ assert_equal [], flushed
32
+
33
+ d1.emit({'data' => 'your.hostname.local'})
34
+ flushed = d1.instance.check_and_flush
35
+ assert_equal [], flushed
36
+ end
37
+ end
38
+
39
+ def test_missing_emit
40
+ d1 = create_driver(CONFIG, 'ping.webserver')
41
+ flushed = nil
42
+ d1.run do
43
+ d1.emit({'data' => 'your.hostname.local'})
44
+ flushed = d1.instance.check_and_flush
45
+ assert_equal [], flushed
46
+
47
+ flushed = d1.instance.check_and_flush
48
+ assert_equal 'your.hostname.local', flushed.first
49
+ end
50
+ end
51
+
52
+ def test_notification_times
53
+ d1 = create_driver(CONFIG + %[notification_times 3], 'ping.webserver')
54
+ flushed = nil
55
+ d1.run do
56
+ d1.emit({'data' => 'your.hostname.local'})
57
+ flushed = d1.instance.check_and_flush
58
+ assert_equal [], flushed
59
+
60
+ flushed = d1.instance.check_and_flush
61
+ assert_equal 'your.hostname.local', flushed.first
62
+
63
+ flushed = d1.instance.check_and_flush
64
+ assert_equal 'your.hostname.local', flushed.first
65
+
66
+ flushed = d1.instance.check_and_flush
67
+ assert_equal 'your.hostname.local', flushed.first
68
+
69
+ flushed = d1.instance.check_and_flush
70
+ assert_equal [], flushed
71
+ end
72
+ end
73
+
74
+ def test_recovery
75
+ d1 = create_driver(CONFIG + %[notification_times 3], 'ping.webserver')
76
+ flushed = nil
77
+ d1.run do
78
+ d1.emit({'data' => 'your.hostname.local'})
79
+ flushed = d1.instance.check_and_flush
80
+ assert_equal [], flushed
81
+
82
+ flushed = d1.instance.check_and_flush
83
+ assert_equal 'your.hostname.local', flushed.first
84
+
85
+ flushed = d1.instance.check_and_flush
86
+ assert_equal 'your.hostname.local', flushed.first
87
+
88
+ d1.emit({'data' => 'your.hostname.local'})
89
+ flushed = d1.instance.check_and_flush
90
+ assert_equal [], flushed
91
+ end
92
+ end
93
+ end
metadata CHANGED
@@ -1,46 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-ping-message
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
5
- prerelease:
4
+ version: 0.1.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - TAGOMORI Satoshi
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-04-08 00:00:00.000000000 Z
11
+ date: 2014-03-07 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: fluentd
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: fluent-mixin-config-placeholders
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: pry
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry-nav
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
44
81
  - !ruby/object:Gem::Version
45
82
  version: '0'
46
83
  description: for heartbeat monitoring of Fluentd processes
@@ -50,7 +87,8 @@ executables: []
50
87
  extensions: []
51
88
  extra_rdoc_files: []
52
89
  files:
53
- - .gitignore
90
+ - ".gitignore"
91
+ - ".pryrc"
54
92
  - Gemfile
55
93
  - LICENSE.txt
56
94
  - README.md
@@ -59,29 +97,31 @@ files:
59
97
  - lib/fluent/plugin/in_ping_message.rb
60
98
  - lib/fluent/plugin/out_ping_message_checker.rb
61
99
  - test/helper.rb
100
+ - test/plugin/test_out_ping_message_checker.rb
62
101
  homepage: https://github.com/tagomoris/fluent-plugin-ping-message
63
- licenses: []
102
+ licenses:
103
+ - APLv2
104
+ metadata: {}
64
105
  post_install_message:
65
106
  rdoc_options: []
66
107
  require_paths:
67
108
  - lib
68
109
  required_ruby_version: !ruby/object:Gem::Requirement
69
- none: false
70
110
  requirements:
71
- - - ! '>='
111
+ - - ">="
72
112
  - !ruby/object:Gem::Version
73
113
  version: '0'
74
114
  required_rubygems_version: !ruby/object:Gem::Requirement
75
- none: false
76
115
  requirements:
77
- - - ! '>='
116
+ - - ">="
78
117
  - !ruby/object:Gem::Version
79
118
  version: '0'
80
119
  requirements: []
81
120
  rubyforge_project:
82
- rubygems_version: 1.8.23
121
+ rubygems_version: 2.2.2
83
122
  signing_key:
84
- specification_version: 3
123
+ specification_version: 4
85
124
  summary: Fluentd plugin to send/check ping messages
86
125
  test_files:
87
126
  - test/helper.rb
127
+ - test/plugin/test_out_ping_message_checker.rb