oneapm_rpm 1.2.1 → 1.2.2.rc

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,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