better_fx 0.1.1 → 0.2.0

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: 55b10acd6ff246c5c3079d2a7b758489b39bd724
4
- data.tar.gz: e047c129bde742ccbb1912e3caac85ac5f9dbad1
3
+ metadata.gz: ff923b091c09a0c2e4f23274f3d4189d32775e5c
4
+ data.tar.gz: 0c84f088ff4c5b4030a90ba2f7dce02065894ef3
5
5
  SHA512:
6
- metadata.gz: 8de14bee27628714f05d675d0686df71a9d7cfca13cee16ea0258bc9f61af0c4a3dd3252ff8fa747eebcf5d3fd517a3bcb8ce9134d79360440a039621ccd557f
7
- data.tar.gz: d234b348ef4051e3c373f63f4a3ea25cd32fe4a8598bead1cb0f8fdbd5c4233349b49f3f43e85fca7139013e05b5ea7e95a041e0db01e8a1a5ba94347eb5add8
6
+ metadata.gz: 2b72084b4f6cffd71bb56240378ecf9dd187a9cae630491efff48a1b4f880a16b37a3fa857eac1dbecdeea59c5723aa75f991790949799259bbf349056cf41ec
7
+ data.tar.gz: d2ce91f3eced03a85f5995ac35963270619f0f02cfce94dbabc14adaef5b04e490fd1ec7a9b68d78490971dd9ae8850f2cc5cb6e2ce33917ea49cf2290b33ba4
data/README.md CHANGED
@@ -13,6 +13,17 @@ bfx = BetterFx::Client.new
13
13
  bfx.increment_counter :beans
14
14
  ```
15
15
 
16
+ Or you might want to report the value of a measurement you've taken
17
+
18
+ ```ruby
19
+ require "better_fx"
20
+ bfx = BetterFx::Client.new
21
+ # This will send the value 11 to the SignalFx gauge metric named
22
+ # "soccer_ball_air_pressure" with the current unix timestamp and vanilla
23
+ # metadata dimensions
24
+ bfx.gauge :soccer_ball_air_pressure, value: 11
25
+ ```
26
+
16
27
  ## Configuration
17
28
 
18
29
  To use BetterFx with the least amount of code, just set the environment variable
@@ -1,8 +1,12 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $LOAD_PATH.push File.expand_path("../lib", __FILE__)
3
+ require "better_fx/version"
4
+
1
5
  Gem::Specification.new do |s|
2
6
  s.name = "better_fx"
3
- s.version = "0.1.1"
7
+ s.version = BetterFx::VERSION
8
+ s.date = BetterFx::VERSION_DATE
4
9
  s.license = "MIT"
5
- s.date = "2016-05-17"
6
10
  s.summary = "A more idiomatic interface to SignalFx."
7
11
  s.description = "A convenient gem for developers to interact with SignalFx with a trivial amount of effort"
8
12
  s.authors = ["Courtland Caldwell"]
@@ -15,7 +15,7 @@ module BetterFx
15
15
  # @params dimensions [Array<Hash>] the metadata dimensions to be associated with the counter
16
16
  def increment_counter(counter_name, value: 1, timestamp: nil, dimensions: [])
17
17
  return unless configuration.supported_environments.include? configuration.current_environment
18
- timestamp ||= 1000 * Time.now.to_i
18
+ timestamp ||= default_timestamp
19
19
  dimensions << { env: configuration.current_environment } if dimensions.empty?
20
20
  signalfx_client.bf_xmit(counters: [
21
21
  metric: counter_name.to_s,
@@ -25,8 +25,31 @@ module BetterFx
25
25
  ])
26
26
  end
27
27
 
28
+ # Send a gauge measurement to SignalFx (if the current environment supports using SignalFx)
29
+ #
30
+ # @params gauge_name [Symbol, String] the name of the gauge to send a measurement of
31
+ # @params value [Fixnum] the measured value
32
+ # @params timestamp [Fixnum, String] the timestamp, in milliseconds since the unix epoch (defaults to the timestamp
33
+ # on the host running your code)
34
+ # @params dimensions [Array<Hash>] the metadata dimensions to be associated with the gauge measurement
35
+ def gauge(gauge_name, value: nil, timestamp: nil, dimensions: [])
36
+ return unless configuration.supported_environments.include? configuration.current_environment
37
+ timestamp ||= default_timestamp
38
+ dimensions << { env: configuration.current_environment } if dimensions.empty?
39
+ signalfx_client.bf_xmit(gauges: [
40
+ metric: gauge_name.to_s,
41
+ value: value,
42
+ timestamp: timestamp.to_s,
43
+ dimensions: dimensions,
44
+ ])
45
+ end
46
+
28
47
  private
29
48
 
49
+ def default_timestamp
50
+ 1000 * Time.now.to_i
51
+ end
52
+
30
53
  def signalfx_client
31
54
  SignalFx.new configuration.signalfx_api_token
32
55
  end
@@ -0,0 +1,4 @@
1
+ module BetterFx
2
+ VERSION = "0.2.0".freeze
3
+ VERSION_DATE = "2016-10-13".freeze
4
+ end
@@ -3,16 +3,64 @@ require "spec_helper"
3
3
  describe BetterFx::Client do
4
4
  subject { described_class.new }
5
5
 
6
- describe "#increment_counter" do
7
- let(:value) { 1 }
8
- let(:timestamp) { 12_345 }
9
- let(:dimensions) { [{ env: BetterFx.configuration.current_environment }] }
10
- let(:mock_fx_client) { FxMocks::MockFxClient.new }
6
+ let(:value) { 1 }
7
+ let(:timestamp) { 12_345 }
8
+ let(:dimensions) { [{ env: BetterFx.configuration.current_environment }] }
9
+ let(:mock_fx_client) { FxMocks::MockFxClient.new }
10
+
11
+ before do
12
+ allow(SignalFx).to receive(:new).and_return mock_fx_client
13
+ end
11
14
 
12
- before do
13
- allow(SignalFx).to receive(:new).and_return mock_fx_client
15
+ describe "#gauge" do
16
+ it "sends the value to SignalFx for the specified gauge" do
17
+ expect(mock_fx_client).
18
+ to receive(:bf_xmit).
19
+ with(gauges: [
20
+ hash_including(
21
+ metric: "sample_gauge",
22
+ value: value
23
+ ),
24
+ ])
25
+ subject.gauge :sample_gauge, value: value
14
26
  end
15
27
 
28
+ describe "specifying the timestamp" do
29
+ let(:timestamp) { 1111 }
30
+ it "sends the user specified timestamp as a string" do
31
+ expect(mock_fx_client).
32
+ to receive(:bf_xmit).
33
+ with(gauges: [
34
+ hash_including(
35
+ metric: "sample_gauge",
36
+ value: value,
37
+ timestamp: timestamp.to_s
38
+ ),
39
+ ])
40
+
41
+ subject.gauge :sample_gauge, value: value, timestamp: timestamp
42
+ end
43
+ end
44
+
45
+ describe "specifying dimensional metadata" do
46
+ let(:dimensions) { [{ size: "Large" }] }
47
+ it "sends the user specified dimensional metadata" do
48
+ expect(mock_fx_client).
49
+ to receive(:bf_xmit).
50
+ with(gauges: [
51
+ hash_including(
52
+ metric: "sample_gauge",
53
+ value: value,
54
+ dimensions: dimensions
55
+ ),
56
+ ])
57
+
58
+ subject.gauge :sample_gauge, value: value, dimensions: dimensions
59
+ end
60
+ end
61
+ end
62
+
63
+ describe "#increment_counter" do
16
64
  it "sends the default incremental value to SignalFx for the specified counter" do
17
65
  expect(mock_fx_client).
18
66
  to receive(:bf_xmit).
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_fx
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Courtland Caldwell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-05-17 00:00:00.000000000 Z
11
+ date: 2016-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: signalfx
@@ -110,6 +110,7 @@ files:
110
110
  - lib/better_fx.rb
111
111
  - lib/better_fx/client.rb
112
112
  - lib/better_fx/configuration.rb
113
+ - lib/better_fx/version.rb
113
114
  - spec/better_fx/client_spec.rb
114
115
  - spec/better_fx_spec.rb
115
116
  - spec/simplecov_custom_profile.rb