Skip to content
This repository has been archived by the owner on Dec 11, 2023. It is now read-only.

Commit

Permalink
internally accept time or measure_time
Browse files Browse the repository at this point in the history
  • Loading branch information
chancefeick committed Oct 7, 2016
1 parent 7673919 commit 78f4e1f
Show file tree
Hide file tree
Showing 6 changed files with 14 additions and 57 deletions.
5 changes: 2 additions & 3 deletions lib/librato/metrics/aggregator.rb
Expand Up @@ -119,6 +119,7 @@ def queued
multidimensional = true if data[:time]
entries << entry
end
time = multidimensional ? :time : :measure_time
req =
if multidimensional
{ measurements: entries }
Expand All @@ -127,9 +128,7 @@ def queued
end
req[:source] = @source if @source
req[:tags] = @tags if has_tags?
req[:measure_time] = @measure_time if @measure_time
req[:time] = @time if @time
req[:multidimensional] = true if multidimensional
req[time] = @time if @time

req
end
Expand Down
11 changes: 4 additions & 7 deletions lib/librato/metrics/persistence/direct.rb
Expand Up @@ -17,12 +17,10 @@ def persist(client, queued, options={})
end
requests.each do |request|
resource =
if queued[:tags] || queued[:multidimensional]
# request contains per-measurement tags
queued.delete(:multidimensional) if queued[:multidimensional]
"measurements"
else
if queued[:gauges] || queued[:counters]
"metrics"
else
"measurements"
end
payload = SmartJSON.write(request)
# expects 200
Expand Down Expand Up @@ -66,8 +64,7 @@ def fetch_globals(queued)
end

def queue_count(queued)
queued.reject { |key| key == :multidimensional }
.inject(0) { |result, data| result + data.last.size }
queued.inject(0) { |result, data| result + data.last.size }
end

end
Expand Down
6 changes: 1 addition & 5 deletions lib/librato/metrics/processor.rb
Expand Up @@ -99,8 +99,7 @@ def setup_common_options(options)
@per_request = options[:per_request] || MEASUREMENTS_PER_REQUEST
@source = options[:source]
@tags = options.fetch(:tags, {})
@measure_time = options[:measure_time] && options[:measure_time].to_i
@time = options[:time] && options[:time].to_i
@time = (options[:time] && options[:time].to_i || options[:measure_time] && options[:measure_time].to_i)
@create_time = Time.now
@clear_on_failure = options[:clear_failures] || false
@prefix = options[:prefix]
Expand All @@ -116,9 +115,6 @@ def autosubmit_check
def validate_parameters(options)
invalid_combinations = [
[:source, :tags],
[:measure_time, :time],
[:source, :time],
[:measure_time, :tags]
]
opts = options.keys.to_set
invalid_combinations.each do |combo|
Expand Down
7 changes: 3 additions & 4 deletions lib/librato/metrics/queue.rb
Expand Up @@ -59,7 +59,6 @@ def add(measurements)
@queued[type] ||= []
@queued[type] << metric
end
@queued[:multidimensional] = true if multidimensional
end
submit_check
self
Expand Down Expand Up @@ -143,18 +142,18 @@ def merge!(mergeable)
def queued
return {} if @queued.empty?
globals = {}
time = has_tags? ? :time : :measure_time
globals[time] = @time if @time
globals[:source] = @source if @source
globals[:tags] = @tags if has_tags?
globals[:measure_time] = @measure_time if @measure_time
globals[:time] = @time if @time
@queued.merge(globals)
end

# Count of metrics currently queued
#
# @return Integer
def size
self.queued.reject { |key| key == :multidimensional }.inject(0) { |result, data| result + data.last.size }
self.queued.inject(0) { |result, data| result + data.last.size }
end
alias :length :size

Expand Down
21 changes: 2 additions & 19 deletions spec/unit/metrics/aggregator_spec.rb
Expand Up @@ -55,14 +55,6 @@ module Metrics
tags: { hostname: "metrics-web-stg-1" }
)
}.to raise_error(InvalidParameters)
expect { Aggregator.new(measure_time: Time.now, time: Time.now) }.to raise_error(InvalidParameters)
expect { Aggregator.new(source: "metrics-web-stg-1", time: Time.now) }.to raise_error(InvalidParameters)
expect {
Aggregator.new(
measure_time: Time.now,
tags: { hostname: "metrics-web-stg-1" }
)
}.to raise_error(InvalidParameters)
end
end
end
Expand Down Expand Up @@ -121,15 +113,6 @@ module Metrics
expect {
subject.add test: { source: "metrics-web-stg-1", tags: { hostname: "metrics-web-stg-1" }, value: 123 }
}.to raise_error(InvalidParameters)
expect {
subject.add test: { measure_time: Time.now, time: Time.now, value: 123 }
}.to raise_error(InvalidParameters)
expect {
subject.add test: { source: "metrics-web-stg-1", time: Time.now, value: 123 }
}.to raise_error(InvalidParameters)
expect {
subject.add test: { tags: { hostname: "metrics-web-stg-1" }, measure_time: Time.now, value: 123 }
}.to raise_error(InvalidParameters)
end
end

Expand Down Expand Up @@ -331,7 +314,7 @@ module Metrics

it "includes global measure_time if set" do
measure_time = (Time.now-1000).to_i
a = Aggregator.new(measure_time: measure_time)
a = Aggregator.new(source: "foo", measure_time: measure_time)
a.add foo: 12
expect(a.queued[:measure_time]).to eq(measure_time)
end
Expand All @@ -349,7 +332,7 @@ module Metrics
context "when time is set" do
it "includes global time" do
expected_time = (Time.now-1000).to_i
subject = Aggregator.new(time: expected_time)
subject = Aggregator.new(tags: { foo: "bar" }, time: expected_time)
subject.add test: 10

expect(subject.queued[:time]).to eq(expected_time)
Expand Down
21 changes: 2 additions & 19 deletions spec/unit/metrics/queue_spec.rb
Expand Up @@ -48,14 +48,6 @@ module Metrics
tags: { hostname: "metrics-web-stg-1" }
)
}.to raise_error(InvalidParameters)
expect { Queue.new(measure_time: Time.now, time: Time.now) }.to raise_error(InvalidParameters)
expect { Queue.new(source: "metrics-web-stg-1", time: Time.now) }.to raise_error(InvalidParameters)
expect {
Queue.new(
measure_time: Time.now,
tags: { hostname: "metrics-web-stg-1" }
)
}.to raise_error(InvalidParameters)
end
end
end
Expand Down Expand Up @@ -114,15 +106,6 @@ module Metrics
expect {
subject.add test: { source: "metrics-web-stg-1", tags: { hostname: "metrics-web-stg-1" }, value: 123 }
}.to raise_error(InvalidParameters)
expect {
subject.add test: { measure_time: Time.now, time: Time.now, value: 123 }
}.to raise_error(InvalidParameters)
expect {
subject.add test: { source: "metrics-web-stg-1", time: Time.now, value: 123 }
}.to raise_error(InvalidParameters)
expect {
subject.add test: { tags: { hostname: "metrics-web-stg-1" }, measure_time: Time.now, value: 123 }
}.to raise_error(InvalidParameters)
end
end

Expand Down Expand Up @@ -478,7 +461,7 @@ module Metrics

it "includes global measure_time if set" do
measure_time = (Time.now-1000).to_i
q = Queue.new(measure_time: measure_time)
q = Queue.new(source: "foo", measure_time: measure_time)
q.add foo: 12
expect(q.queued[:measure_time]).to eq(measure_time)
end
Expand All @@ -495,7 +478,7 @@ module Metrics
context "when time is set" do
it "includes global time" do
expected_time = (Time.now-1000).to_i
queue = Queue.new(time: expected_time)
queue = Queue.new(tags: { foo: "bar" }, time: expected_time)
queue.add test: 10
expect(queue.queued[:time]).to eq(expected_time)
end
Expand Down

0 comments on commit 78f4e1f

Please sign in to comment.