upfluence-utils 0.5.2 → 0.5.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b23e691f998914c5bc1d98d97af634f4361f3587
4
- data.tar.gz: 0244e8237ceda7c2dcc463fc704ecb2aab689f47
3
+ metadata.gz: 96b4ca9a69d062c47d1338e7abed5ecc8077cb39
4
+ data.tar.gz: 2fb9fb60bfb19b53fb9204e36dc2cf46adf64aa9
5
5
  SHA512:
6
- metadata.gz: e3fbb887339d789a60cdec17461fb64e9c00142585f752e9ea472cea509871d6173376d70d895e1bb4bfeb6fa9efd9670a16200bd44f5aea7d988bfa2bc672cf
7
- data.tar.gz: 488d26965cfd791f160376afcaa493e956cc26cffe74bce0c2e511d429da3a9089cba42b68e0102ef37b0dd1f2717cf9f639f28a76b07638f793cab41ce584a1
6
+ metadata.gz: 777f3f18e6305964baebe31806b43e397b381eceea0ec98fb4397466dd5b1a928a70b7a4424a7670bbdab50cc8180557105a278ac942bf0bd5b8010e2251df93
7
+ data.tar.gz: c46b9b7d281e884b719bad94d214247393512b8698c4366e1147739d049ff7b30136328423ed42460cd0182a213908da768f262d19eda72a315921e937ad84a4
@@ -0,0 +1,51 @@
1
+ require 'stackprof'
2
+
3
+ module Upfluence
4
+ module HTTP
5
+ module Endpoint
6
+ class Profiler
7
+ def initialize(opts = {})
8
+ @interval = opts[:interval] || 50
9
+ @mode = opts[:mode] || :cpu
10
+ @mapping = Rack::URLMap.new(
11
+ '/start' => lambda { |env| start(env) },
12
+ '/stop' => lambda { |env| stop(env) },
13
+ '/profile' => lambda { |env| profile(env) }
14
+ )
15
+ end
16
+
17
+ def call(env)
18
+ @mapping.call(env)
19
+ end
20
+
21
+ private
22
+
23
+ def stop(env)
24
+ StackProf.stop
25
+ return ok
26
+ end
27
+
28
+ def start(env)
29
+ StackProf.start(mode: @mode, interval: @interval, raw: false)
30
+ return ok
31
+ end
32
+
33
+ def profile(env)
34
+ results = StackProf.results
35
+ @last_results = Marshal.dump(results) if results
36
+
37
+ return [200, {}, [@last_results]] if @last_results
38
+ return [404, {}, ['No profile available']]
39
+ end
40
+
41
+ def ok
42
+ [200, {}, ['ok']]
43
+ end
44
+
45
+ def path(env)
46
+ Rack::Request.new(env).path
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -8,6 +8,7 @@ require 'upfluence/error_logger'
8
8
 
9
9
  require 'upfluence/http/builder'
10
10
  require 'upfluence/http/endpoint/healthcheck'
11
+ require 'upfluence/http/endpoint/profiler'
11
12
  require 'upfluence/http/middleware/logger'
12
13
  require 'upfluence/http/middleware/application_headers'
13
14
  require 'upfluence/http/middleware/handle_exception'
@@ -26,7 +27,8 @@ module Upfluence
26
27
  push_gateway_url: ENV['PUSH_GATEWAY_URL'],
27
28
  push_gateway_interval: 15, # sec
28
29
  app_name: ENV['APP_NAME'] || 'uhttp-rb-server',
29
- unit_name: ENV['UNIT_NAME'] || 'uhttp-rb-server-anonymous'
30
+ unit_name: ENV['UNIT_NAME'] || 'uhttp-rb-server-anonymous',
31
+ debug: ENV['DEBUG']
30
32
  }.freeze
31
33
 
32
34
  def initialize(options = {}, &block)
@@ -54,6 +56,10 @@ module Upfluence
54
56
  run_thrift Base::Base_service::BaseService::Processor, base_handler
55
57
  end
56
58
 
59
+ map '/debug' do
60
+ run Endpoint::Profiler.new
61
+ end if opts[:debug]
62
+
57
63
  instance_eval(&block)
58
64
  end
59
65
 
@@ -1,5 +1,5 @@
1
1
  module Upfluence
2
2
  module Utils
3
- VERSION = '0.5.2'.freeze
3
+ VERSION = '0.5.3'.freeze
4
4
  end
5
5
  end
data/rbutils.gemspec CHANGED
@@ -28,6 +28,7 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency 'activesupport'
29
29
  spec.add_runtime_dependency 'puma'
30
30
  spec.add_runtime_dependency 'rack'
31
+ spec.add_runtime_dependency 'stackprof'
31
32
  spec.add_runtime_dependency 'prometheus-client'
32
33
  spec.add_runtime_dependency 'active_model_serializers', '~> 0.9.0'
33
34
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: upfluence-utils
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Upfluence
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-12-21 00:00:00.000000000 Z
11
+ date: 2018-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -184,6 +184,20 @@ dependencies:
184
184
  - - ">="
185
185
  - !ruby/object:Gem::Version
186
186
  version: '0'
187
+ - !ruby/object:Gem::Dependency
188
+ name: stackprof
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - ">="
192
+ - !ruby/object:Gem::Version
193
+ version: '0'
194
+ type: :runtime
195
+ prerelease: false
196
+ version_requirements: !ruby/object:Gem::Requirement
197
+ requirements:
198
+ - - ">="
199
+ - !ruby/object:Gem::Version
200
+ version: '0'
187
201
  - !ruby/object:Gem::Dependency
188
202
  name: prometheus-client
189
203
  requirement: !ruby/object:Gem::Requirement
@@ -238,6 +252,7 @@ files:
238
252
  - lib/upfluence/http/builder.rb
239
253
  - lib/upfluence/http/endpoint/api_endpoint.rb
240
254
  - lib/upfluence/http/endpoint/healthcheck.rb
255
+ - lib/upfluence/http/endpoint/profiler.rb
241
256
  - lib/upfluence/http/middleware/application_headers.rb
242
257
  - lib/upfluence/http/middleware/handle_exception.rb
243
258
  - lib/upfluence/http/middleware/logger.rb