fluent-plugin-hipchat 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|