fluent-plugin-elapsed-time 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +4 -2
- data/CHANGELOG.md +6 -0
- data/fluent-plugin-elapsed-time.gemspec +2 -1
- data/lib/fluent/plugin/out_elapsed_time.rb +19 -3
- data/spec/out_elapsed_time_spec.rb +16 -16
- metadata +17 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a9486c23f926fb9df5ffb3b43dc7a8f0c1f6cc8e
|
4
|
+
data.tar.gz: 5fc89bd6f09f28dae4bcd1506396e8dc046abf30
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3adf30806c1ea8f95e4debbd786bf03d9de8902e05f57fc168c3811cbb9e05d11ff274ce56232da350418e2b157d13e2fa30bbe32fb4ebb3449295d58796138
|
7
|
+
data.tar.gz: f82150ba8cf69d5b0157731ce284c9fc8b07e6b6c9760f03319b7f4fde6e09a3866a19a6918e96d7486ce9d0d59583c6659ac31ec4f745cbb8d18b81a237de6c
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -3,7 +3,7 @@ $:.push File.expand_path('../lib', __FILE__)
|
|
3
3
|
|
4
4
|
Gem::Specification.new do |gem|
|
5
5
|
gem.name = "fluent-plugin-elapsed-time"
|
6
|
-
gem.version = "0.0.
|
6
|
+
gem.version = "0.0.8"
|
7
7
|
gem.authors = ["Naotoshi Seo"]
|
8
8
|
gem.email = "sonots@gmail.com"
|
9
9
|
gem.homepage = "https://github.com/sonots/fluent-plugin-elapsed-time"
|
@@ -23,4 +23,5 @@ Gem::Specification.new do |gem|
|
|
23
23
|
gem.add_development_dependency "rspec-its"
|
24
24
|
gem.add_development_dependency "pry"
|
25
25
|
gem.add_development_dependency "pry-nav"
|
26
|
+
gem.add_development_dependency "test-unit"
|
26
27
|
end
|
@@ -7,6 +7,11 @@ module Fluent
|
|
7
7
|
define_method("log") { $log }
|
8
8
|
end
|
9
9
|
|
10
|
+
# Define `router` method of v0.12 to support v0.10 or earlier
|
11
|
+
unless method_defined?(:router)
|
12
|
+
define_method("router") { Fluent::Engine }
|
13
|
+
end
|
14
|
+
|
10
15
|
config_param :tag, :string, :default => 'elapsed'
|
11
16
|
config_param :add_tag_prefix, :string, :default => nil
|
12
17
|
config_param :remove_tag_prefix, :string, :default => nil
|
@@ -29,6 +34,7 @@ module Fluent
|
|
29
34
|
super
|
30
35
|
@outputs = []
|
31
36
|
@elapsed = {}
|
37
|
+
@emit_procs = []
|
32
38
|
end
|
33
39
|
|
34
40
|
# for test
|
@@ -51,6 +57,12 @@ module Fluent
|
|
51
57
|
|
52
58
|
output = Plugin.new_output(type)
|
53
59
|
output.configure(e)
|
60
|
+
emit_proc = if output.respond_to?(:emit_events)
|
61
|
+
Proc.new {|output, tag, es, _chain| output.emit_events(tag, es)}
|
62
|
+
else
|
63
|
+
Proc.new {|output, tag, es, _chain| output.emit(tag, es, NullOutputChain.instance)}
|
64
|
+
end
|
65
|
+
@emit_procs << emit_proc
|
54
66
|
@outputs << output
|
55
67
|
}
|
56
68
|
|
@@ -82,7 +94,9 @@ module Fluent
|
|
82
94
|
chain = NullOutputChain.instance
|
83
95
|
start = Time.now
|
84
96
|
es.each do |time, record|
|
85
|
-
@outputs.
|
97
|
+
@outputs.each_with_index {|output, idx|
|
98
|
+
@emit_procs[idx].call(output, tag, OneEventStream.new(time, record), chain)
|
99
|
+
}
|
86
100
|
finish = Time.now
|
87
101
|
emit_tag = @tag_proc.call(tag)
|
88
102
|
elapsed(emit_tag) << (finish - start).to_f
|
@@ -93,7 +107,9 @@ module Fluent
|
|
93
107
|
def emit_es(tag, es)
|
94
108
|
chain = NullOutputChain.instance
|
95
109
|
t = Time.now
|
96
|
-
@outputs.
|
110
|
+
@outputs.each_with_index {|output, idx|
|
111
|
+
@emit_procs[idx].call(output, tag, es,chain)
|
112
|
+
}
|
97
113
|
emit_tag = @tag_proc.call(tag)
|
98
114
|
elapsed(emit_tag) << (Time.now - t).to_f
|
99
115
|
end
|
@@ -143,7 +159,7 @@ module Fluent
|
|
143
159
|
avg = num == 0 ? 0 : elapsed.map(&:to_f).inject(:+) / num.to_f
|
144
160
|
messages[tag] = {"max" => max, "avg" => avg, "num" => num}
|
145
161
|
end
|
146
|
-
messages.each {|tag, message|
|
162
|
+
messages.each {|tag, message| router.emit(tag, Engine.now, message) }
|
147
163
|
end
|
148
164
|
|
149
165
|
private
|
@@ -65,44 +65,44 @@ describe Fluent::ElapsedTimeOutput do
|
|
65
65
|
context 'each message' do
|
66
66
|
let(:config) { CONFIG + %[each message]}
|
67
67
|
before do
|
68
|
-
Fluent::Engine.
|
68
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
69
69
|
end
|
70
70
|
it {
|
71
71
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
72
|
-
driver.instance.elapsed.size.
|
72
|
+
expect(driver.instance.elapsed.size).to eq(4)
|
73
73
|
}
|
74
74
|
end
|
75
75
|
|
76
76
|
context 'each es' do
|
77
77
|
let(:config) { CONFIG + %[each es]}
|
78
78
|
before do
|
79
|
-
Fluent::Engine.
|
79
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
80
80
|
end
|
81
81
|
it {
|
82
82
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
83
|
-
driver.instance.elapsed.size.
|
83
|
+
expect(driver.instance.elapsed.size).to eq(4)
|
84
84
|
}
|
85
85
|
end
|
86
86
|
|
87
87
|
context 'each message with aggregate tag' do
|
88
88
|
let(:config) { CONFIG + %[each message\naggregate tag\nadd_tag_prefix elapsed]}
|
89
89
|
before do
|
90
|
-
Fluent::Engine.
|
90
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
91
91
|
end
|
92
92
|
it {
|
93
93
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
94
|
-
driver.instance.elapsed("elapsed.#{tag}").size.
|
94
|
+
expect(driver.instance.elapsed("elapsed.#{tag}").size).to eq(4)
|
95
95
|
}
|
96
96
|
end
|
97
97
|
|
98
98
|
context 'each es with aggregate tag' do
|
99
99
|
let(:config) { CONFIG + %[each es\naggregate tag\nadd_tag_prefix elapsed]}
|
100
100
|
before do
|
101
|
-
Fluent::Engine.
|
101
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
102
102
|
end
|
103
103
|
it {
|
104
104
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
105
|
-
driver.instance.elapsed("elapsed.#{tag}").size.
|
105
|
+
expect(driver.instance.elapsed("elapsed.#{tag}").size).to eq(4)
|
106
106
|
driver.instance.flush_emit
|
107
107
|
}
|
108
108
|
end
|
@@ -110,36 +110,36 @@ describe Fluent::ElapsedTimeOutput do
|
|
110
110
|
context 'remove_tag_slice' do
|
111
111
|
let(:config) { CONFIG + %[remove_tag_slice 0..-2\naggregate tag\nadd_tag_prefix elapsed]}
|
112
112
|
before do
|
113
|
-
Fluent::Engine.
|
113
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
114
114
|
end
|
115
115
|
let(:expected_tag) { tag.split('.')[0..-2].join('.') }
|
116
116
|
it {
|
117
117
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
118
|
-
driver.instance.elapsed("elapsed.#{expected_tag}").size.
|
118
|
+
expect(driver.instance.elapsed("elapsed.#{expected_tag}").size).to eq(4)
|
119
119
|
}
|
120
120
|
end
|
121
121
|
|
122
122
|
context 'zero_emit true' do
|
123
123
|
let(:config) { CONFIG + %[zero_emit true]}
|
124
124
|
before do
|
125
|
-
Fluent::Engine.
|
125
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
126
126
|
end
|
127
127
|
it {
|
128
128
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
129
|
-
driver.instance.flush_emit["elapsed"]["num"].
|
130
|
-
driver.instance.flush_emit["elapsed"].
|
129
|
+
expect(driver.instance.flush_emit["elapsed"]["num"]).to eq(4)
|
130
|
+
expect(driver.instance.flush_emit["elapsed"]).to eq({"max" => 0, "avg" => 0, "num" => 0})
|
131
131
|
}
|
132
132
|
end
|
133
133
|
|
134
134
|
context 'zero_emit false' do
|
135
135
|
let(:config) { CONFIG }
|
136
136
|
before do
|
137
|
-
Fluent::Engine.
|
137
|
+
allow(Fluent::Engine).to receive(:now).and_return(time)
|
138
138
|
end
|
139
139
|
it {
|
140
140
|
driver.run { messages.each {|message| driver.emit({'message' => message}, time) } }
|
141
|
-
driver.instance.flush_emit["elapsed"]["num"].
|
142
|
-
driver.instance.flush_emit.
|
141
|
+
expect(driver.instance.flush_emit["elapsed"]["num"]).to eq(4)
|
142
|
+
expect(driver.instance.flush_emit).to eq({})
|
143
143
|
}
|
144
144
|
end
|
145
145
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-elapsed-time
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naotoshi Seo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-02-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|
@@ -94,6 +94,20 @@ dependencies:
|
|
94
94
|
- - ">="
|
95
95
|
- !ruby/object:Gem::Version
|
96
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: test-unit
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
97
111
|
description: Fluentd plugin to measure elapsed time to process messages
|
98
112
|
email: sonots@gmail.com
|
99
113
|
executables: []
|
@@ -132,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
146
|
version: '0'
|
133
147
|
requirements: []
|
134
148
|
rubyforge_project:
|
135
|
-
rubygems_version: 2.
|
149
|
+
rubygems_version: 2.5.2
|
136
150
|
signing_key:
|
137
151
|
specification_version: 4
|
138
152
|
summary: Fluentd plugin to measure elapsed time to process messages
|