fluent-plugin-sensu 1.0.0 → 1.0.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,9 @@
1
+ ## 1.0.1 (2015-11-24)
2
+
3
+ Bugfixes:
4
+
5
+ - escape non-ASCII characters (#6)
6
+
7
+ ## 1.0.0 (2015-08-30)
8
+
9
+ - initial release
@@ -6,7 +6,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
6
6
 
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = "fluent-plugin-sensu"
9
- spec.version = '1.0.0'
9
+ spec.version = '1.0.1'
10
10
  spec.authors = ["MIYAKAWA Taku"]
11
11
  spec.email = ["miyakawa.taku@gmail.com"]
12
12
  spec.description = 'Fluentd output plugin to send checks' +
@@ -186,7 +186,7 @@ module Fluent
186
186
  # Send a check result to sensu-client.
187
187
  private
188
188
  def send_check(server, port, check_result)
189
- json = check_result.to_json
189
+ json = to_json(check_result)
190
190
  sensu_client = TCPSocket.open(@server, @port)
191
191
  begin
192
192
  sensu_client.puts(json)
@@ -195,6 +195,18 @@ module Fluent
195
195
  end
196
196
  end
197
197
 
198
+ # Make a json from the data.
199
+ public
200
+ def to_json(data)
201
+ raw_json = data.to_json.force_encoding(Encoding::BINARY)
202
+ regex = /[\xc0-\xdf][\x80-\xbf]
203
+ |[\xe0-\xef][\x80-\xbf]{2}
204
+ |[\xf0-\xf7][\x80-\xbf]{3}/nx
205
+ return raw_json.gsub(regex) { |ch|
206
+ ch.unpack('U*').pack('n*').unpack('H*')[0].gsub(/.+/, %q(\\\\u\&))
207
+ }
208
+ end
209
+
198
210
  # Adds an attribute to the check result if present.
199
211
  private
200
212
  def add_attribute_if_present(check_result, name, value)
@@ -674,5 +674,23 @@ class SensuOutputTest < Test::Unit::TestCase
674
674
  end
675
675
 
676
676
  # }}}1
677
+ # JSON serialization {{{1
678
+
679
+ # ASCII characters are serialized literally.
680
+ def test_serialize_ascii_data_to_json
681
+ data = {"foo" => "FOO"}
682
+ driver = create_driver('')
683
+ assert_equal('{"foo":"FOO"}', driver.instance.to_json(data))
684
+ end
685
+
686
+ # Non-ASCII characters are Unicode-escaped.
687
+ def test_serialize_non_ascii_data_to_json
688
+ data = {"foo" => "\u3042\u4e9c\u03b1"}
689
+ driver = create_driver('')
690
+ assert_equal(%q({"foo":"\u3042\u4e9c\u03b1"}), driver.instance.to_json(data))
691
+ end
692
+
693
+ # }}}1
694
+
677
695
 
678
696
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-sensu
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
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: 2015-08-30 00:00:00.000000000 Z
12
+ date: 2015-11-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -84,6 +84,7 @@ extra_rdoc_files: []
84
84
  files:
85
85
  - .gitignore
86
86
  - .travis.yml
87
+ - CHANGELOG.md
87
88
  - Gemfile
88
89
  - LICENSE.txt
89
90
  - README.md
@@ -107,7 +108,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
107
108
  version: '0'
108
109
  segments:
109
110
  - 0
110
- hash: 3828489535949594290
111
+ hash: 2209701766942156983
111
112
  required_rubygems_version: !ruby/object:Gem::Requirement
112
113
  none: false
113
114
  requirements:
@@ -116,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
116
117
  version: '0'
117
118
  segments:
118
119
  - 0
119
- hash: 3828489535949594290
120
+ hash: 2209701766942156983
120
121
  requirements: []
121
122
  rubyforge_project:
122
123
  rubygems_version: 1.8.23