instrumental_agent 3.0.0.beta2 → 3.0.0.beta3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a86fe597ab71c9660d590e42ef37e0d9012a4f5adbe7742d265f3d20ffda1b9e
4
- data.tar.gz: cd56273db7523852982b58162361359fc3c9fcd3b8cae19bf87387bf63fe26b1
3
+ metadata.gz: 20bc1dfd989a1d555912b21cd1a43b0a2ebb235e411fed6b27746cd3c01ce2ad
4
+ data.tar.gz: 7e725c0d514db6cccba3827a76a7b73995b06084a54bf0637cf7c2423d2beb3b
5
5
  SHA512:
6
- metadata.gz: c68427fe4c900db650e45b46423c808263d86df275b9f49b44896973f4db3e25cd61b8fe9a0b67cba54acbe831b4c00a7cbfb8c7b7d6cc30959159e9e149d3dd
7
- data.tar.gz: 57f5554f876c9311d76305c60b754af1c7d1a8bb63b8682355217b014b927e1d0f500bea37daff954d5149d4015b1be80793f9f2ed8f713928b4af4d428e576f
6
+ metadata.gz: 356538412bb4aeeb4af6dbb912de961ca587b08410a48cc60b8246e7d138909dab5f75261dd441bf4fd9287868565c2a4554a313c0b9d43316ca7ac615f38b20
7
+ data.tar.gz: f819635e2b8ea0efaa7a25ed62cdf52d54b602e8b8703a7eea3b7975f83ed557ffe0cdd1a39b5dd97942492e3a872d4e343c6c179de18feb3dbb257c08faf1a8
@@ -1,26 +1,28 @@
1
- class EventAggregator
2
- attr_accessor :counts, :values, :received_at, :frequency
3
-
4
- def initialize(frequency:)
5
- @values = Hash.new
6
- @frequency = frequency
7
- end
1
+ module Instrumental
2
+ class EventAggregator
3
+ attr_accessor :counts, :values, :received_at, :frequency
8
4
 
9
- def put(command)
10
- command_at = command.time
11
- unless(command_at % frequency == 0)
12
- command.time = (command_at - (command_at % frequency))
5
+ def initialize(frequency:)
6
+ @values = Hash.new
7
+ @frequency = frequency
13
8
  end
14
- metadata = command.metadata
15
- @values[metadata] = (command + @values[metadata])
16
- end
17
9
 
18
- def size
19
- @values.size
20
- end
10
+ def put(command)
11
+ command_at = command.time
12
+ unless(command_at % frequency == 0)
13
+ command.time = (command_at - (command_at % frequency))
14
+ end
15
+ metadata = command.metadata
16
+ @values[metadata] = (command + @values[metadata])
17
+ end
21
18
 
22
- def coerce_time(time)
23
- itime = time.to_i
24
- (itime - (itime % frequency)).to_i
19
+ def size
20
+ @values.size
21
+ end
22
+
23
+ def coerce_time(time)
24
+ itime = time.to_i
25
+ (itime - (itime % frequency)).to_i
26
+ end
25
27
  end
26
28
  end
@@ -1,3 +1,3 @@
1
1
  module Instrumental
2
- VERSION = "3.0.0.beta2"
2
+ VERSION = "3.0.0.beta3"
3
3
  end
@@ -832,7 +832,7 @@ shared_examples "Instrumental Agent" do
832
832
 
833
833
  it "bypasses aggregator queue entirely for most commands when frequency == 0" do
834
834
  agent.frequency = 0 # this is red - 0 for green
835
- expect(EventAggregator).not_to receive(:new)
835
+ expect(Instrumental::EventAggregator).not_to receive(:new)
836
836
  agent.increment('a_metric')
837
837
  end
838
838
 
@@ -909,7 +909,7 @@ shared_examples "Instrumental Agent" do
909
909
 
910
910
  it "can be disabled by setting frequency to nil" do
911
911
  agent.frequency = nil
912
- expect(EventAggregator).not_to receive(:new)
912
+ expect(Instrumental::EventAggregator).not_to receive(:new)
913
913
  agent.increment('metric')
914
914
  wait do
915
915
  expect(server.commands.grep(/metric/).size).to eq(1)
@@ -918,7 +918,7 @@ shared_examples "Instrumental Agent" do
918
918
 
919
919
  it "can be disabled by setting frequency to 0" do
920
920
  agent.frequency = 0
921
- expect(EventAggregator).not_to receive(:new)
921
+ expect(Instrumental::EventAggregator).not_to receive(:new)
922
922
  agent.increment('metric')
923
923
  wait do
924
924
  expect(server.commands.grep(/metric/).size).to eq(1)
@@ -979,23 +979,6 @@ shared_examples "Instrumental Agent" do
979
979
  expect(server.commands.grep(/other 3/).size).to eq(1)
980
980
  end
981
981
 
982
- # this test really relies on the worker threads not working unexpectedly
983
- it "will overflow if the aggregator queue is full" do
984
- Timecop.travel(start_of_minute)
985
- with_constants('Instrumental::Agent::MAX_BUFFER' => 3) do
986
- allow(agent.logger).to receive(:debug)
987
- expect(agent.logger).to receive(:debug).with("Dropping command, queue full(3): increment overflow_test 4 300 1")
988
- agent.increment('overflow_test', 4, 300, 1)
989
- agent.increment('overflow_test', 4, 300, 1)
990
- agent.increment('overflow_test', 4, 300, 1)
991
- agent.increment('overflow_test', 4, 300, 1)
992
-
993
- expect(agent.instance_variable_get(:@aggregator_queue).size).to eq(3)
994
- agent.flush
995
- expect(agent.instance_variable_get(:@aggregator_queue).size).to eq(0)
996
- end
997
- end
998
-
999
982
  it "if aggregator is at max size, next command will force a forward to the sender thread" do
1000
983
  Timecop.travel(start_of_minute)
1001
984
  with_constants('Instrumental::Agent::MAX_AGGREGATOR_SIZE' => 3) do
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe EventAggregator, "time and frequency operations" do
3
+ describe Instrumental::EventAggregator, "time and frequency operations" do
4
4
  it "should massage time values to match the start of a window" do
5
- agg = EventAggregator.new(frequency: 10)
5
+ agg = Instrumental::EventAggregator.new(frequency: 10)
6
6
  Timecop.freeze do
7
7
  start_of_minute = Time.now.to_i - (Time.now.to_i % 60)
8
8
  times_to_report = [start_of_minute + 5, start_of_minute + 15]
@@ -20,11 +20,11 @@ describe EventAggregator, "time and frequency operations" do
20
20
  end
21
21
  end
22
22
 
23
- describe EventAggregator do
23
+ describe Instrumental::EventAggregator do
24
24
  it "should aggregate put operations to a given frequency" do
25
25
  start_of_minute = Time.now.to_i - (Time.now.to_i % 60)
26
26
  Timecop.freeze(Time.at(start_of_minute)) do
27
- agg = EventAggregator.new(frequency: 30)
27
+ agg = Instrumental::EventAggregator.new(frequency: 30)
28
28
  (Time.now.to_i..(Time.now.to_i + 119)).each do |time|
29
29
  agg.put(Instrumental::Command.new("increment", "abc", 1, time, 1))
30
30
  end
@@ -37,7 +37,7 @@ describe EventAggregator do
37
37
 
38
38
  it "should aggregate put operations to the same metric and last type wins" do
39
39
  Timecop.freeze do
40
- agg = EventAggregator.new(frequency: 6)
40
+ agg = Instrumental::EventAggregator.new(frequency: 6)
41
41
 
42
42
  agg.put(Instrumental::Command.new("gauge", "hello", 3.0, Time.now, 1))
43
43
  agg.put(Instrumental::Command.new("increment", "hello", 4.0, Time.now, 1))
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: instrumental_agent
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0.beta2
4
+ version: 3.0.0.beta3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Expected Behavior