traceview 3.3.3-java → 3.4.0-java

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +18 -18
  3. data/CHANGELOG.md +13 -0
  4. data/README.md +3 -1
  5. data/Rakefile +18 -9
  6. data/gemfiles/delayed_job.gemfile +38 -0
  7. data/gemfiles/frameworks.gemfile +1 -2
  8. data/gemfiles/libraries.gemfile +1 -2
  9. data/gemfiles/rails23.gemfile +1 -2
  10. data/gemfiles/rails30.gemfile +4 -2
  11. data/gemfiles/rails31.gemfile +4 -2
  12. data/gemfiles/rails32.gemfile +4 -2
  13. data/gemfiles/rails40.gemfile +4 -2
  14. data/gemfiles/rails41.gemfile +4 -2
  15. data/gemfiles/rails42.gemfile +4 -2
  16. data/lib/traceview/api/layerinit.rb +3 -5
  17. data/lib/traceview/api/logging.rb +63 -50
  18. data/lib/traceview/api/memcache.rb +10 -9
  19. data/lib/traceview/api/profiling.rb +6 -7
  20. data/lib/traceview/api/util.rb +1 -1
  21. data/lib/traceview/base.rb +21 -7
  22. data/lib/traceview/config.rb +8 -4
  23. data/lib/traceview/frameworks/padrino.rb +2 -2
  24. data/lib/traceview/frameworks/rails/inst/action_controller.rb +3 -3
  25. data/lib/traceview/frameworks/rails/inst/action_view.rb +4 -2
  26. data/lib/traceview/frameworks/rails/inst/action_view_2x.rb +4 -2
  27. data/lib/traceview/frameworks/rails/inst/action_view_30.rb +4 -2
  28. data/lib/traceview/frameworks/rails/inst/connection_adapters/utils.rb +3 -3
  29. data/lib/traceview/frameworks/rails.rb +26 -32
  30. data/lib/traceview/frameworks/sinatra/templates.rb +1 -1
  31. data/lib/traceview/frameworks/sinatra.rb +1 -1
  32. data/lib/traceview/inst/dalli.rb +4 -5
  33. data/lib/traceview/inst/delayed_job.rb +92 -0
  34. data/lib/traceview/inst/em-http-request.rb +3 -0
  35. data/lib/traceview/inst/excon.rb +3 -3
  36. data/lib/traceview/inst/faraday.rb +4 -1
  37. data/lib/traceview/inst/mongo.rb +10 -5
  38. data/lib/traceview/inst/moped.rb +4 -4
  39. data/lib/traceview/inst/redis.rb +5 -7
  40. data/lib/traceview/inst/resque.rb +3 -3
  41. data/lib/traceview/inst/rest-client.rb +2 -2
  42. data/lib/traceview/inst/sidekiq-client.rb +3 -0
  43. data/lib/traceview/inst/sidekiq-worker.rb +3 -0
  44. data/lib/traceview/inst/twitter-cassandra.rb +8 -4
  45. data/lib/traceview/test.rb +30 -1
  46. data/lib/traceview/util.rb +7 -0
  47. data/lib/traceview/version.rb +2 -2
  48. data/test/frameworks/rails3x_test.rb +12 -2
  49. data/test/frameworks/rails4x_test.rb +12 -2
  50. data/test/instrumentation/curb_test.rb +2 -2
  51. data/test/instrumentation/dalli_test.rb +121 -118
  52. data/test/instrumentation/httpclient_test.rb +0 -1
  53. data/test/jobs/delayed_job/db_worker_job.rb +29 -0
  54. data/test/jobs/delayed_job/error_worker_job.rb +10 -0
  55. data/test/jobs/delayed_job/remote_call_worker_job.rb +20 -0
  56. data/test/minitest_helper.rb +8 -3
  57. data/test/models/widget.rb +19 -0
  58. data/test/queues/delayed_job-client_test.rb +95 -0
  59. data/test/queues/delayed_job-worker_test.rb +91 -0
  60. data/test/servers/delayed_job.rb +102 -0
  61. data/test/servers/rails3x_8140.rb +17 -1
  62. data/test/servers/rails4x_8140.rb +18 -1
  63. data/test/support/auto_tracing.rb +40 -0
  64. data/test/support/config_test.rb +5 -1
  65. data/traceview.gemspec +1 -0
  66. metadata +34 -6
  67. data/test/instrumentation/delayed_job-client_test.rb +0 -128
  68. data/test/instrumentation/delayed_job-worker_test.rb +0 -177
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba9ede32f6b82764e4c1f79575f13195e60365cc
4
- data.tar.gz: 7c4fd3b02180e75ff31c4e0ffb0244377bf680a4
3
+ metadata.gz: 79f990d586021911ee937f498d590b569da91445
4
+ data.tar.gz: 803519418a7cb2bb09cdcd915d436afaaa434222
5
5
  SHA512:
6
- metadata.gz: af167e8b74c3d2ca7186d6c6112ec965f6aab6cff43ee9f2bbc42a0fc94081904909047babac08f7149cdc89958f1d3ed4f59822d36b09fea62ce14f42600a7e
7
- data.tar.gz: 4374aa1626b0d93804e27b3f6d92b1eee7491fa4c7455ad5cedd19aefd668ee5c94b404ffec22a7f8d4f1b47764c635ba9ab7842e976f1a3adc5e0be28f650e8
6
+ metadata.gz: 2f3ad43392f02407f593ed2170fb053a16e7a77c30e30b1ffc1aa62972877373d395f10cf104901a64e6a314df4299405e33714edf5cce111a30acabba16ee5f
7
+ data.tar.gz: 87606a310e7cd5964ab73d6d57cbd9379e00f49ebcf75c80510c790ebea18132618950352eb933c8f4fc89b6990cb293953db786607c9df4c084c824fa9f6b43
data/.travis.yml CHANGED
@@ -6,42 +6,42 @@ cache:
6
6
  - vendor/bundle
7
7
 
8
8
  rvm:
9
- - 2.2.3
9
+ - 2.2.4
10
10
  - 1.9.3
11
11
  - 1.8.7
12
- - jruby-9.0.0.0
12
+ - jruby-9.0.4.0
13
13
 
14
14
  gemfile:
15
15
  - gemfiles/libraries.gemfile
16
16
  - gemfiles/frameworks.gemfile
17
- - gemfiles/rails30.gemfile
18
- - gemfiles/rails31.gemfile
19
17
  - gemfiles/rails32.gemfile
20
- - gemfiles/rails40.gemfile
21
- - gemfiles/rails41.gemfile
22
18
  - gemfiles/rails42.gemfile
19
+ - gemfiles/delayed_job.gemfile
23
20
 
24
21
  matrix:
25
22
  exclude:
26
23
  # Rails 4.0+ requires Ruby 1.9.3 or higher
27
24
  - rvm: 1.8.7
28
- gemfile: gemfiles/rails40.gemfile
29
- - rvm: 1.8.7
30
- gemfile: gemfiles/rails41.gemfile
31
- - rvm: 1.8.7
32
- gemfile: gemfiles/rails42.gemfile
33
- - rvm: ree
34
- gemfile: gemfiles/rails40.gemfile
35
- - rvm: ree
36
- gemfile: gemfiles/rails41.gemfile
37
- - rvm: ree
38
25
  gemfile: gemfiles/rails42.gemfile
39
26
 
27
+ # Don't test DelayedJob under MRI 1.8 and JRuby
28
+ - rvm: 1.8.7
29
+ gemfile: gemfiles/delayed_job.gemfile
30
+
31
+ - rvm: jruby-9.0.4.0
32
+ gemfile: gemfiles/delayed_job.gemfile
33
+
40
34
  # Other frameworks tested on Ruby 1.9.3 or higher
41
35
  - rvm: 1.8.7
42
36
  gemfile: gemfiles/frameworks.gemfile
43
- - rvm: ree
44
- gemfile: gemfiles/frameworks.gemfile
37
+
38
+ allow_failures:
39
+ - rvm: jruby-9.0.4.0
40
+ gemfile: gemfiles/rails32.gemfile
41
+
42
+ - rvm: jruby-9.0.4.0
43
+ gemfile: gemfiles/rails42.gemfile
44
+
45
45
 
46
46
  # Attempt Travis/Cassandra fix re: https://github.com/travis-ci/travis-ci/issues/1484
47
47
  # Updated Cassandra: https://github.com/travis-ci/travis-ci/issues/1650
data/CHANGELOG.md CHANGED
@@ -4,6 +4,19 @@ https://github.com/appneta/oboe-ruby/releases
4
4
 
5
5
  Dates in this file are in the format MM/DD/YYYY.
6
6
 
7
+ # traceview 3.4.0
8
+
9
+ This minor release includes the following features & fixes:
10
+
11
+ * New [DelayedJob](https://github.com/collectiveidea/delayed_job/) instrumentation: #151
12
+ * Limit BSON gem dependency to < 4.0: #152
13
+ * Code refactoring & improvements: #148
14
+
15
+ Pushed to Rubygems:
16
+
17
+ https://rubygems.org/gems/traceview/versions/3.4.0
18
+ https://rubygems.org/gems/traceview/versions/3.4.0-java
19
+
7
20
  # traceview 3.3.3
8
21
 
9
22
  This patch release includes the following fixes:
data/README.md CHANGED
@@ -16,6 +16,8 @@ _Note: The repository name has been changed to ruby-traceview. Please update yo
16
16
 
17
17
  # Installation
18
18
 
19
+ _Before installing the gem below, make sure that you have the [base packages](http://docs.appneta.com/installation-overview#1-install-base-packages) installed on your host first._
20
+
19
21
  The traceview gem is [available on Rubygems](https://rubygems.org/gems/traceview) and can be installed with:
20
22
 
21
23
  ```bash
@@ -199,7 +201,7 @@ class Engine
199
201
  end
200
202
  ```
201
203
 
202
- This example demonstrates method profiling of instance methods. Class methods are profiled slightly differently. See the TraceView [documentation portal](https://docs.appneta.com/custom-ruby-instrumentation) for full details.
204
+ This example demonstrates method profiling of instance methods. Class methods are profiled slightly differently. See the TraceView [documentation portal](https://docs.appneta.com/ruby#customizing-ruby-instrumentation) for full details.
203
205
 
204
206
  # Support
205
207
 
data/Rakefile CHANGED
@@ -3,6 +3,7 @@
3
3
  require 'rubygems'
4
4
  require 'bundler/setup'
5
5
  require 'rake/testtask'
6
+ require 'traceview/test'
6
7
 
7
8
  Rake::TestTask.new do |t|
8
9
  t.verbose = true
@@ -16,7 +17,10 @@ Rake::TestTask.new do |t|
16
17
  # Here we detect the Gemfile the tests are being run against
17
18
  # and load the appropriate tests.
18
19
  #
19
- case File.basename(ENV['BUNDLE_GEMFILE'])
20
+ case TraceView::Test.gemfile
21
+ when /delayed_job/
22
+ require 'delayed/tasks'
23
+ t.test_files = FileList["test/queues/delayed_job*_test.rb"]
20
24
  when /rails/
21
25
  # Pre-load rails to get the major version number
22
26
  require 'rails'
@@ -114,22 +118,27 @@ end
114
118
  desc "Rebuild the gem's c extension"
115
119
  task :recompile => [ :distclean, :compile ]
116
120
 
117
- task :console do
118
- require 'traceview/test'
121
+ task :environment do
119
122
  ENV['TRACEVIEW_GEM_VERBOSE'] = 'true'
123
+
120
124
  Bundler.require(:default, :development)
121
125
  TraceView::Config[:tracing_mode] = :always
122
126
  TV::Test.load_extras
127
+
128
+ if TV::Test.gemfile?(:delayed_job)
129
+ require 'delayed/tasks'
130
+ end
131
+ end
132
+
133
+ task :console => :environment do
123
134
  ARGV.clear
135
+ if TV::Test.gemfile?(:delayed_job)
136
+ require './test/servers/delayed_job'
137
+ end
124
138
  Pry.start
125
139
  end
126
140
 
127
141
  # Used when testing Resque locally
128
- task "resque:setup" do
142
+ task "resque:setup" => :environment do
129
143
  require 'resque/tasks'
130
- require 'traceview/test'
131
- ENV['TRACEVIEW_GEM_VERBOSE'] = 'true'
132
- Bundler.require(:default, :development)
133
- TraceView::Config[:tracing_mode] = :always
134
- TV::Test.load_extras
135
144
  end
@@ -0,0 +1,38 @@
1
+ source "https://rubygems.org"
2
+
3
+ group :development, :test do
4
+ gem 'rake'
5
+ gem 'minitest'
6
+ gem 'minitest-reporters', '< 1.0.18'
7
+ gem 'minitest-debugger', :require => false
8
+ gem 'rack-test'
9
+ gem 'puma'
10
+ gem 'bson'
11
+ end
12
+
13
+ group :development do
14
+ gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
+ gem 'debugger', :platform => :mri_19
16
+ gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
+ if RUBY_VERSION > '1.8.7'
18
+ gem 'pry'
19
+ gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
20
+ else
21
+ gem 'pry', '0.9.12.4'
22
+ end
23
+ end
24
+
25
+ if defined?(JRUBY_VERSION)
26
+ gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
29
+ else
30
+ gem 'sinatra'
31
+ gem 'pg'
32
+ gem "delayed_job_active_record"
33
+ end
34
+
35
+ gem "rails", "~> 4.2.5"
36
+
37
+ gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
38
+ # vim:syntax=ruby
@@ -18,7 +18,6 @@ group :development do
18
18
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
19
19
  gem 'debugger', :platform => :mri_19
20
20
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
21
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
22
21
  if RUBY_VERSION > '1.8.7'
23
22
  gem 'pry'
24
23
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -33,7 +32,7 @@ else
33
32
  gem 'sinatra'
34
33
  end
35
34
 
36
- gem "grape"
35
+ gem "grape", "< 0.14"
37
36
  gem "padrino", '< 0.13'
38
37
 
39
38
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
@@ -28,7 +28,6 @@ group :development do
28
28
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
29
29
  gem 'debugger', :platform => :mri_19
30
30
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
31
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
32
31
  if RUBY_VERSION > '1.8.7'
33
32
  gem 'pry'
34
33
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -45,7 +44,7 @@ end
45
44
 
46
45
  gem 'cassandra'
47
46
  gem 'curb' unless defined?(JRUBY_VERSION)
48
- gem 'dalli'
47
+ gem 'dalli' if RUBY_VERSION > '1.8.7'
49
48
  gem 'excon'
50
49
  gem 'faraday'
51
50
  gem 'httpclient'
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -46,7 +45,7 @@ else
46
45
  gem 'sinatra'
47
46
  end
48
47
 
49
- gem "rails", "~>2.3"
48
+ gem "rails", "~> 2.3.18"
50
49
 
51
50
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
51
  # vim:syntax=ruby
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -42,11 +41,14 @@ end
42
41
 
43
42
  if defined?(JRUBY_VERSION)
44
43
  gem 'sinatra', :require => false
44
+ gem 'activerecord-jdbc-adapter'
45
+ gem 'jdbc-postgresql'
45
46
  else
46
47
  gem 'sinatra'
48
+ gem 'pg', '< 0.17'
47
49
  end
48
50
 
49
- gem "rails", "~>3.0"
51
+ gem "rails", "~> 3.0.20"
50
52
 
51
53
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
54
  # vim:syntax=ruby
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -42,11 +41,14 @@ end
42
41
 
43
42
  if defined?(JRUBY_VERSION)
44
43
  gem 'sinatra', :require => false
44
+ gem 'activerecord-jdbc-adapter'
45
+ gem 'jdbc-postgresql'
45
46
  else
46
47
  gem 'sinatra'
48
+ gem 'pg', '< 0.17'
47
49
  end
48
50
 
49
- gem "rails", "~>3.1"
51
+ gem "rails", "~> 3.1.12"
50
52
 
51
53
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
54
  # vim:syntax=ruby
@@ -31,7 +31,6 @@ group :development do
31
31
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
32
32
  gem 'debugger', :platform => :mri_19
33
33
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
34
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
35
34
  if RUBY_VERSION > '1.8.7'
36
35
  gem 'pry'
37
36
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -42,11 +41,14 @@ end
42
41
 
43
42
  if defined?(JRUBY_VERSION)
44
43
  gem 'sinatra', :require => false
44
+ gem 'activerecord-jdbc-adapter'
45
+ gem 'jdbc-postgresql'
45
46
  else
46
47
  gem 'sinatra'
48
+ gem 'pg', '< 0.17'
47
49
  end
48
50
 
49
- gem "rails", "~>3.2"
51
+ gem "rails", "~> 3.2.22"
50
52
 
51
53
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
52
54
  # vim:syntax=ruby
@@ -14,7 +14,6 @@ group :development do
14
14
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
15
  gem 'debugger', :platform => :mri_19
16
16
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
18
17
  if RUBY_VERSION > '1.8.7'
19
18
  gem 'pry'
20
19
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -25,11 +24,14 @@ end
25
24
 
26
25
  if defined?(JRUBY_VERSION)
27
26
  gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
28
29
  else
29
30
  gem 'sinatra'
31
+ gem 'pg', '< 0.17'
30
32
  end
31
33
 
32
- gem "rails", "~>4.0"
34
+ gem "rails", "~> 4.0.13"
33
35
 
34
36
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
35
37
  # vim:syntax=ruby
@@ -14,7 +14,6 @@ group :development do
14
14
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
15
  gem 'debugger', :platform => :mri_19
16
16
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
18
17
  if RUBY_VERSION > '1.8.7'
19
18
  gem 'pry'
20
19
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -25,11 +24,14 @@ end
25
24
 
26
25
  if defined?(JRUBY_VERSION)
27
26
  gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
28
29
  else
29
30
  gem 'sinatra'
31
+ gem 'pg', '< 0.17'
30
32
  end
31
33
 
32
- gem "rails", "~>4.1"
34
+ gem "rails", "~> 4.1.14"
33
35
 
34
36
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
35
37
  # vim:syntax=ruby
@@ -14,7 +14,6 @@ group :development do
14
14
  gem 'ruby-debug', :platforms => [ :mri_18, :jruby ]
15
15
  gem 'debugger', :platform => :mri_19
16
16
  gem 'byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
17
- # gem 'perftools.rb', :platforms => [ :mri_20, :mri_21 ], :require => 'perftools'
18
17
  if RUBY_VERSION > '1.8.7'
19
18
  gem 'pry'
20
19
  gem 'pry-byebug', :platforms => [ :mri_20, :mri_21, :mri_22 ]
@@ -25,11 +24,14 @@ end
25
24
 
26
25
  if defined?(JRUBY_VERSION)
27
26
  gem 'sinatra', :require => false
27
+ gem 'activerecord-jdbc-adapter'
28
+ gem 'jdbc-postgresql'
28
29
  else
29
30
  gem 'sinatra'
31
+ gem 'pg'
30
32
  end
31
33
 
32
- gem "rails", "~>4.2"
34
+ gem "rails", "~> 4.2.5"
33
35
 
34
36
  gemspec :path => File.expand_path(File.dirname(__FILE__) + '/../')
35
37
  # vim:syntax=ruby
@@ -13,11 +13,9 @@ module TraceView
13
13
  def report_init(layer = 'rack')
14
14
  # Don't send __Init in development, test or if the gem
15
15
  # isn't fully loaded (e.g. missing c-extension)
16
- if %w(development test).include? ENV['RACK_ENV'] ||
17
- ENV.key?('TRACEVIEW_GEM_TEST') ||
18
- !TraceView.loaded
19
- return
20
- end
16
+ return if %w(development test).include?(ENV['RACK_ENV']) ||
17
+ ENV.key?('TRACEVIEW_GEM_TEST') ||
18
+ !TraceView.loaded
21
19
 
22
20
  platform_info = TraceView::Util.build_init_report
23
21
 
@@ -31,9 +31,9 @@ module TraceView
31
31
  #
32
32
  # Returns nothing.
33
33
  def log(layer, label, opts = {})
34
- if TraceView.loaded
35
- log_event(layer, label, TraceView::Context.createEvent, opts)
36
- end
34
+ return unless TraceView.loaded
35
+
36
+ log_event(layer, label, TraceView::Context.createEvent, opts)
37
37
  end
38
38
 
39
39
  ##
@@ -58,6 +58,11 @@ module TraceView
58
58
  def log_exception(layer, exn, kvs = {})
59
59
  return if !TraceView.loaded || exn.instance_variable_get(:@oboe_logged)
60
60
 
61
+ unless exn
62
+ TV.logger.debug '[traceview/debug] log_exception called with nil exception'
63
+ return
64
+ end
65
+
61
66
  kvs.merge!(:ErrorClass => exn.class.name,
62
67
  :ErrorMsg => exn.message,
63
68
  :Backtrace => exn.backtrace.join("\r\n"))
@@ -84,6 +89,14 @@ module TraceView
84
89
  return if !TraceView.loaded || TraceView.never? ||
85
90
  (opts.key?(:URL) && ::TraceView::Util.static_asset?(opts[:URL]))
86
91
 
92
+ # For entry only layers (DelayedJob workers, Sidekiq workers), auto-set the tracing mode
93
+ # Don't do this if tracing mode is already :always or :never
94
+ if TraceView.through? && TraceView.entry_layer?(layer)
95
+ TraceView.logger.debug "[traceview/debug] Detected #{layer}: auto-configuring tracing mode"
96
+ TraceView::Config[:tracing_mode] = :always
97
+ end
98
+
99
+ # Used by JRuby/Java webservers such as Tomcat
87
100
  TraceView::Context.fromString(xtrace) if TraceView.pickup_context?(xtrace)
88
101
 
89
102
  if TraceView.tracing?
@@ -132,12 +145,12 @@ module TraceView
132
145
  #
133
146
  # Returns an xtrace metadata string
134
147
  def log_end(layer, opts = {})
135
- if TraceView.loaded
136
- log_event(layer, 'exit', TraceView::Context.createEvent, opts)
137
- xtrace = TraceView::Context.toString
138
- TraceView::Context.clear unless TraceView.has_incoming_context?
139
- xtrace
140
- end
148
+ return unless TraceView.loaded
149
+
150
+ log_event(layer, 'exit', TraceView::Context.createEvent, opts)
151
+ xtrace = TraceView::Context.toString
152
+ TraceView::Context.clear unless TraceView.has_incoming_context?
153
+ xtrace
141
154
  end
142
155
 
143
156
  ##
@@ -157,10 +170,10 @@ module TraceView
157
170
  #
158
171
  # Returns an xtrace metadata string
159
172
  def log_entry(layer, kvs = {}, op = nil)
160
- if TraceView.loaded
161
- TraceView.layer_op = op if op
162
- log_event(layer, 'entry', TraceView::Context.createEvent, kvs)
163
- end
173
+ return unless TraceView.loaded
174
+
175
+ TraceView.layer_op = op if op
176
+ log_event(layer, 'entry', TraceView::Context.createEvent, kvs)
164
177
  end
165
178
 
166
179
  ##
@@ -179,9 +192,9 @@ module TraceView
179
192
  #
180
193
  # Returns an xtrace metadata string
181
194
  def log_info(layer, kvs = {})
182
- if TraceView.loaded
183
- log_event(layer, 'info', TraceView::Context.createEvent, kvs)
184
- end
195
+ return unless TraceView.loaded
196
+
197
+ log_event(layer, 'info', TraceView::Context.createEvent, kvs)
185
198
  end
186
199
 
187
200
  ##
@@ -201,10 +214,10 @@ module TraceView
201
214
  #
202
215
  # Returns an xtrace metadata string
203
216
  def log_exit(layer, kvs = {}, op = nil)
204
- if TraceView.loaded
205
- TraceView.layer_op = nil if op
206
- log_event(layer, 'exit', TraceView::Context.createEvent, kvs)
207
- end
217
+ return unless TraceView.loaded
218
+
219
+ TraceView.layer_op = nil if op
220
+ log_event(layer, 'exit', TraceView::Context.createEvent, kvs)
208
221
  end
209
222
 
210
223
  ##
@@ -227,36 +240,36 @@ module TraceView
227
240
  # TraceView::API.log_event(:layer_name, 'exit', exit_event, { :id => @user.id })
228
241
  #
229
242
  def log_event(layer, label, event, opts = {})
230
- if TraceView.loaded
231
- event.addInfo('Layer', layer.to_s) if layer
232
- event.addInfo('Label', label.to_s)
233
-
234
- TraceView.layer = layer if label == 'entry'
235
- TraceView.layer = nil if label == 'exit'
236
-
237
- opts.each do |k, v|
238
- value = nil
239
-
240
- if valid_key? k
241
- if [Integer, Float, Fixnum, NilClass, String].include?(v.class)
242
- value = v
243
- elsif v.class == Set
244
- value = v.to_a.to_s
245
- else
246
- value = v.to_s if v.respond_to?(:to_s)
247
- end
248
-
249
- begin
250
- event.addInfo(k.to_s, value)
251
- rescue ArgumentError => e
252
- TraceView.logger.debug "[TraceView/debug] Couldn't add event KV: #{k.to_s} => #{v.class}"
253
- TraceView.logger.debug "[TraceView/debug] #{e.message}"
254
- end
255
- end
256
- end if !opts.nil? && opts.any?
257
-
258
- TraceView::Reporter.sendReport(event)
259
- end
243
+ return unless TraceView.loaded
244
+
245
+ event.addInfo('Layer', layer.to_s) if layer
246
+ event.addInfo('Label', label.to_s)
247
+
248
+ TraceView.layer = layer if label == 'entry'
249
+ TraceView.layer = nil if label == 'exit'
250
+
251
+ opts.each do |k, v|
252
+ value = nil
253
+
254
+ next unless valid_key? k
255
+
256
+ if [Integer, Float, Fixnum, NilClass, String].include?(v.class)
257
+ value = v
258
+ elsif v.class == Set
259
+ value = v.to_a.to_s
260
+ else
261
+ value = v.to_s if v.respond_to?(:to_s)
262
+ end
263
+
264
+ begin
265
+ event.addInfo(k.to_s, value)
266
+ rescue ArgumentError => e
267
+ TraceView.logger.debug "[TraceView/debug] Couldn't add event KV: #{k} => #{v.class}"
268
+ TraceView.logger.debug "[TraceView/debug] #{e.message}"
269
+ end
270
+ end if !opts.nil? && opts.any?
271
+
272
+ TraceView::Reporter.sendReport(event)
260
273
  end
261
274
  end
262
275
  end
@@ -13,17 +13,18 @@ module TraceView
13
13
  end
14
14
 
15
15
  def remote_host(key)
16
- return unless defined?(Lib.memcached_server_by_key) \
17
- && defined?(@struct) && defined?(is_unix_socket?)
16
+ return unless defined?(Lib.memcached_server_by_key) &&
17
+ defined?(@struct) && defined?(is_unix_socket?)
18
18
 
19
19
  server_as_array = Lib.memcached_server_by_key(@struct, key.to_s)
20
- if server_as_array.is_a?(Array)
21
- server = server_as_array.first
22
- if is_unix_socket?(server)
23
- return 'localhost'
24
- elsif defined?(server.hostname)
25
- return server.hostname
26
- end
20
+
21
+ return unless server_as_array.is_a?(Array)
22
+
23
+ server = server_as_array.first
24
+ if is_unix_socket?(server)
25
+ 'localhost'
26
+ elsif defined?(server.hostname)
27
+ server.hostname
27
28
  end
28
29
  end
29
30
  end
@@ -69,13 +69,12 @@ module TraceView
69
69
  # TraceView::API.profile_method(Array, :sort, opts)
70
70
  #
71
71
  def profile_method(klass, method, opts = {}, extra_kvs = {})
72
-
73
72
  # If we're on an unsupported platform (ahem Mac), just act
74
73
  # like we did something to nicely play the no-op part.
75
74
  return true unless TraceView.loaded
76
75
 
77
76
  if RUBY_VERSION < '1.9.3'
78
- TraceView.logger.warn "[traceview/error] profile_method: Use the legacy method profiling for Ruby versions before 1.9.3"
77
+ TraceView.logger.warn '[traceview/error] profile_method: Use the legacy method profiling for Ruby versions before 1.9.3'
79
78
  return false
80
79
 
81
80
  elsif !klass.is_a?(Module)
@@ -110,7 +109,7 @@ module TraceView
110
109
 
111
110
  # Check if already profiled
112
111
  if klass.instance_methods.include?(with_traceview.to_sym) ||
113
- klass.singleton_methods.include?(with_traceview.to_sym)
112
+ klass.singleton_methods.include?(with_traceview.to_sym)
114
113
  TraceView.logger.warn "[traceview/error] profile_method: #{klass}::#{method} already profiled."
115
114
  TraceView.logger.warn "[traceview/error] profile_method: #{__FILE__}:#{__LINE__}"
116
115
  return false
@@ -130,17 +129,17 @@ module TraceView
130
129
 
131
130
  if instance_method
132
131
  klass.class_eval do
133
- define_method(with_traceview) { | *args, &block |
132
+ define_method(with_traceview) do |*args, &block|
134
133
  profile_wrapper(without_traceview, report_kvs, opts, *args, &block)
135
- }
134
+ end
136
135
 
137
136
  alias_method without_traceview, "#{method}"
138
137
  alias_method "#{method}", with_traceview
139
138
  end
140
139
  elsif class_method
141
- klass.define_singleton_method(with_traceview) { | *args, &block |
140
+ klass.define_singleton_method(with_traceview) do |*args, &block|
142
141
  profile_wrapper(without_traceview, report_kvs, opts, *args, &block)
143
- }
142
+ end
144
143
 
145
144
  klass.singleton_class.class_eval do
146
145
  alias_method without_traceview, "#{method}"