fluent-plugin-better-timestamp 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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5a3ed2811c5fbb61a6761a97d15008a31ec64e64
4
+ data.tar.gz: d9c7548d76e537d436d3ffcc41e38b54cbd239e1
5
+ SHA512:
6
+ metadata.gz: 28374fe3f76dc46b853cd98d31c15e5ff5dbec0749b759dbb3c9e4c130fa28e8e786fc780dcd3d2f770e0aa5111c962b414fcc4660767dd200adb00893926ec2
7
+ data.tar.gz: c691b8a0515c582481d47d8d56fa85e30c25a2ad9eb4ef0efc058d5f6a6c1e74bf90b4600d1030aa52db0477a6ccb85851de5544873a2ad0643001979af98934
@@ -0,0 +1 @@
1
+ pkg
@@ -0,0 +1,3 @@
1
+ Release 0.1.0 - 2014/11/16
2
+
3
+ * First release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "http://rubygems.org"
2
+
3
+ gemspec
@@ -0,0 +1,14 @@
1
+
2
+ require 'bundler'
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ require 'rake/testtask'
6
+
7
+ Rake::TestTask.new(:test) do |test|
8
+ test.libs << 'lib' << 'test'
9
+ test.test_files = FileList['test/*.rb']
10
+ test.verbose = true
11
+ end
12
+
13
+ task :default => [:build]
14
+
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.1.0
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.name = "fluent-plugin-better-timestamp"
6
+ gem.description = "Output filter plugin which put timestamp"
7
+ gem.homepage = "https://github.com/shivaken/fluent-plugin-better-timestamp"
8
+ gem.summary = gem.description
9
+ gem.version = File.read("VERSION").strip
10
+ gem.authors = ["Kenichi Otsuka"]
11
+ gem.email = "shivaken@gmail.com"
12
+ gem.has_rdoc = false
13
+ #gem.platform = Gem::Platform::RUBY
14
+ gem.license = 'MIT'
15
+ gem.files = `git ls-files`.split("\n")
16
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
18
+ gem.require_paths = ['lib']
19
+
20
+ gem.add_dependency "fluentd", "~> 0.10.17"
21
+ gem.add_dependency "fluent-mixin-config-placeholders", ">= 0.3.0"
22
+ gem.add_development_dependency "rake", ">= 0.9.2"
23
+ end
@@ -0,0 +1,48 @@
1
+ require 'fluent/mixin/config_placeholders'
2
+
3
+ module Fluent
4
+ class BetterTimestampOutput < Output
5
+ Fluent::Plugin.register_output('better_timestamp', self)
6
+
7
+ config_param :tag, :string
8
+ config_param :msec_key, :string, :default => 'msec'
9
+ config_param :timestamp_key, :string, :default => '@timestamp'
10
+
11
+ include SetTagKeyMixin
12
+ include Fluent::Mixin::ConfigPlaceholders
13
+
14
+ BUILTIN_CONFIGURATIONS = %W(type tag timestamp_key msec_key)
15
+
16
+ def configure(conf)
17
+ super
18
+
19
+ @map = {}
20
+ conf.each_pair { |k, v|
21
+ unless BUILTIN_CONFIGURATIONS.include?(k)
22
+ conf.has_key?(k)
23
+ @map[k] = v
24
+ end
25
+ }
26
+
27
+ end
28
+
29
+ def emit(tag, es, chain)
30
+ es.each { |time, record|
31
+ filter_record(tag, time, record)
32
+ Engine.emit(@tag, time, modify_record(time, record))
33
+ }
34
+
35
+ chain.next
36
+ end
37
+
38
+ private
39
+
40
+ def modify_record(time, record)
41
+ if record[@msec_key] then
42
+ record[@timestamp_key] = Time.at(time, record[@msec_key].to_i * 1000).strftime("%Y-%m-%dT%H:%M:%S.%L%z")
43
+ record.delete(@msec_key)
44
+ end
45
+ record
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,42 @@
1
+ require 'fluent/test'
2
+ require 'fluent/plugin/out_better_timestamp'
3
+
4
+ class BetterTimestampOutputTest < Test::Unit::TestCase
5
+ def setup
6
+ Fluent::Test.setup
7
+ end
8
+
9
+ CONFIG = %[
10
+ type better_timestamp
11
+ tag foo.filtered
12
+ msec_key msec
13
+ timestamp_key
14
+ ]
15
+
16
+ def create_driver(conf = CONFIG)
17
+ Fluent::Test::OutputTestDriver.new(Fluent::BetterTimestampOutput, tag='test_tag').configure(conf)
18
+ end
19
+
20
+ def test_configure
21
+ d = create_driver
22
+ map = d.instance.instance_variable_get(:@map)
23
+
24
+ #assert_equal 'msec', map['msec_key']
25
+ end
26
+
27
+ def test_remove_one_key
28
+ d = create_driver %[
29
+ type record_modifier
30
+ tag foo.filtered
31
+ msec_key msec
32
+ ]
33
+
34
+ mapped = {}
35
+
36
+ d.run do
37
+ d.emit("msec" => '1', "k1" => 'v')
38
+ end
39
+
40
+ assert d.records[0]['@timestamp']
41
+ end
42
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-better-timestamp
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Kenichi Otsuka
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-11-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fluentd
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.10.17
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.10.17
27
+ - !ruby/object:Gem::Dependency
28
+ name: fluent-mixin-config-placeholders
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 0.3.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 0.3.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 0.9.2
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 0.9.2
55
+ description: Output filter plugin which put timestamp
56
+ email: shivaken@gmail.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - ".gitignore"
62
+ - ChangeLog
63
+ - Gemfile
64
+ - Rakefile
65
+ - VERSION
66
+ - fluent-plugin-better-timestamp.gemspec
67
+ - lib/fluent/plugin/out_better_timestamp.rb
68
+ - pkg/fluent-plugin-better-timestamp-0.1.0.gem
69
+ - test/out_better_timestamp.rb
70
+ homepage: https://github.com/shivaken/fluent-plugin-better-timestamp
71
+ licenses:
72
+ - MIT
73
+ metadata: {}
74
+ post_install_message:
75
+ rdoc_options: []
76
+ require_paths:
77
+ - lib
78
+ required_ruby_version: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ required_rubygems_version: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - ">="
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ requirements: []
89
+ rubyforge_project:
90
+ rubygems_version: 2.0.14
91
+ signing_key:
92
+ specification_version: 4
93
+ summary: Output filter plugin which put timestamp
94
+ test_files:
95
+ - test/out_better_timestamp.rb