statsd-instrument 1.7.2 → 2.0.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.
@@ -0,0 +1,135 @@
1
+ require 'test_helper'
2
+
3
+ class UDPBackendTest < Minitest::Test
4
+ def setup
5
+ StatsD.stubs(:backend).returns(@backend = StatsD::Instrument::Backends::UDPBackend.new)
6
+ @backend.stubs(:rand).returns(0.0)
7
+
8
+ UDPSocket.stubs(:new).returns(@socket = mock('socket'))
9
+ @socket.stubs(:connect)
10
+ @socket.stubs(:send).returns(1)
11
+
12
+ StatsD.stubs(:logger).returns(@logger = mock('logger'))
13
+ end
14
+
15
+ def test_changing_host_or_port_should_create_new_socket
16
+ @socket.expects(:connect).with('localhost', 1234).once
17
+ @socket.expects(:connect).with('localhost', 2345).once
18
+ @socket.expects(:connect).with('127.0.0.1', 2345).once
19
+
20
+ @backend.server = "localhost:1234"
21
+ @backend.socket
22
+
23
+ @backend.port = 2345
24
+ @backend.socket
25
+
26
+ @backend.host = '127.0.0.1'
27
+ @backend.socket
28
+ end
29
+
30
+ def test_collect_respects_sampling_rate
31
+ @socket.expects(:send).once.returns(1)
32
+ metric = StatsD::Instrument::Metric.new(type: :c, name: 'test', sample_rate: 0.5)
33
+
34
+ @backend.stubs(:rand).returns(0.4)
35
+ @backend.collect_metric(metric)
36
+
37
+ @backend.stubs(:rand).returns(0.6)
38
+ @backend.collect_metric(metric)
39
+ end
40
+
41
+ def test_support_counter_syntax
42
+ @backend.expects(:write_packet).with('counter:1|c').once
43
+ StatsD.increment('counter', sample_rate: 1.0)
44
+
45
+ @backend.expects(:write_packet).with('counter:1|c|@0.5').once
46
+ StatsD.increment('counter', sample_rate: 0.5)
47
+ end
48
+
49
+ def test_supports_gauge_syntax
50
+ @backend.expects(:write_packet).with('fooy:1.23|g')
51
+ StatsD.gauge('fooy', 1.23)
52
+
53
+ @backend.expects(:write_packet).with('fooy:42|g|@0.01')
54
+ StatsD.gauge('fooy', 42, sample_rate: 0.01)
55
+ end
56
+
57
+ def test_supports_set_syntax
58
+ @backend.expects(:write_packet).with('unique:10.0.0.10|s')
59
+ StatsD.set('unique', '10.0.0.10')
60
+
61
+ @backend.expects(:write_packet).with('unique:10.0.0.10|s|@0.01')
62
+ StatsD.set('unique', '10.0.0.10', sample_rate: 0.01)
63
+ end
64
+
65
+ def test_support_measure_syntax
66
+ @backend.expects(:write_packet).with('duration:1.23|ms')
67
+ StatsD.measure('duration', 1.23)
68
+
69
+ @backend.expects(:write_packet).with('duration:0.42|ms|@0.01')
70
+ StatsD.measure('duration', 0.42, sample_rate: 0.01)
71
+ end
72
+
73
+ def test_histogram_syntax_on_datadog
74
+ @backend.implementation = :datadog
75
+ @backend.expects(:write_packet).with('fooh:42.4|h')
76
+ StatsD.histogram('fooh', 42.4)
77
+ end
78
+
79
+ def test_histogram_warns_if_not_using_datadog
80
+ @backend.implementation = :other
81
+ @backend.expects(:write_packet).never
82
+ @logger.expects(:warn)
83
+ StatsD.histogram('fooh', 42.4)
84
+ end
85
+
86
+ def test_supports_key_value_syntax_on_statsite
87
+ @backend.implementation = :statsite
88
+ @backend.expects(:write_packet).with("fooy:42|kv\n")
89
+ StatsD.key_value('fooy', 42)
90
+ end
91
+
92
+ def test_supports_key_value_with_timestamp_on_statsite
93
+ @backend.implementation = :statsite
94
+ @backend.expects(:write_packet).with("fooy:42|kv|@123456\n")
95
+ StatsD.key_value('fooy', 42, 123456)
96
+ end
97
+
98
+ def test_warn_when_using_key_value_and_not_on_statsite
99
+ @backend.implementation = :other
100
+ @backend.expects(:write_packet).never
101
+ @logger.expects(:warn)
102
+ StatsD.key_value('fookv', 3.33)
103
+ end
104
+
105
+ def test_support_tags_syntax_on_datadog
106
+ @backend.implementation = :datadog
107
+ @backend.expects(:write_packet).with("fooc:3|c|#topic:foo,bar")
108
+ StatsD.increment('fooc', 3, tags: ['topic:foo', 'bar'])
109
+ end
110
+
111
+ def test_warn_when_using_tags_and_not_on_datadog
112
+ @backend.implementation = :other
113
+ @backend.expects(:write_packet).with("fooc:1|c")
114
+ @logger.expects(:warn)
115
+ StatsD.increment('fooc', tags: ['ignored'])
116
+ end
117
+
118
+ def test_socket_error_should_not_raise_but_log
119
+ @socket.stubs(:connect).raises(SocketError)
120
+ @logger.expects(:error)
121
+ StatsD.increment('fail')
122
+ end
123
+
124
+ def test_system_call_error_should_not_raise_but_log
125
+ @socket.stubs(:send).raises(Errno::ETIMEDOUT)
126
+ @logger.expects(:error)
127
+ StatsD.increment('fail')
128
+ end
129
+
130
+ def test_io_error_should_not_raise_but_log
131
+ @socket.stubs(:send).raises(IOError)
132
+ @logger.expects(:error)
133
+ StatsD.increment('fail')
134
+ end
135
+ end
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statsd-instrument
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.2
5
- prerelease:
4
+ version: 2.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Jesse Storimer
@@ -10,38 +9,48 @@ authors:
10
9
  autorequire:
11
10
  bindir: bin
12
11
  cert_chain: []
13
- date: 2014-03-28 00:00:00.000000000 Z
12
+ date: 2014-04-29 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: rake
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
- - - ! '>='
18
+ - - '>='
21
19
  - !ruby/object:Gem::Version
22
20
  version: '0'
23
21
  type: :development
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
- - - ! '>='
25
+ - - '>='
26
+ - !ruby/object:Gem::Version
27
+ version: '0'
28
+ - !ruby/object:Gem::Dependency
29
+ name: minitest
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - '>='
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ type: :development
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - '>='
29
40
  - !ruby/object:Gem::Version
30
41
  version: '0'
31
42
  - !ruby/object:Gem::Dependency
32
43
  name: mocha
33
44
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
45
  requirements:
36
- - - ! '>='
46
+ - - '>='
37
47
  - !ruby/object:Gem::Version
38
48
  version: '0'
39
49
  type: :development
40
50
  prerelease: false
41
51
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
52
  requirements:
44
- - - ! '>='
53
+ - - '>='
45
54
  - !ruby/object:Gem::Version
46
55
  version: '0'
47
56
  description: A StatsD client for Ruby appspec. Provides metaprogramming methods to
@@ -60,37 +69,58 @@ files:
60
69
  - Rakefile
61
70
  - lib/statsd-instrument.rb
62
71
  - lib/statsd/instrument.rb
72
+ - lib/statsd/instrument/assertions.rb
73
+ - lib/statsd/instrument/backend.rb
74
+ - lib/statsd/instrument/backends/capture_backend.rb
75
+ - lib/statsd/instrument/backends/logger_backend.rb
76
+ - lib/statsd/instrument/backends/null_backend.rb
77
+ - lib/statsd/instrument/backends/udp_backend.rb
78
+ - lib/statsd/instrument/environment.rb
79
+ - lib/statsd/instrument/metric.rb
63
80
  - lib/statsd/instrument/version.rb
64
81
  - statsd-instrument.gemspec
82
+ - test/assertions_test.rb
83
+ - test/capture_backend_test.rb
84
+ - test/environment_test.rb
85
+ - test/integration_test.rb
86
+ - test/logger_backend_test.rb
87
+ - test/metric_test.rb
65
88
  - test/statsd_instrumentation_test.rb
66
89
  - test/statsd_test.rb
67
90
  - test/test_helper.rb
91
+ - test/udp_backend_test.rb
68
92
  homepage: https://github.com/Shopify/statsd-instrument
69
93
  licenses:
70
94
  - MIT
95
+ metadata: {}
71
96
  post_install_message:
72
97
  rdoc_options: []
73
98
  require_paths:
74
99
  - lib
75
100
  required_ruby_version: !ruby/object:Gem::Requirement
76
- none: false
77
101
  requirements:
78
- - - ! '>='
102
+ - - '>='
79
103
  - !ruby/object:Gem::Version
80
104
  version: '0'
81
105
  required_rubygems_version: !ruby/object:Gem::Requirement
82
- none: false
83
106
  requirements:
84
- - - ! '>='
107
+ - - '>='
85
108
  - !ruby/object:Gem::Version
86
109
  version: '0'
87
110
  requirements: []
88
111
  rubyforge_project:
89
- rubygems_version: 1.8.23
112
+ rubygems_version: 2.0.3
90
113
  signing_key:
91
- specification_version: 3
114
+ specification_version: 4
92
115
  summary: A StatsD client for Ruby apps
93
116
  test_files:
117
+ - test/assertions_test.rb
118
+ - test/capture_backend_test.rb
119
+ - test/environment_test.rb
120
+ - test/integration_test.rb
121
+ - test/logger_backend_test.rb
122
+ - test/metric_test.rb
94
123
  - test/statsd_instrumentation_test.rb
95
124
  - test/statsd_test.rb
96
125
  - test/test_helper.rb
126
+ - test/udp_backend_test.rb