fluent-plugin-hipchat 0.2.0 → 0.3.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.
- checksums.yaml +4 -4
- data/VERSION +1 -1
- data/fluent-plugin-hipchat.gemspec +1 -1
- data/lib/fluent/plugin/out_hipchat.rb +25 -6
- data/test/plugin/out_hipchat.rb +47 -26
- data/test/test_helper.rb +2 -0
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8efeebb26e4e7309f3b935d63e28f9d5dae01ab5
|
4
|
+
data.tar.gz: 2bd001e4640837b1114cc1cebd7eefbc52d33b17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6491adb2c5d5dbe884568ca755513bdcce4d3ad421e7b0beccbcbd02409b257d3b33c7f34980202158607a8229934b89d2720b95098cee1f4dd51abbc9d04be
|
7
|
+
data.tar.gz: 6c9e77d859642e54d3b1f8baf4fbe960cd651b825e6fe8b8b4cd666667278e51188654966df28f161c424f1ebde3f122ff4d112e71a7757c8f020079d61757c6
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
@@ -15,7 +15,7 @@ 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.
|
18
|
+
gem.add_dependency "fluentd", [">= 0.14.0", "< 2"]
|
19
19
|
gem.add_dependency "hipchat-api", ">= 1.0.0"
|
20
20
|
|
21
21
|
gem.add_development_dependency "rake", ">= 0.9.2"
|
@@ -1,10 +1,15 @@
|
|
1
|
+
require 'hipchat-api'
|
2
|
+
require 'fluent/plugin/output'
|
1
3
|
|
2
|
-
module Fluent
|
3
|
-
class HipchatOutput <
|
4
|
+
module Fluent::Plugin
|
5
|
+
class HipchatOutput < Output
|
4
6
|
COLORS = %w(yellow red green purple gray random)
|
5
7
|
FORMAT = %w(html text)
|
8
|
+
DEFAULT_BUFFER_TYPE = "memory"
|
6
9
|
Fluent::Plugin.register_output('hipchat', self)
|
7
10
|
|
11
|
+
helpers :compat_parameters
|
12
|
+
|
8
13
|
config_param :api_token, :string, :secret => true
|
9
14
|
config_param :default_room, :string, :default => nil
|
10
15
|
config_param :default_color, :string, :default => 'yellow'
|
@@ -19,14 +24,19 @@ module Fluent
|
|
19
24
|
config_param :http_proxy_pass, :string, :default => nil
|
20
25
|
config_param :flush_interval, :time, :default => 1
|
21
26
|
|
27
|
+
config_section :buffer do
|
28
|
+
config_set_default :@type, DEFAULT_BUFFER_TYPE
|
29
|
+
config_set_default :chunk_keys, ['tag']
|
30
|
+
end
|
31
|
+
|
22
32
|
attr_reader :hipchat
|
23
33
|
|
24
34
|
def initialize
|
25
35
|
super
|
26
|
-
require 'hipchat-api'
|
27
36
|
end
|
28
37
|
|
29
38
|
def configure(conf)
|
39
|
+
compat_parameters_convert(conf, :buffer)
|
30
40
|
super
|
31
41
|
|
32
42
|
@hipchat = HipChat::API.new(conf['api_token'])
|
@@ -40,19 +50,28 @@ module Fluent
|
|
40
50
|
conf['http_proxy_user'],
|
41
51
|
conf['http_proxy_pass'])
|
42
52
|
end
|
53
|
+
raise Fluent::ConfigError, "'tag' in chunk_keys is required." if not @chunk_key_tag
|
43
54
|
end
|
44
55
|
|
45
56
|
def format(tag, time, record)
|
46
|
-
[
|
57
|
+
[time, record].to_msgpack
|
58
|
+
end
|
59
|
+
|
60
|
+
def formatted_to_msgpack_binary
|
61
|
+
true
|
62
|
+
end
|
63
|
+
|
64
|
+
def multi_workers_ready?
|
65
|
+
true
|
47
66
|
end
|
48
67
|
|
49
68
|
def write(chunk)
|
50
|
-
chunk.msgpack_each do |(
|
69
|
+
chunk.msgpack_each do |(time,record)|
|
51
70
|
begin
|
52
71
|
send_message(record) if record[@key_name]
|
53
72
|
set_topic(record) if record['topic']
|
54
73
|
rescue => e
|
55
|
-
|
74
|
+
log.error("HipChat Error:", :error_class => e.class, :error => e.message)
|
56
75
|
end
|
57
76
|
end
|
58
77
|
end
|
data/test/plugin/out_hipchat.rb
CHANGED
@@ -2,6 +2,8 @@ require 'test_helper'
|
|
2
2
|
require 'fluent/plugin/out_hipchat'
|
3
3
|
|
4
4
|
class HipchatOutputTest < Test::Unit::TestCase
|
5
|
+
include Fluent::Test::Helpers
|
6
|
+
|
5
7
|
def setup
|
6
8
|
super
|
7
9
|
Fluent::Test.setup
|
@@ -23,7 +25,7 @@ class HipchatOutputTest < Test::Unit::TestCase
|
|
23
25
|
]
|
24
26
|
|
25
27
|
def create_driver(conf = CONFIG)
|
26
|
-
Fluent::Test::
|
28
|
+
Fluent::Test::Driver::Output.new(Fluent::Plugin::HipchatOutput) {
|
27
29
|
}.configure(conf)
|
28
30
|
end
|
29
31
|
|
@@ -40,6 +42,17 @@ class HipchatOutputTest < Test::Unit::TestCase
|
|
40
42
|
assert_equal 1, d.instance.flush_interval
|
41
43
|
end
|
42
44
|
|
45
|
+
def test_format
|
46
|
+
d = create_driver
|
47
|
+
stub(d.instance.hipchat).rooms_message('testroom', 'testuser', 'foo', 0, 'red', 'html')
|
48
|
+
assert_equal d.instance.hipchat.instance_variable_get(:@token), 'testtoken'
|
49
|
+
time = event_time
|
50
|
+
d.run(default_tag: "test") do
|
51
|
+
d.feed(time, {'message' => 'foo', 'color' => 'red'})
|
52
|
+
end
|
53
|
+
assert_equal [time, {'message' => 'foo', 'color' => 'red'}].to_msgpack, d.formatted[0]
|
54
|
+
end
|
55
|
+
|
43
56
|
def test_default_message
|
44
57
|
d = create_driver(<<-EOF)
|
45
58
|
type hipchat
|
@@ -48,8 +61,9 @@ class HipchatOutputTest < Test::Unit::TestCase
|
|
48
61
|
EOF
|
49
62
|
stub(d.instance.hipchat).rooms_message('testroom', 'fluentd', 'foo', 0, 'yellow', 'html')
|
50
63
|
assert_equal d.instance.hipchat.instance_variable_get(:@token), 'xxx'
|
51
|
-
d.
|
52
|
-
|
64
|
+
d.run(default_tag: "test") do
|
65
|
+
d.feed({'message' => 'foo'})
|
66
|
+
end
|
53
67
|
end
|
54
68
|
|
55
69
|
def test_set_default_timeout
|
@@ -59,39 +73,43 @@ class HipchatOutputTest < Test::Unit::TestCase
|
|
59
73
|
default_timeout 5
|
60
74
|
EOF
|
61
75
|
stub(d.instance.hipchat).set_timeout(5)
|
62
|
-
d.
|
63
|
-
|
76
|
+
d.run(default_tag: "test") do
|
77
|
+
d.feed({'message' => 'foo'})
|
78
|
+
end
|
64
79
|
end
|
65
80
|
|
66
81
|
def test_message
|
67
82
|
d = create_driver
|
68
83
|
stub(d.instance.hipchat).rooms_message('testroom', 'testuser', 'foo', 0, 'red', 'html')
|
69
84
|
assert_equal d.instance.hipchat.instance_variable_get(:@token), 'testtoken'
|
70
|
-
d.
|
71
|
-
|
85
|
+
d.run(default_tag: "test") do
|
86
|
+
d.feed({'message' => 'foo', 'color' => 'red'})
|
87
|
+
end
|
72
88
|
end
|
73
89
|
|
74
90
|
def test_message_override
|
75
91
|
d = create_driver
|
76
92
|
stub(d.instance.hipchat).rooms_message('my', 'alice', 'aaa', 1, 'random', 'text')
|
77
|
-
d.
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
93
|
+
d.run(default_tag: "test") do
|
94
|
+
d.feed(
|
95
|
+
{
|
96
|
+
'room' => 'my',
|
97
|
+
'from' => 'alice',
|
98
|
+
'message' => 'aaa',
|
99
|
+
'notify' => true,
|
100
|
+
'color' => 'random',
|
101
|
+
'format' => 'text',
|
102
|
+
}
|
103
|
+
)
|
104
|
+
end
|
88
105
|
end
|
89
106
|
|
90
107
|
def test_topic
|
91
108
|
d = create_driver
|
92
109
|
stub(d.instance.hipchat).rooms_topic('testroom', 'foo', 'testuser')
|
93
|
-
d.
|
94
|
-
|
110
|
+
d.run(default_tag: "test") do
|
111
|
+
d.feed({'topic' => 'foo'})
|
112
|
+
end
|
95
113
|
end
|
96
114
|
|
97
115
|
def test_set_topic_response_error
|
@@ -100,8 +118,9 @@ class HipchatOutputTest < Test::Unit::TestCase
|
|
100
118
|
{'error' => { 'code' => 400, 'type' => 'Bad Request', 'message' => 'Topic body must be between 1 and 250 characters.' } }
|
101
119
|
}
|
102
120
|
stub($log).error("HipChat Error:", :error_class => StandardError, :error => 'Topic body must be between 1 and 250 characters.')
|
103
|
-
d.
|
104
|
-
|
121
|
+
d.run(default_tag: "test") do
|
122
|
+
d.feed({'topic' => 'foo'})
|
123
|
+
end
|
105
124
|
end
|
106
125
|
|
107
126
|
def test_send_message_response_error
|
@@ -110,15 +129,17 @@ class HipchatOutputTest < Test::Unit::TestCase
|
|
110
129
|
{'error' => { 'code' => 400, 'type' => 'Bad Request', 'message' => 'From name may not contain HTML.' } }
|
111
130
|
}
|
112
131
|
stub($log).error("HipChat Error:", :error_class => StandardError, :error => 'From name may not contain HTML.')
|
113
|
-
d.
|
114
|
-
|
132
|
+
d.run(default_tag: "test") do
|
133
|
+
d.feed({'from' => '<abc>', 'message' => 'foo'})
|
134
|
+
end
|
115
135
|
end
|
116
136
|
|
117
137
|
def test_color_validate
|
118
138
|
d = create_driver
|
119
139
|
stub(d.instance.hipchat).rooms_message('testroom', 'testuser', 'foo', 0, 'yellow', 'html')
|
120
|
-
d.
|
121
|
-
|
140
|
+
d.run(default_tag: "test") do
|
141
|
+
d.feed({'message' => 'foo', 'color' => 'invalid'})
|
142
|
+
end
|
122
143
|
end
|
123
144
|
|
124
145
|
def test_http_proxy
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-hipchat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yuichi Tateno
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-04-
|
11
|
+
date: 2017-04-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -16,14 +16,20 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.14.0
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '2'
|
20
23
|
type: :runtime
|
21
24
|
prerelease: false
|
22
25
|
version_requirements: !ruby/object:Gem::Requirement
|
23
26
|
requirements:
|
24
27
|
- - ">="
|
25
28
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0.
|
29
|
+
version: 0.14.0
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '2'
|
27
33
|
- !ruby/object:Gem::Dependency
|
28
34
|
name: hipchat-api
|
29
35
|
requirement: !ruby/object:Gem::Requirement
|