fastly_fluent 0.0.1 → 0.0.2

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.
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)\
4
4
 
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "fastly_fluent"
7
- spec.version = '0.0.1'
7
+ spec.version = '0.0.2'
8
8
  spec.authors = ["Benjamin Bryant"]
9
9
  spec.email = ["benjaminhbryant@gmail.com"]
10
10
  spec.description = %q{fluent plugin for JSON encoded fastly syslogs}
@@ -29,6 +29,7 @@ module Fluent
29
29
  super
30
30
  require 'cool.io'
31
31
  require 'fluent/plugin/socket_util'
32
+ require 'cgi'
32
33
  end
33
34
 
34
35
  config_param :port, :integer, :default => 5140
@@ -89,10 +90,35 @@ module Fluent
89
90
  tag = record.delete('tag')
90
91
 
91
92
  message = JSON.parse(record.delete('message'))
93
+
94
+ ## copy message params into message, skipping null items
92
95
  message.each do |k,v|
93
96
  record[k] = v unless v == "(null)"
94
97
  end
95
98
 
99
+ ## parse url
100
+ if message['url']
101
+ uri = URI.parse(message['url'])
102
+ record['path'] = uri.path
103
+
104
+
105
+ # emit query params
106
+ unless uri.query.nil? || uri.query == ""
107
+
108
+ CGI::parse(uri.query).each do |k,v|
109
+ if record[k].nil?
110
+ if v.count > 1
111
+ record[k] = v
112
+ elsif v.count == 1
113
+ record[k] = v.first
114
+ else
115
+ record[k] = true
116
+ end
117
+ end
118
+ end
119
+ end
120
+ end
121
+
96
122
 
97
123
  emit(tag, time, record)
98
124
  }
@@ -68,6 +68,43 @@ class FastlyInputTest < Test::Unit::TestCase
68
68
  }
69
69
  end
70
70
 
71
+ def test_param_splitting
72
+
73
+
74
+ configs = {'127.0.0.1' => CONFIG}
75
+ configs.merge!('::1' => IPv6_CONFIG) if ipv6_enabled?
76
+
77
+ configs.each_pair { |k, v|
78
+ d = create_driver(v)
79
+
80
+ test = "<134>2014-07-10T23:18:15Z cache-hk91 td.server.requests[11226]: {\"ip\":\"166.137.213.198\",\"client_id\":\"17a8e5f8f64a9a7c85d1ccab51bcfdf6\",\"status\":200,\"user_agent\":\"Mozilla/5.0 (iPhone; CPU iPhone OS 7_0_3 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11B511 Safari/9537.53\",\"null_val\":\"(null)\",\"url\":\"/my/path?query=param&bob=first&bob=second&sally\"}"
81
+
82
+
83
+
84
+ d.run do
85
+ u = Fluent::SocketUtil.create_udp_socket(k)
86
+ u.connect(k, PORT)
87
+ u.send(test, 0)
88
+
89
+ sleep 1
90
+ end
91
+
92
+ tag =d.emits.first[0]
93
+ time = d.emits.first[1]
94
+ record = d.emits.first[2]
95
+
96
+ assert_equal(tag, 'td.server.requests')
97
+ assert_equal(time, Time.new(2014,7,10,23,18,15).to_i)
98
+ assert_equal(record['ip'], '166.137.213.198')
99
+ assert_equal(record['path'], '/my/path')
100
+
101
+ assert_equal(record['query'], 'param')
102
+ assert_equal(record['bob'], ["first","second"])
103
+ assert_equal(record['sally'], true)
104
+
105
+ }
106
+ end
107
+
71
108
  def test_msg_size
72
109
  d = create_driver
73
110
  tests = create_test_case
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastly_fluent
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - Benjamin Bryant
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-07-13 00:00:00.000000000 Z
12
+ date: 2014-07-14 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: bundler
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ~>
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :development
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ~>
25
28
  - !ruby/object:Gem::Version
@@ -27,29 +30,33 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: rake
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
- - - '>='
35
+ - - ! '>='
32
36
  - !ruby/object:Gem::Version
33
37
  version: '0'
34
38
  type: :development
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
- - - '>='
43
+ - - ! '>='
39
44
  - !ruby/object:Gem::Version
40
45
  version: '0'
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: fluentd
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
- - - '>='
51
+ - - ! '>='
46
52
  - !ruby/object:Gem::Version
47
53
  version: '0'
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
- - - '>='
59
+ - - ! '>='
53
60
  - !ruby/object:Gem::Version
54
61
  version: '0'
55
62
  description: fluent plugin for JSON encoded fastly syslogs
@@ -71,26 +78,33 @@ files:
71
78
  homepage: ''
72
79
  licenses:
73
80
  - MIT
74
- metadata: {}
75
81
  post_install_message:
76
82
  rdoc_options: []
77
83
  require_paths:
78
84
  - lib
79
85
  required_ruby_version: !ruby/object:Gem::Requirement
86
+ none: false
80
87
  requirements:
81
- - - '>='
88
+ - - ! '>='
82
89
  - !ruby/object:Gem::Version
83
90
  version: '0'
91
+ segments:
92
+ - 0
93
+ hash: 4532696612457073463
84
94
  required_rubygems_version: !ruby/object:Gem::Requirement
95
+ none: false
85
96
  requirements:
86
- - - '>='
97
+ - - ! '>='
87
98
  - !ruby/object:Gem::Version
88
99
  version: '0'
100
+ segments:
101
+ - 0
102
+ hash: 4532696612457073463
89
103
  requirements: []
90
104
  rubyforge_project:
91
- rubygems_version: 2.0.3
105
+ rubygems_version: 1.8.25
92
106
  signing_key:
93
- specification_version: 4
107
+ specification_version: 3
94
108
  summary: ''
95
109
  test_files:
96
110
  - test/helper.rb
checksums.yaml DELETED
@@ -1,7 +0,0 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 908f50379a7eebc384dadea58ff75cab3452ee55
4
- data.tar.gz: 4bff227b7727af33b38d45afef1600b0b1c02935
5
- SHA512:
6
- metadata.gz: 1c4125fdf6248b2a62f5fd1916c85749e4ac3921c689f62555f3d7913c5a98cdd65f16df999f499a84dd03e74988494231be2ff75302d10ff8b2e6d7428d74ed
7
- data.tar.gz: 3b33e3ed78c7bcea9c13b69ee51eea4ef764c6d4c5bce813e7af94da3bde49a7ae1488cd772c4a619ba87c763ae51ae4cd5d9e3b47220b8c86c5f533c6557011