fluent-plugin-typetalk 0.0.10 → 0.1.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/.travis.yml +6 -1
- data/README.md +7 -0
- data/Rakefile +6 -4
- data/fluent-plugin-typetalk.gemspec +7 -12
- data/lib/fluent/plugin/out_typetalk.rb +3 -5
- data/test/helper.rb +6 -26
- data/test/plugin/test_out_typetalk.rb +42 -32
- metadata +18 -46
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c26fbbe7bb559565f3bdb6c7846430282d91b879
|
4
|
+
data.tar.gz: 79b971d2139d25436bed76ba7163bbadb4937443
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ea738ab0a0bf841ec1ce1156891f3142f64c50b5d9d5a3b143afe58b12c912c1215e16811a80e0070872f1040ddec1a5dc94b973f324213dfda5a48ca4e4e25d
|
7
|
+
data.tar.gz: bbf2962d634e073ba597be18f1a7240946ade5e644b06b52d32053eacfe115b0acbaaad9a3c4c62fc1779052ff7d379c84fba3760bcd69241c52eddb851f6ecb
|
data/.travis.yml
CHANGED
data/README.md
CHANGED
@@ -4,6 +4,13 @@
|
|
4
4
|
|
5
5
|
[Fluentd](http://fluentd.org) plugin to emit notifications to [Typetalk](http://typetalk.in/).
|
6
6
|
|
7
|
+
## Requirements
|
8
|
+
|
9
|
+
| fluent-plugin-typetalk | fluentd | ruby |
|
10
|
+
|------------------------|------------|--------|
|
11
|
+
| >= 0.1.0 | >= v0.14.0 | >= 2.1 |
|
12
|
+
| < 0.1.0 | >= v0.12.0 | >= 1.9 |
|
13
|
+
|
7
14
|
## Installation
|
8
15
|
|
9
16
|
Install with gem or fluent-gem command as:
|
data/Rakefile
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
-
require
|
2
|
-
|
1
|
+
require 'bundler'
|
2
|
+
Bundler::GemHelper.install_tasks
|
3
|
+
|
4
|
+
require 'rake/testtask'
|
3
5
|
|
4
6
|
Rake::TestTask.new(:test) do |test|
|
5
7
|
test.libs << 'lib' << 'test'
|
6
|
-
test.
|
8
|
+
test.test_files = FileList['test/plugin/*.rb']
|
7
9
|
test.verbose = true
|
8
10
|
end
|
9
11
|
|
10
|
-
task :default => :test
|
12
|
+
task :default => :test
|
@@ -1,10 +1,9 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
4
3
|
|
5
4
|
Gem::Specification.new do |spec|
|
6
5
|
spec.name = "fluent-plugin-typetalk"
|
7
|
-
spec.version = "0.0
|
6
|
+
spec.version = "0.1.0"
|
8
7
|
spec.authors = ["tksmd","umakoz"]
|
9
8
|
spec.email = ["someda@isenshi.com"]
|
10
9
|
spec.description = %q{fluent plugin to send message to typetalk}
|
@@ -18,14 +17,10 @@ Gem::Specification.new do |spec|
|
|
18
17
|
spec.require_paths = ["lib"]
|
19
18
|
|
20
19
|
spec.add_development_dependency "bundler", "~> 1.3"
|
21
|
-
spec.add_development_dependency "rake"
|
22
|
-
spec.add_development_dependency "
|
23
|
-
spec.add_development_dependency "test-unit", "
|
24
|
-
spec.add_development_dependency "test-unit-rr"
|
25
|
-
# not to use mime-types 3.0 that doesn't support ruby 1.9.x
|
26
|
-
spec.add_runtime_dependency "mime-types", "~> 2.6", "< 2.99"
|
27
|
-
spec.add_runtime_dependency "fluentd"
|
28
|
-
spec.add_runtime_dependency "typetalk"
|
20
|
+
spec.add_development_dependency "rake", ">= 0.9.2"
|
21
|
+
spec.add_development_dependency "test-unit", ">= 3.1.0"
|
22
|
+
spec.add_development_dependency "test-unit-rr", ">= 1.0.5"
|
29
23
|
|
30
|
-
spec.
|
24
|
+
spec.add_runtime_dependency "fluentd", [">= 0.14.0", "< 2"]
|
25
|
+
spec.add_runtime_dependency "typetalk"
|
31
26
|
end
|
@@ -1,5 +1,5 @@
|
|
1
|
-
module Fluent
|
2
|
-
class TypetalkOutput < Fluent::Output
|
1
|
+
module Fluent::Plugin
|
2
|
+
class TypetalkOutput < Fluent::Plugin::Output
|
3
3
|
Fluent::Plugin.register_output('typetalk', self)
|
4
4
|
|
5
5
|
config_param :client_id, :string
|
@@ -73,7 +73,7 @@ module Fluent
|
|
73
73
|
super
|
74
74
|
end
|
75
75
|
|
76
|
-
def
|
76
|
+
def process(tag, es)
|
77
77
|
es.each do |time, record|
|
78
78
|
if @need_throttle && throttle(time)
|
79
79
|
log.error("out_typetalk:", :error => "number of posting message within #{@interval}(sec) reaches to the limit #{@limit}")
|
@@ -86,8 +86,6 @@ module Fluent
|
|
86
86
|
log.error("out_typetalk:", :error_class => e.class, :error => e.message)
|
87
87
|
end
|
88
88
|
end
|
89
|
-
|
90
|
-
chain.next
|
91
89
|
end
|
92
90
|
|
93
91
|
def throttle(time)
|
data/test/helper.rb
CHANGED
@@ -1,29 +1,9 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
rescue Bundler::BundlerError => e
|
6
|
-
$stderr.puts e.message
|
7
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
8
|
-
exit e.status_code
|
9
|
-
end
|
1
|
+
require "bundler/setup"
|
2
|
+
$LOAD_PATH.unshift(File.join(__dir__, '..', 'lib'))
|
3
|
+
$LOAD_PATH.unshift(__dir__)
|
4
|
+
|
10
5
|
require 'test/unit'
|
11
6
|
require 'test/unit/rr'
|
12
|
-
|
13
|
-
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
14
|
-
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
15
7
|
require 'fluent/test'
|
16
|
-
|
17
|
-
|
18
|
-
nulllogger.instance_eval {|obj|
|
19
|
-
def method_missing(method, *args)
|
20
|
-
# pass
|
21
|
-
end
|
22
|
-
}
|
23
|
-
$log = nulllogger
|
24
|
-
end
|
25
|
-
|
26
|
-
require 'fluent/plugin/out_typetalk'
|
27
|
-
|
28
|
-
class Test::Unit::TestCase
|
29
|
-
end
|
8
|
+
require 'fluent/test/driver/output'
|
9
|
+
require 'fluent/test/helpers'
|
@@ -1,9 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
3
|
require 'helper'
|
4
|
+
require 'fluent/plugin/out_typetalk'
|
4
5
|
|
5
6
|
class TypetalkOutputTest < Test::Unit::TestCase
|
6
|
-
|
7
|
+
|
7
8
|
def setup
|
8
9
|
Fluent::Test.setup
|
9
10
|
end
|
@@ -50,8 +51,8 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
50
51
|
]
|
51
52
|
|
52
53
|
|
53
|
-
def create_driver(conf = CONFIG
|
54
|
-
Fluent::Test::
|
54
|
+
def create_driver(conf = CONFIG)
|
55
|
+
Fluent::Test::Driver::Output.new(Fluent::Plugin::TypetalkOutput).configure(conf)
|
55
56
|
end
|
56
57
|
|
57
58
|
def test_configure
|
@@ -71,20 +72,22 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
71
72
|
def test_write
|
72
73
|
d = create_driver()
|
73
74
|
mock(d.instance.typetalk).post_message(1, 'notice : test1')
|
74
|
-
d.
|
75
|
-
|
75
|
+
d.run(default_tag: "test") do
|
76
|
+
d.feed({'message' => 'test1'})
|
77
|
+
end
|
76
78
|
end
|
77
79
|
|
78
80
|
def test_template
|
79
|
-
d = create_driver(
|
81
|
+
d = create_driver()
|
80
82
|
d.instance.message = "notice : %s [%s]"
|
81
83
|
d.instance.out_keys = ["message", "time"]
|
82
84
|
mock(d.instance.typetalk).post_message(1, "notice : test1 [1399910738]")
|
83
85
|
|
84
86
|
ENV["TZ"]="Asia/Tokyo"
|
85
87
|
t = Time.strptime('2014-05-13 01:05:38', '%Y-%m-%d %T')
|
86
|
-
d.
|
87
|
-
|
88
|
+
d.run(default_tag: "warn") do
|
89
|
+
d.feed(t.to_i, {'message' => 'test1'})
|
90
|
+
end
|
88
91
|
end
|
89
92
|
|
90
93
|
def test_post_message_unauthorized_error
|
@@ -94,11 +97,12 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
94
97
|
}
|
95
98
|
stub(d.instance.log).error {|name, params|
|
96
99
|
assert_equal "out_typetalk:", name
|
97
|
-
assert_equal Fluent::TypetalkError, params[:error_class]
|
100
|
+
assert_equal Fluent::Plugin::TypetalkError, params[:error_class]
|
98
101
|
assert_equal "invalid credentials used. check client_id and client_secret in your configuration.", params[:error]
|
99
102
|
}
|
100
|
-
d.
|
101
|
-
|
103
|
+
d.run(default_tag: "test") do
|
104
|
+
d.feed({'message' => 'test1'})
|
105
|
+
end
|
102
106
|
end
|
103
107
|
|
104
108
|
def test_post_message_invalid_request_error
|
@@ -108,11 +112,12 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
108
112
|
}
|
109
113
|
stub(d.instance.log).error {|name, params|
|
110
114
|
assert_equal "out_typetalk:", name
|
111
|
-
assert_equal Fluent::TypetalkError, params[:error_class]
|
115
|
+
assert_equal Fluent::Plugin::TypetalkError, params[:error_class]
|
112
116
|
assert_equal "failed to post, msg: invalid_client, code: 400", params[:error]
|
113
117
|
}
|
114
|
-
d.
|
115
|
-
|
118
|
+
d.run(default_tag: "test") do
|
119
|
+
d.feed({'message' => 'test1'})
|
120
|
+
end
|
116
121
|
end
|
117
122
|
|
118
123
|
def test_post_message_maxlength_error
|
@@ -122,11 +127,12 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
122
127
|
}
|
123
128
|
stub(d.instance.log).error {|name, params|
|
124
129
|
assert_equal "out_typetalk:", name
|
125
|
-
assert_equal Fluent::TypetalkError, params[:error_class]
|
130
|
+
assert_equal Fluent::Plugin::TypetalkError, params[:error_class]
|
126
131
|
assert_equal "failed to post, msg: message : Maximum length is 4,096 characters., code: 400", params[:error]
|
127
132
|
}
|
128
|
-
d.
|
129
|
-
|
133
|
+
d.run(default_tag: "test") do
|
134
|
+
d.feed({'message' => 'test1'})
|
135
|
+
end
|
130
136
|
end
|
131
137
|
|
132
138
|
def test_post_message_notfound_error
|
@@ -136,11 +142,12 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
136
142
|
}
|
137
143
|
stub(d.instance.log).error {|name, params|
|
138
144
|
assert_equal "out_typetalk:", name
|
139
|
-
assert_equal Fluent::TypetalkError, params[:error_class]
|
145
|
+
assert_equal Fluent::Plugin::TypetalkError, params[:error_class]
|
140
146
|
assert_equal "failed to post, msg: , code: 404", params[:error]
|
141
147
|
}
|
142
|
-
d.
|
143
|
-
|
148
|
+
d.run(default_tag: "test") do
|
149
|
+
d.feed({'message' => 'test1'})
|
150
|
+
end
|
144
151
|
end
|
145
152
|
|
146
153
|
def test_oauth2_error
|
@@ -150,11 +157,12 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
150
157
|
}
|
151
158
|
stub(d.instance.log).error {|name, params|
|
152
159
|
assert_equal "out_typetalk:", name
|
153
|
-
assert_equal Fluent::TypetalkError, params[:error_class]
|
160
|
+
assert_equal Fluent::Plugin::TypetalkError, params[:error_class]
|
154
161
|
assert_equal "failed to post, msg: Bearer error=\"invalid_scope\", code: 400", params[:error]
|
155
162
|
}
|
156
|
-
d.
|
157
|
-
|
163
|
+
d.run(default_tag: "test") do
|
164
|
+
d.feed({'message' => 'test1'})
|
165
|
+
end
|
158
166
|
end
|
159
167
|
|
160
168
|
def test_throttle
|
@@ -165,11 +173,12 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
165
173
|
assert_equal "out_typetalk:", name
|
166
174
|
assert_equal "number of posting message within 5.0(sec) reaches to the limit 1", params[:error]
|
167
175
|
}
|
168
|
-
d.
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
176
|
+
d.run(default_tag: "test") do
|
177
|
+
d.feed({'message' => 'test1'})
|
178
|
+
d.feed({'message' => 'test2'})
|
179
|
+
sleep 5
|
180
|
+
d.feed({'message' => 'test3'})
|
181
|
+
end
|
173
182
|
end
|
174
183
|
|
175
184
|
def test_truncate
|
@@ -177,10 +186,11 @@ class TypetalkOutputTest < Test::Unit::TestCase
|
|
177
186
|
mock(d.instance.typetalk).post_message(1, '1')
|
178
187
|
mock(d.instance.typetalk).post_message(1, '1'*3999)
|
179
188
|
mock(d.instance.typetalk).post_message(1, '1'*3995 + ' ...')
|
180
|
-
d.
|
181
|
-
|
182
|
-
|
183
|
-
|
189
|
+
d.run(default_tag: "test") do
|
190
|
+
d.feed({'message' => '1'})
|
191
|
+
d.feed({'message' => '1'*3999}) # not truncated
|
192
|
+
d.feed({'message' => '1'*4000}) # should be truncated
|
193
|
+
end
|
184
194
|
end
|
185
195
|
|
186
196
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-typetalk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- tksmd
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-
|
12
|
+
date: 2017-06-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -31,90 +31,62 @@ dependencies:
|
|
31
31
|
requirements:
|
32
32
|
- - ">="
|
33
33
|
- !ruby/object:Gem::Version
|
34
|
-
version:
|
34
|
+
version: 0.9.2
|
35
35
|
type: :development
|
36
36
|
prerelease: false
|
37
37
|
version_requirements: !ruby/object:Gem::Requirement
|
38
38
|
requirements:
|
39
39
|
- - ">="
|
40
40
|
- !ruby/object:Gem::Version
|
41
|
-
version:
|
41
|
+
version: 0.9.2
|
42
42
|
- !ruby/object:Gem::Dependency
|
43
|
-
name:
|
43
|
+
name: test-unit
|
44
44
|
requirement: !ruby/object:Gem::Requirement
|
45
45
|
requirements:
|
46
46
|
- - ">="
|
47
47
|
- !ruby/object:Gem::Version
|
48
|
-
version: 1.0
|
48
|
+
version: 3.1.0
|
49
49
|
type: :development
|
50
50
|
prerelease: false
|
51
51
|
version_requirements: !ruby/object:Gem::Requirement
|
52
52
|
requirements:
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 1.0
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: test-unit
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">"
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '3'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">"
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '3'
|
55
|
+
version: 3.1.0
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: test-unit-rr
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
73
59
|
requirements:
|
74
60
|
- - ">="
|
75
61
|
- !ruby/object:Gem::Version
|
76
|
-
version:
|
62
|
+
version: 1.0.5
|
77
63
|
type: :development
|
78
64
|
prerelease: false
|
79
65
|
version_requirements: !ruby/object:Gem::Requirement
|
80
66
|
requirements:
|
81
67
|
- - ">="
|
82
68
|
- !ruby/object:Gem::Version
|
83
|
-
version:
|
69
|
+
version: 1.0.5
|
84
70
|
- !ruby/object:Gem::Dependency
|
85
|
-
name:
|
71
|
+
name: fluentd
|
86
72
|
requirement: !ruby/object:Gem::Requirement
|
87
73
|
requirements:
|
88
|
-
- - "
|
74
|
+
- - ">="
|
89
75
|
- !ruby/object:Gem::Version
|
90
|
-
version:
|
76
|
+
version: 0.14.0
|
91
77
|
- - "<"
|
92
78
|
- !ruby/object:Gem::Version
|
93
|
-
version: '2
|
79
|
+
version: '2'
|
94
80
|
type: :runtime
|
95
81
|
prerelease: false
|
96
82
|
version_requirements: !ruby/object:Gem::Requirement
|
97
|
-
requirements:
|
98
|
-
- - "~>"
|
99
|
-
- !ruby/object:Gem::Version
|
100
|
-
version: '2.6'
|
101
|
-
- - "<"
|
102
|
-
- !ruby/object:Gem::Version
|
103
|
-
version: '2.99'
|
104
|
-
- !ruby/object:Gem::Dependency
|
105
|
-
name: fluentd
|
106
|
-
requirement: !ruby/object:Gem::Requirement
|
107
83
|
requirements:
|
108
84
|
- - ">="
|
109
85
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
111
|
-
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: !ruby/object:Gem::Requirement
|
114
|
-
requirements:
|
115
|
-
- - ">="
|
86
|
+
version: 0.14.0
|
87
|
+
- - "<"
|
116
88
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
89
|
+
version: '2'
|
118
90
|
- !ruby/object:Gem::Dependency
|
119
91
|
name: typetalk
|
120
92
|
requirement: !ruby/object:Gem::Requirement
|
@@ -158,7 +130,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
130
|
requirements:
|
159
131
|
- - ">="
|
160
132
|
- !ruby/object:Gem::Version
|
161
|
-
version:
|
133
|
+
version: '0'
|
162
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
135
|
requirements:
|
164
136
|
- - ">="
|
@@ -166,7 +138,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
166
138
|
version: '0'
|
167
139
|
requirements: []
|
168
140
|
rubyforge_project:
|
169
|
-
rubygems_version: 2.6.
|
141
|
+
rubygems_version: 2.6.11
|
170
142
|
signing_key:
|
171
143
|
specification_version: 4
|
172
144
|
summary: fluent plugin to send message to typetalk
|