librato-rack 2.0.0 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d291d01af87d4bef2ce62492b0d44487112626b6
4
+ data.tar.gz: dfe86fb5950bfa428bb153a471f14d5bf2b9fee2
5
+ SHA512:
6
+ metadata.gz: 8fc08bb0ce4c5a06864cf1f2c43818a4e9485c0adebdafde1e5ab7a427c1b38b620aca87af7115d671936731ad346ac8a17d28bf9678b488d4ec655a13afc5fb
7
+ data.tar.gz: f87fb8ebb490fbe3e2ecb1ca6db297b07841fafbc66ee2e53b52ccc3b1e07a0825ab8a183a58cda4e19b9501ee2e6399963b43d79261dd257f3aebc50360ee40
@@ -0,0 +1 @@
1
+ E�ݕ�%�+�g�>����ނs}�>��P�g^9�(�RHvj��4�>��OI�����iS�u�>:{�L�Q���;�_nv��[�y__�С�'0�i�����
data.tar.gz.sig CHANGED
Binary file
@@ -1,3 +1,6 @@
1
+ ### Version 2.0.1
2
+ * Ensure `rack.request.queue.time` metric is not negative (#68, Austin Schneider)
3
+
1
4
  ### Version 2.0.0
2
5
  * Add support for tagged measurements (#54)
3
6
 
data/README.md CHANGED
@@ -3,10 +3,20 @@ librato-rack
3
3
 
4
4
  [![Gem Version](https://badge.fury.io/rb/librato-rack.png)](http://badge.fury.io/rb/librato-rack) [![Build Status](https://secure.travis-ci.org/librato/librato-rack.png?branch=master)](http://travis-ci.org/librato/librato-rack) [![Code Climate](https://codeclimate.com/github/librato/librato-rack.png)](https://codeclimate.com/github/librato/librato-rack)
5
5
 
6
+ ---
7
+
8
+ **NOTE:** Starting with version 2.0.0 librato-rack requires a Librato account that [supports tagged metrics](https://www.librato.com/docs/kb/faq/account_questions/tags_or_sources/). If your Librato account doesn't yet support tagged metrics please use the [1.x.x version](https://rubygems.org/gems/librato-rack/versions/1.1.0).
9
+
10
+ ---
11
+
6
12
  `librato-rack` provides rack middleware which will report key statistics for your rack applications to [Librato Metrics](https://metrics.librato.com/). It will also allow you to easily track your own custom metrics. Metrics are delivered asynchronously behind the scenes so they won't affect performance of your requests.
7
13
 
8
14
  Currently Ruby 1.9.2+ is required.
9
15
 
16
+ ## Upgrading
17
+
18
+ Upgrading from version 1.x to 2.x introduces breaking changes for legacy sources. Please contact [support@librato.com](mailto:support@librato.com) to migrate an existing Librato account.
19
+
10
20
  ## Quick Start
11
21
 
12
22
  Install `librato-rack` as middleware in your application:
@@ -159,8 +169,10 @@ Note that `increment` is primarily used for tracking the rate of occurrence of s
159
169
 
160
170
  Especially with custom per-measurement tags you may want the opposite behavior - reporting a measurement only during intervals where `increment` was called on the metric:
161
171
 
162
- # report a value for 'user.uploaded_file' only during non-zero intervals
163
- Librato.increment 'user.uploaded_file', tags: { user: user.id, bucket: bucket.name }, sporadic: true
172
+ ```ruby
173
+ # report a value for 'user.uploaded_file' only during non-zero intervals
174
+ Librato.increment 'user.uploaded_file', tags: { user_id: user.id, bucket: bucket.name }, sporadic: true
175
+ ```
164
176
 
165
177
  #### measure
166
178
 
@@ -256,4 +268,4 @@ If you are debugging setup locally you can set `flush_interval` to something sho
256
268
 
257
269
  ## Copyright
258
270
 
259
- Copyright (c) 2013-2016 [Librato Inc.](http://librato.com) See LICENSE for details.
271
+ Copyright (c) 2013-2017 [Librato Inc.](http://librato.com) See LICENSE for details.
@@ -152,9 +152,11 @@ module Librato
152
152
  case queue_start.length
153
153
  when 16 # microseconds
154
154
  wait = ((Time.now.to_f * 1000000).to_i - queue_start.to_i) / 1000.0
155
+ wait = 0 if wait < 0 # make up for potential time drift between the routing server and the application server
155
156
  tracker.timing 'rack.request.queue.time', wait, percentile: 95
156
157
  when 13 # milliseconds
157
158
  wait = (Time.now.to_f * 1000).to_i - queue_start.to_i
159
+ wait = 0 if wait < 0 # make up for potential time drift between the routing server and the application server
158
160
  tracker.timing 'rack.request.queue.time', wait, percentile: 95
159
161
  end
160
162
  end
@@ -1,5 +1,5 @@
1
1
  module Librato
2
2
  class Rack
3
- VERSION = "2.0.0"
3
+ VERSION = "2.0.1"
4
4
  end
5
5
  end
@@ -26,6 +26,9 @@ class QueueWait
26
26
  when '/with_period'
27
27
  env['HTTP_X_REQUEST_START'] = "%10.3f" % Time.now
28
28
  sleep 0.025
29
+ when '/with_time_drift'
30
+ env['HTTP_X_REQUEST_START'] = ((Time.now.to_f * 1000).to_i + 10).to_s # 10s in the future
31
+ sleep 0.005
29
32
  end
30
33
  @app.call(env)
31
34
  end
@@ -38,4 +41,4 @@ def application(env)
38
41
  [200, {"Content-Type" => 'text/html'}, ["Hello!"]]
39
42
  end
40
43
 
41
- run method(:application)
44
+ run method(:application)
@@ -62,6 +62,25 @@ class QueueWaitTest < Minitest::Test
62
62
  assert_in_delta 25, aggregate["rack.request.queue.time"][:sum], delta
63
63
  end
64
64
 
65
+ def test_with_period
66
+ get '/with_period'
67
+
68
+ # give jruby a bit more time since it can be slow
69
+ delta = defined?(JRUBY_VERSION) ? 10 : 6
70
+ assert_equal 1, aggregate["rack.request.queue.time"][:count],
71
+ 'should track total queue time'
72
+ assert_in_delta 25, aggregate["rack.request.queue.time"][:sum], delta
73
+ end
74
+
75
+ def test_with_time_drift
76
+ get '/with_time_drift'
77
+
78
+ # puts "milli: #{aggregate["rack.request.queue.time"].inspect}"
79
+ assert_equal 1, aggregate["rack.request.queue.time"][:count],
80
+ 'should track total queue time'
81
+ assert_in_delta 0, aggregate["rack.request.queue.time"][:sum], 4
82
+ end
83
+
65
84
  private
66
85
 
67
86
  def aggregate
metadata CHANGED
@@ -1,89 +1,76 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: librato-rack
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
5
- prerelease:
4
+ version: 2.0.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Matt Sanders
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain:
12
- - !binary |-
13
- LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURMakNDQWhhZ0F3SUJB
14
- Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREE5TVEwd0N3WURWUVFEREFSeWRX
15
- SjUKTVJjd0ZRWUtDWkltaVpQeUxHUUJHUllIYkdsaWNtRjBiekVUTUJFR0Nn
16
- bVNKb21UOGl4a0FSa1dBMk52YlRBZQpGdzB4TnpBeE1URXhPREkzTURkYUZ3
17
- MHhPREF4TVRFeE9ESTNNRGRhTUQweERUQUxCZ05WQkFNTUJISjFZbmt4CkZ6
18
- QVZCZ29Ka2lhSmsvSXNaQUVaRmdkc2FXSnlZWFJ2TVJNd0VRWUtDWkltaVpQ
19
- eUxHUUJHUllEWTI5dE1JSUIKSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4
20
- QU1JSUJDZ0tDQVFFQTU4TGlyd3NXbktMMXV1Q2xRMHV3QTFYTApHcHhEdUZ6
21
- U29zaXBpUGt6WlkzaGlIYXpDOFNIRFJFWlFYbG03SVRYL28rZHVlTm9CN2R0
22
- MEJSM1JQVmlwSDdWCjdjdmJDVWFaTmpFWFI1TGFsNlBzbVVzYk1UcmRka3Zq
23
- M2U3ZmxtSnYra01qK3RlZUo3TURlSlRVNXdYWFY5cEQKVGhpQ0RJTEpNRjVD
24
- ZFA4SnJ1NHJTQk9QNlJtbXpZVSswY041KzVwdDl4cXJ5Y0ErUG9vMlp1b1VN
25
- Q01zU0J2bApQaW1NM1BQdm9XVHVFNDFHVG4vYkxvT1ZvWFFtZHdaSWJ3VVNW
26
- SDhyQ0RqWlNsdHRPc3QreHJCdzRLRzBkWVVwCjJVdkVlOGlDeXFFTVE4ZkVa
27
- N0VYdVAyV01WSUN1dEZiejhQdDRoSU1xK09UbkRYK21JZm1hN0d2UGFLQUZ3
28
- SUQKQVFBQm96a3dOekFKQmdOVkhSTUVBakFBTUIwR0ExVWREZ1FXQkJRQlN4
29
- dTlKajRWVHJYVHBMdWpQd2s5S3p3cAoyakFMQmdOVkhROEVCQU1DQkxBd0RR
30
- WUpLb1pJaHZjTkFRRUZCUUFEZ2dFQkFDdk5zdzFwR3Y3MnhwM0xpRGxaCjB0
31
- cGhOUC84NVJjWXlKTWtsc2xHM3RJWWJseW83MXhIVzFVYks1QXJVSzZrMEJO
32
- NDNNdURuM3BxTEpRdHRWbWkKYlVkQTN5WWkxM0dlU3JyQU1scjRuSDhZdC9C
33
- bi9YcFpHbGlvdUpVQndoMUJqRzZkU2oxaXVSNC85cHQ5L0x0TwpRVGRJYysw
34
- N3FHc3B5cFQwVWgvdy9Cb2RFY0d1QWFaWkZsa1U5dm90dFRlNndXTm5NNmhm
35
- UkV4aVNJc3Irb1ZlCnM4czgzT2JzaGp1U3pqT3FTNTZJQnRObFBFTCtENmdo
36
- alpaTFAzbFM2bDlwNzBQY3BjbCtJY0U0dmVxWm1tS0MKc0dlcGdSY2xDNlVi
37
- WmgreVEzYWxYVmdoTTJxc29uQXdJL3JUTm1GSk45a1FuNm5QOStmMVVmL3Fa
38
- Rk5jam40TAo5Ymc9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K
39
- date: 2017-01-25 00:00:00.000000000 Z
11
+ - |
12
+ -----BEGIN CERTIFICATE-----
13
+ MIIDLjCCAhagAwIBAgIBADANBgkqhkiG9w0BAQUFADA9MQ0wCwYDVQQDDARydWJ5
14
+ MRcwFQYKCZImiZPyLGQBGRYHbGlicmF0bzETMBEGCgmSJomT8ixkARkWA2NvbTAe
15
+ Fw0xNzAxMTExODI3MDdaFw0xODAxMTExODI3MDdaMD0xDTALBgNVBAMMBHJ1Ynkx
16
+ FzAVBgoJkiaJk/IsZAEZFgdsaWJyYXRvMRMwEQYKCZImiZPyLGQBGRYDY29tMIIB
17
+ IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA58LirwsWnKL1uuClQ0uwA1XL
18
+ GpxDuFzSosipiPkzZY3hiHazC8SHDREZQXlm7ITX/o+dueNoB7dt0BR3RPVipH7V
19
+ 7cvbCUaZNjEXR5Lal6PsmUsbMTrddkvj3e7flmJv+kMj+teeJ7MDeJTU5wXXV9pD
20
+ ThiCDILJMF5CdP8Jru4rSBOP6RmmzYU+0cN5+5pt9xqrycA+Poo2ZuoUMCMsSBvl
21
+ PimM3PPvoWTuE41GTn/bLoOVoXQmdwZIbwUSVH8rCDjZSlttOst+xrBw4KG0dYUp
22
+ 2UvEe8iCyqEMQ8fEZ7EXuP2WMVICutFbz8Pt4hIMq+OTnDX+mIfma7GvPaKAFwID
23
+ AQABozkwNzAJBgNVHRMEAjAAMB0GA1UdDgQWBBQBSxu9Jj4VTrXTpLujPwk9Kzwp
24
+ 2jALBgNVHQ8EBAMCBLAwDQYJKoZIhvcNAQEFBQADggEBACvNsw1pGv72xp3LiDlZ
25
+ 0tphNP/85RcYyJMklslG3tIYblyo71xHW1UbK5ArUK6k0BN43MuDn3pqLJQttVmi
26
+ bUdA3yYi13GeSrrAMlr4nH8Yt/Bn/XpZGliouJUBwh1BjG6dSj1iuR4/9pt9/LtO
27
+ QTdIc+07qGspypT0Uh/w/BodEcGuAaZZFlkU9vottTe6wWNnM6hfRExiSIsr+oVe
28
+ s8s83ObshjuSzjOqS56IBtNlPEL+D6ghjZZLP3lS6l9p70Pcpcl+IcE4veqZmmKC
29
+ sGepgRclC6UbZh+yQ3alXVghM2qsonAwI/rTNmFJN9kQn6nP9+f1Uf/qZFNcjn4L
30
+ 9bg=
31
+ -----END CERTIFICATE-----
32
+ date: 2017-02-21 00:00:00.000000000 Z
40
33
  dependencies:
41
34
  - !ruby/object:Gem::Dependency
42
35
  name: librato-metrics
43
36
  requirement: !ruby/object:Gem::Requirement
44
- none: false
45
37
  requirements:
46
- - - ~>
38
+ - - "~>"
47
39
  - !ruby/object:Gem::Version
48
40
  version: 2.1.0
49
41
  type: :runtime
50
42
  prerelease: false
51
43
  version_requirements: !ruby/object:Gem::Requirement
52
- none: false
53
44
  requirements:
54
- - - ~>
45
+ - - "~>"
55
46
  - !ruby/object:Gem::Version
56
47
  version: 2.1.0
57
48
  - !ruby/object:Gem::Dependency
58
49
  name: hetchy
59
50
  requirement: !ruby/object:Gem::Requirement
60
- none: false
61
51
  requirements:
62
- - - ~>
52
+ - - "~>"
63
53
  - !ruby/object:Gem::Version
64
54
  version: '1.0'
65
55
  type: :runtime
66
56
  prerelease: false
67
57
  version_requirements: !ruby/object:Gem::Requirement
68
- none: false
69
58
  requirements:
70
- - - ~>
59
+ - - "~>"
71
60
  - !ruby/object:Gem::Version
72
61
  version: '1.0'
73
62
  - !ruby/object:Gem::Dependency
74
63
  name: minitest
75
64
  requirement: !ruby/object:Gem::Requirement
76
- none: false
77
65
  requirements:
78
- - - ! '>='
66
+ - - ">="
79
67
  - !ruby/object:Gem::Version
80
68
  version: '0'
81
69
  type: :development
82
70
  prerelease: false
83
71
  version_requirements: !ruby/object:Gem::Requirement
84
- none: false
85
72
  requirements:
86
- - - ! '>='
73
+ - - ">="
87
74
  - !ruby/object:Gem::Version
88
75
  version: '0'
89
76
  description: Rack middleware to report key app statistics and custom instrumentation
@@ -95,25 +82,25 @@ executables: []
95
82
  extensions: []
96
83
  extra_rdoc_files: []
97
84
  files:
85
+ - CHANGELOG.md
86
+ - LICENSE
87
+ - README.md
88
+ - Rakefile
89
+ - lib/librato-rack.rb
90
+ - lib/librato/collector.rb
98
91
  - lib/librato/collector/aggregator.rb
99
92
  - lib/librato/collector/counter_cache.rb
100
93
  - lib/librato/collector/exceptions.rb
101
94
  - lib/librato/collector/group.rb
102
- - lib/librato/collector.rb
103
- - lib/librato/rack/configuration/suites.rb
95
+ - lib/librato/rack.rb
104
96
  - lib/librato/rack/configuration.rb
97
+ - lib/librato/rack/configuration/suites.rb
105
98
  - lib/librato/rack/errors.rb
106
99
  - lib/librato/rack/logger.rb
107
100
  - lib/librato/rack/tracker.rb
108
101
  - lib/librato/rack/validating_queue.rb
109
102
  - lib/librato/rack/version.rb
110
103
  - lib/librato/rack/worker.rb
111
- - lib/librato/rack.rb
112
- - lib/librato-rack.rb
113
- - LICENSE
114
- - Rakefile
115
- - README.md
116
- - CHANGELOG.md
117
104
  - test/apps/basic.ru
118
105
  - test/apps/custom.ru
119
106
  - test/apps/custom_suites.ru
@@ -140,33 +127,26 @@ files:
140
127
  homepage: https://github.com/librato/librato-rack
141
128
  licenses:
142
129
  - BSD-3-Clause
130
+ metadata: {}
143
131
  post_install_message:
144
132
  rdoc_options: []
145
133
  require_paths:
146
134
  - lib
147
135
  required_ruby_version: !ruby/object:Gem::Requirement
148
- none: false
149
136
  requirements:
150
- - - ! '>='
137
+ - - ">="
151
138
  - !ruby/object:Gem::Version
152
139
  version: '0'
153
- segments:
154
- - 0
155
- hash: 2556710528396302648
156
140
  required_rubygems_version: !ruby/object:Gem::Requirement
157
- none: false
158
141
  requirements:
159
- - - ! '>='
142
+ - - ">="
160
143
  - !ruby/object:Gem::Version
161
144
  version: '0'
162
- segments:
163
- - 0
164
- hash: 2556710528396302648
165
145
  requirements: []
166
146
  rubyforge_project:
167
- rubygems_version: 1.8.23.2
147
+ rubygems_version: 2.2.2
168
148
  signing_key:
169
- specification_version: 3
149
+ specification_version: 4
170
150
  summary: Use Librato Metrics with your rack application
171
151
  test_files:
172
152
  - test/apps/basic.ru
metadata.gz.sig CHANGED
Binary file