fluent-plugin-fnordmetric 0.0.1

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.
data/.gitignore ADDED
@@ -0,0 +1,19 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .rvmrc
6
+ coverage
7
+ InstalledFiles
8
+ lib/bundler/man
9
+ pkg
10
+ rdoc
11
+ spec/reports
12
+ test/tmp
13
+ test/version_tmp
14
+ tmp
15
+
16
+ # YARD artifacts
17
+ .yardoc
18
+ _yardoc
19
+ doc/
data/.travis.yml ADDED
@@ -0,0 +1,4 @@
1
+ language: ruby
2
+ rvm:
3
+ - 1.9.2
4
+ - 1.9.3
data/COPYING ADDED
@@ -0,0 +1,13 @@
1
+ Copyright (C) 2012 Eduardo Aceituno <achied@gmail.com> All rights reserved.
2
+
3
+ Licensed under the Apache License, Version 2.0 (the "License");
4
+ you may not use this file except in compliance with the License.
5
+ You may obtain a copy of the License at
6
+
7
+ http://www.apache.org/licenses/LICENSE-2.0
8
+
9
+ Unless required by applicable law or agreed to in writing, software
10
+ distributed under the License is distributed on an "AS IS" BASIS,
11
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ See the License for the specific language governing permissions and
13
+ limitations under the License.
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source :rubygems
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,86 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ fluent-plugin-fnordmetric (0.0.1)
5
+ fluentd (>= 0.10.7)
6
+ fnordmetric (= 1.0.0)
7
+
8
+ GEM
9
+ remote: http://rubygems.org/
10
+ specs:
11
+ activesupport (3.2.8)
12
+ i18n (~> 0.6)
13
+ multi_json (~> 1.0)
14
+ addressable (2.3.2)
15
+ bson (1.7.0)
16
+ bson_ext (1.7.0)
17
+ bson (~> 1.7.0)
18
+ cool.io (1.1.0)
19
+ iobuffer (>= 1.0.0)
20
+ daemons (1.1.9)
21
+ em-hiredis (0.1.1)
22
+ hiredis (~> 0.4.0)
23
+ em-websocket (0.3.8)
24
+ addressable (>= 2.1.1)
25
+ eventmachine (>= 0.12.9)
26
+ eventmachine (1.0.0)
27
+ fluentd (0.10.26)
28
+ cool.io (~> 1.1.0)
29
+ http_parser.rb (~> 0.5.1)
30
+ json (>= 1.4.3)
31
+ msgpack (~> 0.4.4)
32
+ yajl-ruby (~> 1.0)
33
+ fnordmetric (1.0.0)
34
+ activesupport
35
+ bson_ext (>= 1.4.0)
36
+ em-hiredis (= 0.1.1)
37
+ eventmachine
38
+ haml
39
+ i18n
40
+ json
41
+ rack
42
+ rack-test
43
+ redis (>= 2.2.2)
44
+ sinatra (>= 1.2.6)
45
+ thin (~> 1.3.0)
46
+ websocket-rack (= 0.4.0)
47
+ yajl-ruby
48
+ haml (3.1.7)
49
+ hiredis (0.4.5)
50
+ http_parser.rb (0.5.3)
51
+ i18n (0.6.1)
52
+ iobuffer (1.1.2)
53
+ json (1.7.5)
54
+ mock_redis (0.5.3)
55
+ msgpack (0.4.7)
56
+ multi_json (1.3.6)
57
+ rack (1.4.1)
58
+ rack-protection (1.2.0)
59
+ rack
60
+ rack-test (0.6.2)
61
+ rack (>= 1.0)
62
+ rake (0.9.2.2)
63
+ redis (3.0.2)
64
+ sinatra (1.3.3)
65
+ rack (~> 1.3, >= 1.3.6)
66
+ rack-protection (~> 1.2)
67
+ tilt (~> 1.3, >= 1.3.3)
68
+ thin (1.3.1)
69
+ daemons (>= 1.0.9)
70
+ eventmachine (>= 0.12.6)
71
+ rack (>= 1.0.0)
72
+ tilt (1.3.3)
73
+ websocket-rack (0.4.0)
74
+ em-websocket (~> 0.3.6)
75
+ eventmachine (~> 1.0.0.beta.4)
76
+ rack
77
+ thin
78
+ yajl-ruby (1.1.0)
79
+
80
+ PLATFORMS
81
+ ruby
82
+
83
+ DEPENDENCIES
84
+ fluent-plugin-fnordmetric!
85
+ mock_redis
86
+ rake (>= 0.9.2)
data/README.md ADDED
@@ -0,0 +1,21 @@
1
+ fluent-plugin-fnordmetric
2
+ =========================
3
+
4
+ fnordmetric plugin for fluent Event Collector
5
+
6
+ [![Build Status](https://secure.travis-ci.org/achied/fluent-plugin-fnordmetric.png)](http://travis-ci.org/achied/fluent-plugin-fnordmetric)
7
+
8
+
9
+ # Getting Started
10
+ Setup the fnordmetric output:
11
+
12
+ ~~~~~
13
+ <match fnordmetric.*>
14
+ type fnordmetric
15
+ redis_url redis://localhost:6379
16
+ redis_prefix fnordmetric
17
+ event_queue_ttl 120
18
+ event_data_ttl 2592000
19
+ </match>
20
+ ~~~~~
21
+
data/Rakefile ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
3
+
4
+ require 'rake/testtask'
5
+ Rake::TestTask.new(:test) do |test|
6
+ test.libs << 'lib' << 'test'
7
+ test.pattern = 'test/**/test_*.rb'
8
+ test.test_files = Dir['test/plugin/*.rb']
9
+ test.ruby_opts = ['-rubygems'] if defined? Gem
10
+ test.ruby_opts << '-I.'
11
+ test.verbose = true
12
+ end
13
+
14
+ task :default => :test
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 0.0.1
@@ -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-fnordmetric"
6
+ gem.version = File.read("VERSION").strip
7
+ gem.authors = ["Eduardo Aceituno"]
8
+ gem.email = ["achied@gmail.com"]
9
+ gem.homepage = "https://github.com/achied/fluent-plugin-fnordmetric"
10
+ gem.summary = %q{fnordmetric plugin for fluent, an event collector}
11
+ gem.description = %q{fnordmetric plugin for fluent, an event collector}
12
+
13
+ gem.files = `git ls-files`.split("\n")
14
+ gem.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
15
+ gem.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
+ gem.require_paths = ["lib"]
17
+
18
+ gem.add_dependency "fluentd", ">= 0.10.7"
19
+ gem.add_dependency "fnordmetric", "1.0.0"
20
+
21
+ gem.add_development_dependency "rake", ">= 0.9.2"
22
+ gem.add_development_dependency "mock_redis"
23
+ end
@@ -0,0 +1,38 @@
1
+ module Fluent
2
+ class FnordMetricOutput < Output
3
+ Fluent::Plugin.register_output("fnordmetric", self)
4
+
5
+ attr_reader :api
6
+
7
+ config_param :redis_url, :string, :default => "redis://localhost:6379"
8
+ config_param :redis_prefix, :string, :default => "fnordmetric"
9
+ config_param :event_queue_ttl, :integer, :default => 120
10
+ config_param :event_data_ttl, :integer, :default => 3600*24*30
11
+
12
+ def initialize
13
+ require 'fnordmetric'
14
+ super
15
+ end
16
+
17
+ def configure(conf)
18
+ @api = FnordMetric::API.new(conf)
19
+ super
20
+ end
21
+
22
+ def start
23
+ super
24
+ end
25
+
26
+ def shutdown
27
+ @api.disconnect
28
+ super
29
+ end
30
+
31
+ def emit(tag, es, chain)
32
+ es.each { |time,record|
33
+ @api.event(:_type => tag, :info => record)
34
+ }
35
+ chain.next
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,43 @@
1
+ require 'test_helper'
2
+
3
+ class FnordMetricOutputTest < Test::Unit::TestCase
4
+
5
+ CONFIG = %[
6
+ redis_url redis://localhost:6379
7
+ redis_prefix fnordmetric
8
+ event_queue_ttl 120
9
+ event_data_ttl 2592000
10
+ ]
11
+
12
+ def setup
13
+ require 'lib/fluent/plugin/out_fnordmetric'
14
+ require 'fnordmetric'
15
+ FnordMetric::API.send(:include, RedisWrapper)
16
+ end
17
+
18
+
19
+ def create_driver(conf=CONFIG)
20
+ Fluent::Test::OutputTestDriver.new(Fluent::FnordMetricOutput).configure(conf)
21
+ end
22
+
23
+ def test_configure
24
+ d = create_driver
25
+ assert_equal 'redis://localhost:6379', d.instance.redis_url
26
+ assert_equal 'fnordmetric', d.instance.redis_prefix
27
+ assert_equal 120, d.instance.event_queue_ttl
28
+ assert_equal 2592000, d.instance.event_data_ttl
29
+ end
30
+
31
+ def test_event
32
+ d = create_driver
33
+ time = Time.parse("2011-01-02 13:14:15 UTC").to_i
34
+ d.tag = "fnordmetric"
35
+ d.emit({"a"=>1}, time)
36
+ event_id = d.instance.api.redis.lpop("#{d.instance.redis_prefix}-queue")
37
+ event = d.instance.api.redis.get "#{d.instance.redis_prefix}-event-#{event_id}"
38
+ event_json = JSON.parse(event)
39
+ assert_equal event_json["_type"], d.tag
40
+ assert_equal event_json["info"], {"a"=>1}
41
+ end
42
+
43
+ end
@@ -0,0 +1,28 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'test/unit'
5
+ require 'fluent/test'
6
+ require 'mock_redis'
7
+
8
+ class Test::Unit::TestCase
9
+ end
10
+
11
+ module RedisWrapper
12
+
13
+ def self.included base
14
+
15
+ base.class_eval do
16
+
17
+ attr_reader :redis
18
+ @@opts = nil
19
+
20
+ def connect
21
+ @redis = MockRedis.new(:url => @@opts[:redis_url])
22
+ end
23
+
24
+ end
25
+
26
+ end
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: fluent-plugin-fnordmetric
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Eduardo Aceituno
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-10-16 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: fluentd
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: 0.10.7
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: 0.10.7
30
+ - !ruby/object:Gem::Dependency
31
+ name: fnordmetric
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - '='
36
+ - !ruby/object:Gem::Version
37
+ version: 1.0.0
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - '='
44
+ - !ruby/object:Gem::Version
45
+ version: 1.0.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: 0.9.2
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 0.9.2
62
+ - !ruby/object:Gem::Dependency
63
+ name: mock_redis
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ description: fnordmetric plugin for fluent, an event collector
79
+ email:
80
+ - achied@gmail.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - .travis.yml
87
+ - COPYING
88
+ - Gemfile
89
+ - Gemfile.lock
90
+ - README.md
91
+ - Rakefile
92
+ - VERSION
93
+ - fluent-plugin-fnordmetric.gemspec
94
+ - lib/fluent/plugin/out_fnordmetric.rb
95
+ - test/plugin/out_fnordmetric.rb
96
+ - test/test_helper.rb
97
+ homepage: https://github.com/achied/fluent-plugin-fnordmetric
98
+ licenses: []
99
+ post_install_message:
100
+ rdoc_options: []
101
+ require_paths:
102
+ - lib
103
+ required_ruby_version: !ruby/object:Gem::Requirement
104
+ none: false
105
+ requirements:
106
+ - - ! '>='
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ none: false
111
+ requirements:
112
+ - - ! '>='
113
+ - !ruby/object:Gem::Version
114
+ version: '0'
115
+ requirements: []
116
+ rubyforge_project:
117
+ rubygems_version: 1.8.24
118
+ signing_key:
119
+ specification_version: 3
120
+ summary: fnordmetric plugin for fluent, an event collector
121
+ test_files: []