fluent-plugin-memcached 0.0.6 → 0.0.7
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/README.md +2 -1
- data/fluent-plugin-memcached.gemspec +1 -1
- data/lib/fluent/plugin/out_memcached.rb +22 -5
- data/test/plugin/test_out_memcached.rb +29 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ecd435b2a7544144b0d4491bf27dcdbde3983616
|
4
|
+
data.tar.gz: 7ba5ef4be3af483784dbe95a09215bb85a2cad36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1e45543bc50066e97449d032c5e40455471dda3c85fa4f3154e45ae25071f33a13548227282e5a916396568d28747a845cf124054d9edeb565146b57e8d2f5ec
|
7
|
+
data.tar.gz: 086c2879c5f2c9bcd366ed14c3483a7f8049a3985ff503a78fdf802d66feb6046b43ad55a985cf3c593fba2e499ce0dbd5d61f7578f237b4bf76b7eefe4f781b
|
data/README.md
CHANGED
@@ -20,11 +20,12 @@ Default values would look like this:
|
|
20
20
|
type memcached
|
21
21
|
host localhost
|
22
22
|
port 11211
|
23
|
+
increment false
|
23
24
|
# value_separater " "
|
24
25
|
</match>
|
25
26
|
```
|
26
27
|
|
27
|
-
To
|
28
|
+
To store values as json, like this:
|
28
29
|
|
29
30
|
```
|
30
31
|
<match dummy>
|
@@ -4,7 +4,9 @@ class Fluent::MemcachedOutput < Fluent::BufferedOutput
|
|
4
4
|
config_param :host, :string, :default => 'localhost'
|
5
5
|
config_param :port, :integer, :default => 11211
|
6
6
|
|
7
|
+
config_param :increment, :bool, :default => false
|
7
8
|
config_param :value_separater, :string, :default => ' '
|
9
|
+
|
8
10
|
config_param :value_format, :string, :default => 'raw'
|
9
11
|
config_param :param_names, :string, :default => nil # nil doesn't allowed for json
|
10
12
|
|
@@ -21,7 +23,7 @@ class Fluent::MemcachedOutput < Fluent::BufferedOutput
|
|
21
23
|
if @value_format == 'json' and @param_names.nil?
|
22
24
|
raise Fluent::ConfigError, "param_names MUST be specified in the case of json format"
|
23
25
|
end
|
24
|
-
@formatter = RecordValueFormatter.new(@value_separater, @value_format, @param_names)
|
26
|
+
@formatter = RecordValueFormatter.new(@increment, @value_separater, @value_format, @param_names)
|
25
27
|
end
|
26
28
|
|
27
29
|
def start
|
@@ -39,16 +41,29 @@ class Fluent::MemcachedOutput < Fluent::BufferedOutput
|
|
39
41
|
|
40
42
|
def write(chunk)
|
41
43
|
chunk.msgpack_each { |tag, time, record|
|
42
|
-
|
44
|
+
key = @formatter.key(record)
|
45
|
+
value = @formatter.value(record)
|
46
|
+
if @increment
|
47
|
+
if @memcached.get(key) == nil
|
48
|
+
# initialize increment value
|
49
|
+
@memcached.incr(key, 1, nil, 0)
|
50
|
+
end
|
51
|
+
@memcached.incr(key, amt=value)
|
52
|
+
|
53
|
+
else
|
54
|
+
@memcached.set(key, value)
|
55
|
+
end
|
43
56
|
}
|
44
57
|
end
|
45
58
|
|
46
59
|
class RecordValueFormatter
|
60
|
+
attr_reader :increment
|
47
61
|
attr_reader :value_separater
|
48
62
|
attr_reader :value_format
|
49
63
|
attr_reader :param_names
|
50
64
|
|
51
|
-
def initialize(value_separater, value_format, param_names)
|
65
|
+
def initialize(increment, value_separater, value_format, param_names)
|
66
|
+
@increment = increment
|
52
67
|
@value_separater = value_separater
|
53
68
|
@value_format = value_format
|
54
69
|
@param_names = param_names
|
@@ -59,16 +74,18 @@ class Fluent::MemcachedOutput < Fluent::BufferedOutput
|
|
59
74
|
end
|
60
75
|
|
61
76
|
def value(record)
|
77
|
+
values = record.values.drop(1)
|
62
78
|
case @value_format
|
63
79
|
when 'json'
|
64
|
-
values = record.values.drop(1)
|
65
80
|
hash = {}
|
66
81
|
@param_names.split(/\s*,\s*/).each_with_index { |param_name, i|
|
67
82
|
hash[param_name] = (i > values.size - 1) ? nil : values[i]
|
68
83
|
}
|
69
84
|
hash.to_json
|
70
85
|
else
|
71
|
-
|
86
|
+
return values.first.to_i if @increment
|
87
|
+
|
88
|
+
values.join(@value_separater)
|
72
89
|
end
|
73
90
|
end
|
74
91
|
end
|
@@ -19,6 +19,12 @@ class MemcachedOutputTest < Test::Unit::TestCase
|
|
19
19
|
param_names param1,param2
|
20
20
|
]
|
21
21
|
|
22
|
+
CONFIG_INCREMENT = %[
|
23
|
+
host 127.0.0.1
|
24
|
+
port 11211
|
25
|
+
increment true
|
26
|
+
]
|
27
|
+
|
22
28
|
CONFIG_MYSQL = %[
|
23
29
|
host 127.0.0.1
|
24
30
|
port 11211
|
@@ -33,6 +39,7 @@ class MemcachedOutputTest < Test::Unit::TestCase
|
|
33
39
|
d = create_driver('')
|
34
40
|
assert_equal 'localhost', d.instance.host
|
35
41
|
assert_equal 11211, d.instance.port
|
42
|
+
assert_equal false, d.instance.increment
|
36
43
|
assert_equal ' ', d.instance.value_separater
|
37
44
|
|
38
45
|
d = create_driver
|
@@ -53,6 +60,11 @@ class MemcachedOutputTest < Test::Unit::TestCase
|
|
53
60
|
]
|
54
61
|
}
|
55
62
|
|
63
|
+
d = create_driver(CONFIG_INCREMENT)
|
64
|
+
assert_equal '127.0.0.1', d.instance.host
|
65
|
+
assert_equal 11211, d.instance.port
|
66
|
+
assert_equal true, d.instance.increment
|
67
|
+
|
56
68
|
d = create_driver(CONFIG_MYSQL)
|
57
69
|
assert_equal '127.0.0.1', d.instance.host
|
58
70
|
assert_equal 11211, d.instance.port
|
@@ -96,6 +108,23 @@ class MemcachedOutputTest < Test::Unit::TestCase
|
|
96
108
|
assert_equal record2_value_json, d.instance.memcached.get('d')
|
97
109
|
end
|
98
110
|
|
111
|
+
def test_write_increment
|
112
|
+
d = create_driver(CONFIG_INCREMENT)
|
113
|
+
time = Time.parse('2011-01-02 13:14:15 UTC').to_i
|
114
|
+
record1 = {'key' => 'count1', 'param1' => 1}
|
115
|
+
record2 = {'key' => 'count2', 'param1' => 2}
|
116
|
+
record3 = {'key' => 'count1', 'param1' => 3}
|
117
|
+
record4 = {'key' => 'count2', 'param1' => 4}
|
118
|
+
d.emit(record1, time)
|
119
|
+
d.emit(record2, time)
|
120
|
+
d.emit(record3, time)
|
121
|
+
d.emit(record4, time)
|
122
|
+
d.run
|
123
|
+
|
124
|
+
assert_equal (1 + 3), d.instance.memcached.get('count1').to_i
|
125
|
+
assert_equal (2 + 4), d.instance.memcached.get('count2').to_i
|
126
|
+
end
|
127
|
+
|
99
128
|
def test_write_to_mysql
|
100
129
|
d = create_driver(CONFIG_MYSQL)
|
101
130
|
time = Time.parse('2011-01-02 13:14:15 UTC').to_i
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fluent-plugin-memcached
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- innossh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-12-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: fluentd
|