rorvswild 0.6.1 → 1.0.0.pre.alpha

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,3 @@
1
1
  require File.expand_path("#{File.dirname(__FILE__)}/helper")
2
2
 
3
- Dir.glob("**/*_test.rb").each { |file_path| require File.expand_path(file_path) }
3
+ Dir.glob("test/**/*_test.rb").each { |file_path| require File.expand_path(file_path) }
@@ -0,0 +1,53 @@
1
+ require File.expand_path("#{File.dirname(__FILE__)}/helper")
2
+
3
+ class RorVsWild::SectionTest < Minitest::Test
4
+ include RorVsWildAgentHelper
5
+
6
+ def setup
7
+ agent
8
+ end
9
+
10
+ def test_sibling?
11
+ refute(section1.sibling?(section2))
12
+ refute(section2.sibling?(section1))
13
+
14
+ section2.line = section1.line
15
+ assert(section1.sibling?(section2))
16
+ assert(section2.sibling?(section1))
17
+ end
18
+
19
+ def test_merge
20
+ section1.merge(section2)
21
+ assert_equal(3, section1.calls)
22
+ assert_equal(3, section1.total_runtime)
23
+ assert_equal(3, section1.children_runtime)
24
+ end
25
+
26
+ def section1
27
+ unless @section1
28
+ s = RorVsWild::Section.new
29
+ s.kind = "test"
30
+ s.file = "file"
31
+ s.line = 1
32
+ s.calls = 1
33
+ s.total_runtime = 1
34
+ s.children_runtime = 1
35
+ @section1 = s
36
+ end
37
+ @section1
38
+ end
39
+
40
+ def section2
41
+ unless @section2
42
+ s = RorVsWild::Section.new
43
+ s.kind = "test"
44
+ s.file = "file"
45
+ s.line = 2
46
+ s.calls = 2
47
+ s.total_runtime = 2
48
+ s.children_runtime = 2
49
+ @section2 = s
50
+ end
51
+ @section2
52
+ end
53
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rorvswild
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 1.0.0.pre.alpha
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexis Bernard
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-02-27 00:00:00.000000000 Z
11
+ date: 2017-04-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -40,23 +40,40 @@ files:
40
40
  - bin/rorvswild-install
41
41
  - cacert.pem
42
42
  - lib/rorvswild.rb
43
+ - lib/rorvswild/agent.rb
43
44
  - lib/rorvswild/client.rb
44
45
  - lib/rorvswild/installer.rb
45
46
  - lib/rorvswild/location.rb
47
+ - lib/rorvswild/plugin/action_controller.rb
48
+ - lib/rorvswild/plugin/action_mailer.rb
49
+ - lib/rorvswild/plugin/action_view.rb
50
+ - lib/rorvswild/plugin/active_job.rb
51
+ - lib/rorvswild/plugin/active_record.rb
52
+ - lib/rorvswild/plugin/delayed_job.rb
46
53
  - lib/rorvswild/plugin/mongo.rb
47
54
  - lib/rorvswild/plugin/net_http.rb
48
55
  - lib/rorvswild/plugin/redis.rb
49
56
  - lib/rorvswild/plugin/resque.rb
50
57
  - lib/rorvswild/plugin/sidekiq.rb
58
+ - lib/rorvswild/plugins.rb
51
59
  - lib/rorvswild/rails_loader.rb
60
+ - lib/rorvswild/section.rb
52
61
  - lib/rorvswild/version.rb
53
62
  - rorvswild.gemspec
54
63
  - test/helper.rb
64
+ - test/measure_nested_sections_test.rb
65
+ - test/plugin/action_controller_test.rb
66
+ - test/plugin/action_mailer_test.rb
67
+ - test/plugin/action_view_test.rb
68
+ - test/plugin/active_job_test.rb
69
+ - test/plugin/active_record_test.rb
70
+ - test/plugin/delayed_job_test.rb
55
71
  - test/plugin/mongo_test.rb
56
72
  - test/plugin/net_http_test.rb
57
73
  - test/plugin/redis_test.rb
58
- - test/ror_vs_wild_test.rb
74
+ - test/rorvswild_test.rb
59
75
  - test/run.rb
76
+ - test/section_test.rb
60
77
  homepage: https://www.rorvswild.com
61
78
  licenses:
62
79
  - MIT
@@ -72,20 +89,28 @@ required_ruby_version: !ruby/object:Gem::Requirement
72
89
  version: '0'
73
90
  required_rubygems_version: !ruby/object:Gem::Requirement
74
91
  requirements:
75
- - - ">="
92
+ - - ">"
76
93
  - !ruby/object:Gem::Version
77
- version: '0'
94
+ version: 1.3.1
78
95
  requirements: []
79
96
  rubyforge_project:
80
- rubygems_version: 2.5.1
97
+ rubygems_version: 2.4.8
81
98
  signing_key:
82
99
  specification_version: 4
83
100
  summary: Ruby on Rails app monitoring
84
101
  test_files:
85
102
  - test/helper.rb
103
+ - test/measure_nested_sections_test.rb
104
+ - test/plugin/action_controller_test.rb
105
+ - test/plugin/action_mailer_test.rb
106
+ - test/plugin/action_view_test.rb
107
+ - test/plugin/active_job_test.rb
108
+ - test/plugin/active_record_test.rb
109
+ - test/plugin/delayed_job_test.rb
86
110
  - test/plugin/mongo_test.rb
87
111
  - test/plugin/net_http_test.rb
88
112
  - test/plugin/redis_test.rb
89
- - test/ror_vs_wild_test.rb
113
+ - test/rorvswild_test.rb
90
114
  - test/run.rb
115
+ - test/section_test.rb
91
116
  has_rdoc:
@@ -1,147 +0,0 @@
1
- require File.expand_path("#{File.dirname(__FILE__)}/helper")
2
-
3
- class RorVsWildTest < Minitest::Test
4
- include TopTests
5
-
6
- def test_measure_code
7
- client.expects(:post_job)
8
- assert_equal(2, client.measure_code("1 + 1"))
9
- assert_equal("1 + 1", client.send(:job)[:name])
10
- assert(client.send(:job)[:runtime] > 0)
11
- assert_equal(0, client.send(:job)[:cpu_runtime])
12
- end
13
-
14
- def test_measure_code_when_raising
15
- client.expects(:post_job)
16
- assert_raises(RuntimeError) { client.measure_code("raise 'error'") }
17
- assert_equal(("raise 'error'"), client.send(:job)[:name])
18
- assert(client.send(:job)[:cpu_runtime])
19
- assert(client.send(:job)[:runtime])
20
- assert(client.send(:job)[:error])
21
- end
22
-
23
- def test_mesure_block_when_exception_is_ignored
24
- client = initialize_client(ignored_exceptions: %w[ZeroDivisionError])
25
- client.expects(:post_job)
26
- assert_raises(ZeroDivisionError) { RorVsWild.measure_code("1/0") }
27
- refute(client.send(:job)[:error])
28
- end
29
-
30
- def test_measure_code_when_no_client
31
- RorVsWild.register_client(nil)
32
- RorVsWild::Client.any_instance.expects(:post_job).never
33
- assert_equal(2, RorVsWild.measure_code("1+1"))
34
- end
35
-
36
- def test_measure_block_when_no_client
37
- RorVsWild.register_client(nil)
38
- RorVsWild::Client.any_instance.expects(:post_job).never
39
- assert_equal(2, RorVsWild.measure_block("1+1") { 1+1 })
40
- end
41
-
42
- def test_measure_block_recursive
43
- client.expects(:post_job)
44
- result = RorVsWild.measure_block("1") do
45
- RorVsWild.measure_block("2") { 1 } + 1
46
- end
47
- assert_equal(2, result)
48
- end
49
-
50
- def test_catch_error
51
- client.expects(:post_error)
52
- exception = RorVsWild.catch_error { 1 / 0 }
53
- assert_equal(ZeroDivisionError, exception.class)
54
- end
55
-
56
- def test_catch_error_with_extra_details
57
- client.expects(:post_error)
58
- exception = RorVsWild.catch_error(foo: "bar") { 1 / 0 }
59
- assert_equal(ZeroDivisionError, exception.class)
60
- end
61
-
62
- def test_catch_error_when_no_errors
63
- client.expects(:post_error).never
64
- assert_equal(2, RorVsWild.catch_error { 1 + 1 })
65
- end
66
-
67
- def test_extract_most_relevant_location
68
- callstack = ["#{ENV["GEM_HOME"]}/lib/sql.rb:1:in `method1'", "/usr/lib/ruby/net/http.rb:2:in `method2'", "/rails/root/app/models/user.rb:3:in `method3'"]
69
- assert_equal(%w[/app/models/user.rb 3 method3], client.extract_most_relevant_location(callstack))
70
-
71
- assert_equal(["#{ENV["GEM_HOME"]}/lib/sql.rb", "1", "method1"], client.extract_most_relevant_location(["#{ENV["GEM_HOME"]}/lib/sql.rb:1:in `method1'"]))
72
- end
73
-
74
- def test_extract_most_relevant_location_when_there_is_not_app_root
75
- client = initialize_client
76
- callstack = ["#{ENV["GEM_HOME"]}/lib/sql.rb:1:in `method1'", "/usr/lib/ruby/net/http.rb:2:in `method2'", "/rails/root/app/models/user.rb:3:in `method3'"]
77
- assert_equal(%w[/usr/lib/ruby/net/http.rb 2 method2], client.extract_most_relevant_location(callstack))
78
- end
79
-
80
- def test_extract_most_relevant_location_when_there_is_no_method_name
81
- assert_equal(["/foo/bar.rb", "123", nil], client.extract_most_relevant_location(["/foo/bar.rb:123"]))
82
- end
83
-
84
- def test_extract_most_relevant_location_when_gem_home_is_in_heroku_app_root
85
- client = initialize_client(app_root: app_root = File.dirname(gem_home = ENV["GEM_HOME"]))
86
- callstack = ["#{gem_home}/lib/sql.rb:1:in `method1'", "/usr/lib/ruby/net/http.rb:2:in `method2'", "#{app_root}/app/models/user.rb:3:in `method3'"]
87
- assert_equal(["/app/models/user.rb", "3", "method3"], client.extract_most_relevant_location(callstack))
88
- end
89
-
90
- def test_extract_most_relevant_location_when_gem_path_is_set_instead_of_gem_home
91
- original_gem_home, original_gem_path = ENV["GEM_HOME"], ENV["GEM_PATH"]
92
- ENV["GEM_HOME"], ENV["GEM_PATH"] = "", "/gem/path"
93
-
94
- callstack = ["/gem/path/lib/sql.rb:1:in `method1'", "/usr/lib/ruby/net/http.rb:2:in `method2'", "/rails/root/app/models/user.rb:3:in `method3'"]
95
- assert_equal(%w[/app/models/user.rb 3 method3], client.extract_most_relevant_location(callstack))
96
- ensure
97
- ENV["GEM_HOME"], ENV["GEM_PATH"] = original_gem_home, original_gem_path
98
- end
99
-
100
- def test_extract_most_relevant_location_when_gem_path_and_gem_home_are_undefined
101
- original_gem_home, original_gem_path = ENV["GEM_HOME"], ENV["GEM_PATH"]
102
- ENV["GEM_HOME"], ENV["GEM_PATH"] = "", ""
103
-
104
- callstack = ["/gem/path/lib/sql.rb:1:in `method1'", "/usr/lib/ruby/net/http.rb:2:in `method2'", "/rails/root/app/models/user.rb:3:in `method3'"]
105
- assert_equal(%w[/app/models/user.rb 3 method3], client.extract_most_relevant_location(callstack))
106
- ensure
107
- ENV["GEM_HOME"], ENV["GEM_PATH"] = original_gem_home, original_gem_path
108
- end
109
-
110
- def test_push_query
111
- client = initialize_client
112
- client.send(:data)[:queries] = []
113
- client.send(:push_query, {kind: "sql", file: "file", line: 123, command: "BEGIN", runtime: 10})
114
- client.send(:push_query, {kind: "sql", file: "file", line: 123, command: "SELECT 1", runtime: 10})
115
- client.send(:push_query, {kind: "sql", file: "file", line: 123, command: "SELECT 1", runtime: 10})
116
- client.send(:push_query, {kind: "sql", file: "file", line: 123, command: "COMMIT", runtime: 10})
117
- assert_equal([{kind: "sql", file: "file", line: 123, command: "SELECT 1", runtime: 40, times: 2}], client.send(:queries))
118
- end
119
-
120
- def test_after_exception
121
- exception, controller = nil, stub(session: {}, request: stub(env: ENV))
122
- begin; 1/0; rescue => exception; end
123
- assert_raises(ZeroDivisionError) { client.after_exception(exception, controller) }
124
- assert_equal("ZeroDivisionError", client.send(:request)[:error][:exception])
125
- end
126
-
127
- def test_after_exception_when_ignored
128
- client = initialize_client(ignored_exceptions: %w[ZeroDivisionError])
129
- exception, controller = nil, stub(session: {}, request: stub(env: ENV))
130
- begin; raise 1/0; rescue => exception; end
131
- assert_raises(ZeroDivisionError) { client.after_exception(exception, controller) }
132
- refute(client.send(:request)[:error])
133
- end
134
-
135
- private
136
-
137
- def client
138
- @client ||= initialize_client(app_root: "/rails/root")
139
- end
140
-
141
- def initialize_client(options = {})
142
- client ||= RorVsWild::Client.new(options)
143
- client.stubs(:post_request)
144
- client.stubs(:post_task)
145
- client
146
- end
147
- end