fluent-plugin-querycombiner 0.0.2 → 0.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1124703306d418f033d3ff5127b918532e8b3930
4
- data.tar.gz: df04cbd16f7465ec26fe3acadffa687163da88b2
3
+ metadata.gz: a7abce3623ce7f91ee8b41140d8a44a2e0d86621
4
+ data.tar.gz: 4ff7b64144bab38c734abcc8c9562419f21730fa
5
5
  SHA512:
6
- metadata.gz: 82d7aef42eacf95e1f3282205e872523d9f00f742c606820e51358d3710966a76e5a640223a707facea22d18d24bb7e384c7e4c2b9dc9b701d2931b412ab9af2
7
- data.tar.gz: 26a39c63fb7b00e9e143485ed820739417b27fa99b7f424e6f40f95251d710622228cf2c0afe68c58dd465c1affa3115b4d0835c27484ebe0746484738b7a4dc
6
+ metadata.gz: 174b614a77bb2599908f609829474149b92b0cf9eef7fde24f85da6d4321e102dc9df476f5385d6c082592db98e8889f3965913d291d9c4af3b2afa39e2d7a19
7
+ data.tar.gz: 1ed7b35fdc71f39798fe51235c318ab9438d9e780f4dbb316ce448c93825f74f187aa02ff9bd8443f0528c86961dac6deb191148e3408def37b0a81deae6e2d5
data/README.md CHANGED
@@ -235,8 +235,13 @@ The inactive expire time in seconds. By default it's **1800** (30 minutes).
235
235
  ### buffer_size
236
236
  The max queries to store in redis. By default it's **1000**.
237
237
 
238
+ ### continuous_dump
239
+ If you set this variable **true**, your pre-combined queries will not remove even after combined by `<dump>` block. Your pre-combined queries will remove only after their expire times set by `query_ttl`. Also your pre-combined queries will be prolonged if dumped.
240
+
241
+ By default it's **false**.
242
+
238
243
  ### remove_interval
239
- The interval time to delete expired or overflowed queries which configured by `query_ttl` and `buffer_size`. By default it's 10 [sec].
244
+ The interval time to delete expired or overflowed queries which configured by `query_ttl` and `buffer_size`. By default it's `10` [sec].
240
245
 
241
246
  ### redis_key_prefix
242
247
 
@@ -3,7 +3,7 @@ $:.push File.expand_path("../lib", __FILE__)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = "fluent-plugin-querycombiner"
6
- spec.version = "0.0.2"
6
+ spec.version = "0.0.3"
7
7
  spec.authors = ["Takahiro Kamatani"]
8
8
  spec.email = ["buhii314@gmail.com"]
9
9
  spec.description = %q{Fluent plugin to combine multiple queries.}
@@ -13,6 +13,7 @@ module Fluent
13
13
  config_param :query_identify, :string, :default => 'session-id'
14
14
  config_param :query_ttl, :integer, :default => 1800
15
15
  config_param :buffer_size, :integer, :default => 1000
16
+ config_param :continuous_dump, :bool, :default => false
16
17
 
17
18
  config_param :time_format, :string, :default => '$time'
18
19
 
@@ -229,7 +230,14 @@ module Fluent
229
230
  Fluent::Engine.emit @tag, Fluent::Engine.now, combined_record
230
231
 
231
232
  # remove qid
232
- do_release(qid)
233
+ if not @continuous_dump
234
+ do_release(qid)
235
+ else
236
+ # continuous_dump will prolong qid's TTL.
237
+ tryOnRedis 'zadd', @redis_key_prefix, time, qid
238
+ tryOnRedis 'expire', @redis_key_prefix + qid, @query_ttl
239
+ end
240
+
233
241
  end
234
242
  end
235
243
 
@@ -31,6 +31,19 @@ class QueryCombinerOutputTest < Test::Unit::TestCase
31
31
  @redis.quit
32
32
  end
33
33
 
34
+ def tryOnRedis(method, *args)
35
+ tries = 0
36
+ begin
37
+ @redis.send(method, *args) if @redis.respond_to? method
38
+ rescue Redis::CommandError => e
39
+ tries += 1
40
+ # retry 3 times
41
+ retry if tries <= @redis_retry
42
+ $log.warn %Q[redis command retry failed : #{method}(#{args.join(', ')})]
43
+ raise e.message
44
+ end
45
+ end
46
+
34
47
  def create_driver(conf, tag='test')
35
48
  Fluent::Test::BufferedOutputTestDriver.new(Fluent::QueryCombinerOutput, tag).configure(conf)
36
49
  end
@@ -410,12 +423,52 @@ class QueryCombinerOutputTest < Test::Unit::TestCase
410
423
 
411
424
  end
412
425
 
426
+ def test_query_ttl
427
+
428
+ end
429
+
413
430
  def test_buffer_size
414
431
 
415
432
  end
416
433
 
417
- def test_query_ttl
434
+ def test_continuous_dump
435
+ d = create_driver %[
436
+ redis_key_prefix test_query_combiner:
437
+
438
+ query_identify event_id
439
+ query_ttl 5 # time to live[sec]
440
+ buffer_size 1000 # queries
441
+ continuous_dump true
442
+ remove_interval 5
443
+
444
+ <catch>
445
+ condition status == 'event-start'
446
+ </catch>
447
+
448
+ <dump>
449
+ condition status == 'event-finish'
450
+ </dump>
451
+
452
+ <release>
453
+ condition status == 'event-error'
454
+ </release>
455
+ ]
456
+ assert_equal false, (tryOnRedis 'exists', "test_query_combiner:id000")
457
+
458
+ d.emit({"event_id"=>"id000", "status"=>"event-start", "key_init"=>"init"}, Time.now.to_f)
459
+ d.emit({"event_id"=>"id000", "status"=>"event-finish"}, Time.now.to_f)
460
+ d.emit({"event_id"=>"id000", "status"=>"event-finish", "key_fin1"=>"fin1"}, Time.now.to_f)
461
+ d.emit({"event_id"=>"id000", "status"=>"event-finish", "key_fin2"=>"fin2"}, Time.now.to_f)
462
+ d.run
463
+
464
+ assert_equal d.emits.length, 3
465
+ assert_equal d.emits[0][2], {"event_id"=>"id000", "status"=>"event-finish", "key_init"=>"init"}
466
+ assert_equal d.emits[1][2], {"event_id"=>"id000", "status"=>"event-finish", "key_init"=>"init", "key_fin1"=>"fin1"}
467
+ assert_equal d.emits[2][2], {"event_id"=>"id000", "status"=>"event-finish", "key_init"=>"init", "key_fin2"=>"fin2"}
418
468
 
469
+ assert_equal true, (tryOnRedis 'exists', "test_query_combiner:id000")
470
+ sleep 6
471
+ assert_equal false, (tryOnRedis 'exists', "test_query_combiner:id000")
419
472
  end
420
473
 
421
474
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fluent-plugin-querycombiner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Takahiro Kamatani
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-31 00:00:00.000000000 Z
11
+ date: 2014-12-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake