instrumental_agent 3.0.0.beta2 → 3.0.0.beta3

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
  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