oneapm_rpm 1.2.1 → 1.2.2.rc

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- NjFkOTNlOTgzYmVlNjAzNGQyNTQzZTVkMTc0ZmRkYzA5OTAwODhmMQ==
4
+ MTBjNGFlOWYyNDg0OGJmMzQzYTA1YjQzYjIxOGVjMjMyOTg3NjYwMw==
5
5
  data.tar.gz: !binary |-
6
- ZGJlNDJmMTMwNTVjYzFiMmE2M2IxZmE4ZGU3MTRlOWY1ZDEzZDFmMw==
6
+ ZTY1NTEyNjRmODllNTJkYjI0ZjU1MDJhYjkwOTdhNzM3ZjI1YmEwZQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZTFjMjAyZGMzOGQzOTRjMjlmM2RhNTMxOWE1ODViMTNkNWE5YjAxNDczZWRi
10
- MzlkZTk3YzBjNDk1MGRmNmI1NzA5MzJmYTRhN2ZkYmU3ZDc4NmFhMWEyNDcw
11
- ZTlhZTVmZmM2YWFlNTRjOGFmNDIxYTliNTk0ZDZhN2Y4ODY0MGU=
9
+ NGVkZDg2OTA1Y2RjNWQwNzRmZmVhMjAwZTJkYTNjZmQxNGI5N2IxMWQxNDU4
10
+ M2E5NzlmYjI0ZTNhY2ZmYmQ0YzQ1M2Y3MWJlYTYwOWU4ZGIyOThlMWYxYzcw
11
+ MDdkYzAzMTI5MTk2ZjFiNGQ5MzY3YmEyMmVjOGU0MDAwNTk2ZDU=
12
12
  data.tar.gz: !binary |-
13
- NTlmYTk0ZTIxZmQ5OTZhZDljYjgyNGNlNTM4MWFhNGZhMmFmYjZmM2M3YTNh
14
- ODA3NjQ4NDM1OWEzYmY5NjNiOTM3YjVkM2NkNmU2MWQ4NmNlMDZiN2NlM2Iz
15
- MzY1ZmZhNzA3MTcyZDA4YjI5OTYzYjFkYTcwOGQ1Njc0M2U3YzE=
13
+ YjBjMmFhYmRlMjI5YTJkNzU3Y2U3NTgwNjY0ODBlNzZjNDBlOWQ5OGY0YTNk
14
+ ZWIyYTRmZDlmNjRhODQ4NTI1ZDZkMmU2MmE3NGJjYmUzYzIwZjQ0OWY1NjQ5
15
+ MjM5MmUxN2I2YjRhMGRiZjNlYjE4MjlmN2JlZWE0MWYyMDQ0ZmE=
data/Guardfile CHANGED
@@ -1,5 +1,6 @@
1
1
  guard :minitest, :test_folders => ['test/one_apm'], :all_after_pass => false do
2
- watch(%r{^lib/(.+)\.rb$}) { |m| "test/#{m[1]}_test.rb" }
2
+ watch(%r{^lib\/.*\/(.*)\.rb$}) {|m| Dir["test/one_apm/**/#{m[1]}_test.rb"]}
3
+ watch(%r{.*suites\/(.+)?\/(.*)_test.rb$}){|m|Guard::UI.info "Change: #{m[1]}: #{m[0]}}"; system("rake test:multiverse[#{m[1]},file=#{m[0]}]") || throw(:task_has_failed) }
3
4
  watch(%r{^test/.+_test\.rb$})
4
5
  watch('test/test_helper.rb') { "test/one_apm" }
5
6
  watch('test/agent_helper.rb') { "test/one_apm" }
@@ -13,9 +13,6 @@ module OneApm
13
13
  data = nil
14
14
  begin
15
15
  data = @marshaller.dump(payload, options)
16
- if method != :connect
17
- data = data.gsub(/(Controller|HttpDispatcher)/, "WebTransaction")
18
- end
19
16
  rescue StandardError, SystemStackError => e
20
17
  handle_serialization_error(method, e)
21
18
  end
@@ -766,6 +766,13 @@ module OneApm
766
766
  :type => Boolean,
767
767
  :description => 'Enable or disable HTTPS instrumentation by JavaScript agent on HTTP pages.'
768
768
  },
769
+ :'browser_monitoring.whitelist_ips' => {
770
+ :default => '',
771
+ :allow_nil => true,
772
+ :public => true,
773
+ :type => String,
774
+ :description => 'Filter IPs which can be inerted JavaScript agent on HTTP pages.'
775
+ },
769
776
  :'browser_monitoring.is_js_text' => {
770
777
  :default => false,
771
778
  :public => true,
@@ -1,6 +1,7 @@
1
1
  # encoding: utf-8
2
2
 
3
3
  require 'rack'
4
+ require 'ipaddr'
4
5
  require 'one_apm/rack/middleware_base'
5
6
  require 'one_apm/rack/middleware_wrapper'
6
7
 
@@ -9,6 +10,7 @@ module OneApm::Rack
9
10
 
10
11
  SCAN_LIMIT = 50_000
11
12
  ALREADY_INSTRUMENTED_KEY = "oneapm.browser_monitoring_already_instrumented"
13
+ REMOTE_IP = "action_dispatch.remote_ip"
12
14
 
13
15
  CHARSET_RE = /<\s*meta[^>]+charset\s*=[^>]*>/im.freeze
14
16
  X_UA_COMPATIBLE_RE = /<\s*meta[^>]+http-equiv\s*=\s*['"]x-ua-compatible['"][^>]*>/im.freeze
@@ -38,7 +40,8 @@ module OneApm::Rack
38
40
  !env[ALREADY_INSTRUMENTED_KEY] &&
39
41
  is_html?(headers) &&
40
42
  !is_attachment?(headers) &&
41
- !is_streaming?(env)
43
+ !is_streaming?(env) &&
44
+ ip_valid?(env)
42
45
  end
43
46
 
44
47
  def is_html?(headers)
@@ -54,6 +57,28 @@ module OneApm::Rack
54
57
  env['action_controller.instance'].class.included_modules.include?(ActionController::Live)
55
58
  end
56
59
 
60
+ def ip_valid?(env)
61
+ whitelist_ips = OneApm::Manager.config[:'browser_monitoring.whitelist_ips']
62
+ return true if whitelist_ips.empty? || env[REMOTE_IP].to_s.empty?
63
+ OneApm::Manager.logger.debug "Remote IP: #{env[REMOTE_IP]}"
64
+ begin
65
+ client = IPAddr.new(env[REMOTE_IP].to_s).to_i
66
+ whitelist_ips.split(",").any? do |ip|
67
+ low_ip, high_ip = ip.split("-").map(&:strip)
68
+ low = IPAddr.new(low_ip).to_i
69
+ if high_ip
70
+ high = IPAddr.new(high_ip).to_i
71
+ (low..high) === client
72
+ else
73
+ low == client
74
+ end
75
+ end
76
+ rescue => e
77
+ OneApm::Manager.logger.error "Configuration for browser_monitoring.whitelist_ips has problems:#{whitelist_ips}"
78
+ true
79
+ end
80
+ end
81
+
57
82
  def autoinstrument_source(response, headers, js_to_inject)
58
83
  source = gather_source(response)
59
84
  close_old_response(response)
@@ -81,7 +81,7 @@ module OneApm
81
81
  end
82
82
 
83
83
  def nested_transaction_name(name)
84
- if name.start_with?(Transaction::CONTROLLER_PREFIX) || name.start_with?(Transaction::OTHER_TRANSACTION_PREFIX)
84
+ if name.start_with?(Transaction::WEB_TRANSACTION_PREFIX) || name.start_with?(Transaction::OTHER_TRANSACTION_PREFIX)
85
85
  "#{Transaction::SUBTRANSACTION_PREFIX}#{name}"
86
86
  else
87
87
  name
@@ -7,14 +7,15 @@ module OneApm
7
7
  CONTROLLER_PREFIX = 'Controller/'.freeze
8
8
  MIDDLEWARE_PREFIX = 'Middleware/Rack/'.freeze
9
9
  TASK_PREFIX = 'OtherTransaction/Background/'.freeze
10
- RACK_PREFIX = 'Controller/Rack/'.freeze
11
- SINATRA_PREFIX = 'Controller/Sinatra/'.freeze
12
- GRAPE_PREFIX = 'Controller/Grape/'.freeze
10
+ RACK_PREFIX = 'WebTransaction/Rack/'.freeze
11
+ SINATRA_PREFIX = 'WebTransaction/Sinatra/'.freeze
12
+ GRAPE_PREFIX = 'WebTransaction/Grape/'.freeze
13
13
  OTHER_TRANSACTION_PREFIX = 'OtherTransaction/'.freeze
14
+ WEB_TRANSACTION_PREFIX = 'WebTransaction/'.freeze
14
15
 
15
16
  CONTROLLER_MIDDLEWARE_PREFIX = 'Controller/Middleware/Rack'.freeze
16
17
 
17
- WEB_SUMMARY_METRIC = 'HttpDispatcher'.freeze
18
+ WEB_SUMMARY_METRIC = 'WebTransaction'.freeze
18
19
  OTHER_SUMMARY_METRIC = 'OtherTransaction/all'.freeze
19
20
 
20
21
  APDEX_S = 'S'.freeze
@@ -5,11 +5,20 @@ module OneApm
5
5
  module TransactionName
6
6
 
7
7
  def overridden_name=(name)
8
- @overridden_name = Helper.correctly_encoded(name)
8
+ @overridden_name = filter name
9
9
  end
10
10
 
11
11
  def default_name=(name)
12
- @default_name = Helper.correctly_encoded(name)
12
+ @default_name = filter name
13
+ end
14
+
15
+ def frozen_name=(name)
16
+ @frozen_name = filter name
17
+ end
18
+
19
+ def filter name
20
+ encoded_name = Helper.correctly_encoded(name)
21
+ encoded_name ? encoded_name.gsub("Controller", "WebTransaction") : nil
13
22
  end
14
23
 
15
24
  def make_transaction_name(name, category = nil)
@@ -33,7 +42,7 @@ module OneApm
33
42
  end
34
43
 
35
44
  def name_last_frame(name)
36
- frame_stack.last.name = name
45
+ frame_stack.last.name = filter(name)
37
46
  end
38
47
 
39
48
  def log_frozen_name(name)
@@ -56,7 +65,7 @@ module OneApm
56
65
 
57
66
  def promoted_transaction_name(name)
58
67
  if name.start_with?(Transaction::MIDDLEWARE_PREFIX)
59
- "#{Transaction::CONTROLLER_PREFIX}#{name}"
68
+ "#{Transaction::WEB_TRANSACTION_PREFIX}#{name}"
60
69
  else
61
70
  name
62
71
  end
@@ -70,9 +79,9 @@ module OneApm
70
79
 
71
80
  if name.nil?
72
81
  ignore!
73
- @frozen_name = best_name
82
+ self.frozen_name = best_name
74
83
  else
75
- @frozen_name = name
84
+ self.frozen_name = name
76
85
  end
77
86
  end
78
87
 
@@ -8,10 +8,10 @@ module OneApm
8
8
  def self.prefix_for_category(txn, category = nil)
9
9
  category ||= (txn && txn.category)
10
10
  case category
11
- when :controller then ::OneApm::Transaction::CONTROLLER_PREFIX
11
+ when :controller then ::OneApm::Transaction::WEB_TRANSACTION_PREFIX
12
12
  when :task then ::OneApm::Transaction::TASK_PREFIX
13
13
  when :rack then ::OneApm::Transaction::RACK_PREFIX
14
- when :uri then ::OneApm::Transaction::CONTROLLER_PREFIX
14
+ when :uri then ::OneApm::Transaction::WEB_TRANSACTION_PREFIX
15
15
  when :sinatra then ::OneApm::Transaction::SINATRA_PREFIX
16
16
  when :middleware then ::OneApm::Transaction::MIDDLEWARE_PREFIX
17
17
  when :grape then ::OneApm::Transaction::GRAPE_PREFIX
@@ -4,7 +4,7 @@ module OneApm
4
4
  class Transaction
5
5
 
6
6
  def summary_metrics
7
- if @frozen_name.start_with?(CONTROLLER_PREFIX)
7
+ if @frozen_name.start_with?(WEB_TRANSACTION_PREFIX)
8
8
  [WEB_SUMMARY_METRIC]
9
9
  else
10
10
  background_summary_metrics
@@ -5,9 +5,10 @@ module OneApm
5
5
 
6
6
  MAJOR = 1
7
7
  MINOR = 2
8
- TINY = 1
8
+ TINY = 2
9
+ TAG = 'rc'
9
10
 
10
- STRING = [MAJOR, MINOR, TINY].compact.join('.')
11
+ STRING = [MAJOR, MINOR, TINY, TAG].compact.join('.')
11
12
 
12
13
  end
13
14
  end
data/oneapm_rpm.gemspec CHANGED
@@ -29,6 +29,7 @@ Gem::Specification.new do |s|
29
29
  s.add_development_dependency 'minitest', '~> 4.7'
30
30
  s.add_development_dependency 'minitest-ci', '= 2.4.0'
31
31
  s.add_development_dependency 'minitest-focus', '~> 1.1'
32
+ s.add_development_dependency 'minitest-reporters', '0.14.24'
32
33
  s.add_development_dependency 'simplecov', '= 0.10.0'
33
34
  s.add_development_dependency 'mocha', '~> 0.13.0'
34
35
  s.add_development_dependency 'rails', '~> 3.2'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: oneapm_rpm
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.1
4
+ version: 1.2.2.rc
5
5
  platform: ruby
6
6
  authors:
7
7
  - oneapm
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-09-15 00:00:00.000000000 Z
11
+ date: 2015-09-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: minitest-reporters
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 0.14.24
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 0.14.24
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: simplecov
71
85
  requirement: !ruby/object:Gem::Requirement