rails_metrics 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.rdoc +3 -0
- data/Gemfile +9 -0
- data/MIT-LICENSE +20 -0
- data/README.rdoc +58 -0
- data/Rakefile +58 -0
- data/TODO.rdoc +1 -0
- data/app/controllers/rails_metrics_controller.rb +78 -0
- data/app/helpers/rails_metrics_helper.rb +161 -0
- data/app/views/layouts/rails_metrics.html.erb +21 -0
- data/app/views/rails_metrics/_request.html.erb +21 -0
- data/app/views/rails_metrics/_row.html.erb +23 -0
- data/app/views/rails_metrics/all.html.erb +25 -0
- data/app/views/rails_metrics/chart.html.erb +49 -0
- data/app/views/rails_metrics/index.html.erb +21 -0
- data/app/views/rails_metrics/show.html.erb +41 -0
- data/config/routes.rb +7 -0
- data/lib/generators/rails_metrics_generator.rb +40 -0
- data/lib/rails_metrics.rb +112 -0
- data/lib/rails_metrics/async_consumer.rb +54 -0
- data/lib/rails_metrics/engine.rb +29 -0
- data/lib/rails_metrics/middleware.rb +27 -0
- data/lib/rails_metrics/orm/active_record.rb +66 -0
- data/lib/rails_metrics/payload_parser.rb +131 -0
- data/lib/rails_metrics/store.rb +132 -0
- data/lib/rails_metrics/version.rb +3 -0
- data/public/images/rails_metrics/arrow_down.png +0 -0
- data/public/images/rails_metrics/arrow_up.png +0 -0
- data/public/images/rails_metrics/cancel.png +0 -0
- data/public/images/rails_metrics/chart_pie.png +0 -0
- data/public/images/rails_metrics/page_white_delete.png +0 -0
- data/public/images/rails_metrics/page_white_go.png +0 -0
- data/public/images/rails_metrics/tick.png +0 -0
- data/public/javascripts/rails_metrics/g.pie-min.js +6 -0
- data/public/javascripts/rails_metrics/g.raphael-min.js +5 -0
- data/public/javascripts/rails_metrics/raphael-min.js +5 -0
- data/public/stylesheets/rails_metrics.css +135 -0
- data/test/dummy/app/controllers/application_controller.rb +4 -0
- data/test/dummy/app/controllers/users_controller.rb +43 -0
- data/test/dummy/app/helpers/application_helper.rb +2 -0
- data/test/dummy/app/models/metric.rb +3 -0
- data/test/dummy/app/models/notification.rb +7 -0
- data/test/dummy/app/models/user.rb +2 -0
- data/test/dummy/config/application.rb +52 -0
- data/test/dummy/config/boot.rb +9 -0
- data/test/dummy/config/environment.rb +5 -0
- data/test/dummy/config/environments/development.rb +19 -0
- data/test/dummy/config/environments/production.rb +33 -0
- data/test/dummy/config/environments/test.rb +29 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
- data/test/dummy/config/initializers/cookie_verification_secret.rb +7 -0
- data/test/dummy/config/initializers/session_store.rb +15 -0
- data/test/dummy/config/routes.rb +60 -0
- data/test/dummy/db/migrate/20100106152343_create_metrics.rb +17 -0
- data/test/dummy/db/migrate/20100108120821_create_users.rb +13 -0
- data/test/integration/instrumentation_test.rb +100 -0
- data/test/integration/navigation_test.rb +103 -0
- data/test/orm/active_record_test.rb +51 -0
- data/test/payload_parser_test.rb +36 -0
- data/test/rails_metrics_test.rb +43 -0
- data/test/store_test.rb +81 -0
- data/test/support/helpers.rb +16 -0
- data/test/support/instrumentation.rb +18 -0
- data/test/support/mock_store.rb +34 -0
- data/test/support/webrat/integrations/rails.rb +31 -0
- data/test/test_helper.rb +32 -0
- metadata +118 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class ActiveRecordTest < ActiveSupport::TestCase
|
4
|
+
setup do
|
5
|
+
Metric.delete_all
|
6
|
+
end
|
7
|
+
|
8
|
+
test "does not store own queries as notifications" do
|
9
|
+
Metric.all
|
10
|
+
wait
|
11
|
+
assert Metric.all.empty?
|
12
|
+
end
|
13
|
+
|
14
|
+
test "does not store queries other than SELECT, INSERT, UPDATE and DELETE" do
|
15
|
+
User.connection.send(:select, "SHOW tables;")
|
16
|
+
wait
|
17
|
+
assert Metric.all.empty?
|
18
|
+
end
|
19
|
+
|
20
|
+
test "serializes payload" do
|
21
|
+
metric = Metric.new
|
22
|
+
metric.configure(["metric", Time.now, Time.now, "id", {:foo => :bar}])
|
23
|
+
metric.save!
|
24
|
+
assert_equal Hash[:foo => :bar], metric.payload
|
25
|
+
end
|
26
|
+
|
27
|
+
test "is invalid when name is blank" do
|
28
|
+
metric = Metric.new
|
29
|
+
assert metric.invalid?
|
30
|
+
assert "can't be blank", metric.errors["name"].join
|
31
|
+
end
|
32
|
+
|
33
|
+
test "is invalid when started_at is blank" do
|
34
|
+
metric = Metric.new
|
35
|
+
assert metric.invalid?
|
36
|
+
assert "can't be blank", metric.errors["started_at"].join
|
37
|
+
end
|
38
|
+
|
39
|
+
test "is invalid when duration is blank" do
|
40
|
+
metric = Metric.new
|
41
|
+
assert metric.invalid?
|
42
|
+
assert "can't be blank", metric.errors["duration"].join
|
43
|
+
end
|
44
|
+
|
45
|
+
test "responds to all required named scopes" do
|
46
|
+
[ :by_name, :by_request_id, :latest,
|
47
|
+
:earliest, :slowest, :fastest, :requests ].each do |method|
|
48
|
+
assert_respond_to Metric, method
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class PayloadParserTest < ActiveSupport::TestCase
|
4
|
+
setup do
|
5
|
+
@_previous_parsers = RailsMetrics::PayloadParser.parsers.dup
|
6
|
+
end
|
7
|
+
|
8
|
+
teardown do
|
9
|
+
RailsMetrics::PayloadParser.parsers.replace @_previous_parsers
|
10
|
+
end
|
11
|
+
|
12
|
+
delegate :add, :ignore, :filter, :to => RailsMetrics::PayloadParser
|
13
|
+
|
14
|
+
test "a non registered parser returns payload as is" do
|
15
|
+
assert_equal Hash[:some => :info], filter("rails_metrics.something", :some => :info)
|
16
|
+
end
|
17
|
+
|
18
|
+
test "a parser with hash converts into method calls" do
|
19
|
+
add "rails_metrics.something", :except => [:foo, :bar]
|
20
|
+
assert_equal Hash[:some => :info], filter("rails_metrics.something", :some => :info,
|
21
|
+
:foo => :baz, :bar => :baz)
|
22
|
+
end
|
23
|
+
|
24
|
+
test "a parser with a block calls the block with payload" do
|
25
|
+
add "rails_metrics.something" do |payload|
|
26
|
+
assert_equal Hash[:some => :info], payload
|
27
|
+
{ :foo => :bar }
|
28
|
+
end
|
29
|
+
assert_equal Hash[:foo => :bar], filter("rails_metrics.something", :some => :info)
|
30
|
+
end
|
31
|
+
|
32
|
+
test "a parser can be ignored" do
|
33
|
+
ignore "rails_metrics.something"
|
34
|
+
assert_nil filter("rails_metrics.something", :some => :info)
|
35
|
+
end
|
36
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class RailsMetricsTest < ActiveSupport::TestCase
|
4
|
+
setup do
|
5
|
+
RailsMetrics.set_store { MockStore }
|
6
|
+
MockStore.instances.clear
|
7
|
+
end
|
8
|
+
|
9
|
+
test "send instrumentation event to the specified store" do
|
10
|
+
instrument "rails_metrics.something"
|
11
|
+
wait
|
12
|
+
|
13
|
+
assert_equal 2, MockStore.instances.size
|
14
|
+
assert_equal "rails_metrics.something", MockStore.instances.first.name
|
15
|
+
end
|
16
|
+
|
17
|
+
test "does not send an event to the store if it matches an ignored pattern" do
|
18
|
+
RailsMetrics.ignore_patterns << /rails_metrics/
|
19
|
+
|
20
|
+
begin
|
21
|
+
instrument "rails_metrics.something"
|
22
|
+
wait
|
23
|
+
assert MockStore.instances.none? { |m| m.name == "rails_metrics.something" }
|
24
|
+
ensure
|
25
|
+
RailsMetrics.ignore_patterns.pop
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
test "does not send an event to the store if it was generated inside it" do
|
30
|
+
instrument "rails_metrics.kicker"
|
31
|
+
wait
|
32
|
+
|
33
|
+
assert_equal 2, MockStore.instances.size
|
34
|
+
assert MockStore.instances.first.kicked?
|
35
|
+
assert_equal "rails_metrics.kicker", MockStore.instances.first.name
|
36
|
+
end
|
37
|
+
|
38
|
+
test "does not send an event if not listening" do
|
39
|
+
ActiveSupport::Notifications.instrument "rails_metrics.kicker"
|
40
|
+
wait
|
41
|
+
assert_equal 0, MockStore.instances.size
|
42
|
+
end
|
43
|
+
end
|
data/test/store_test.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class StoreTest < ActiveSupport::TestCase
|
4
|
+
setup do
|
5
|
+
RailsMetrics.set_store { MockStore }
|
6
|
+
MockStore.instances.clear
|
7
|
+
end
|
8
|
+
|
9
|
+
def sample_args
|
10
|
+
time = Time.now
|
11
|
+
["rails_metrics.example", time, time + 1, 1, { :some => :info }]
|
12
|
+
end
|
13
|
+
|
14
|
+
def store!(args=sample_args)
|
15
|
+
metric = Metric.new
|
16
|
+
metric.configure(args)
|
17
|
+
metric
|
18
|
+
end
|
19
|
+
|
20
|
+
test "sets the name" do
|
21
|
+
assert_equal "rails_metrics.example", store!.name
|
22
|
+
end
|
23
|
+
|
24
|
+
test "sets the duration" do
|
25
|
+
assert_equal 1000000, store!.duration
|
26
|
+
assert_equal 1000000, store!.duration_in_us
|
27
|
+
assert_equal 1000, store!.duration_in_ms
|
28
|
+
end
|
29
|
+
|
30
|
+
test "sets started at" do
|
31
|
+
assert_kind_of Time, store!.started_at
|
32
|
+
end
|
33
|
+
|
34
|
+
test "sets the payload" do
|
35
|
+
assert_equal Hash[:some => :info], store!.payload
|
36
|
+
end
|
37
|
+
|
38
|
+
test "nested instrumentations are saved nested" do
|
39
|
+
instrument "rails_metrics.parent" do
|
40
|
+
instrument "rails_metrics.child" do
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
instrument "rails_metrics.another"
|
45
|
+
|
46
|
+
assert_equal 5, MockStore.instances.size
|
47
|
+
child, parent, request, another, another_request = MockStore.instances
|
48
|
+
|
49
|
+
assert_equal request.id, request.request_id
|
50
|
+
assert_equal request.id, parent.request_id
|
51
|
+
assert_equal request.id, parent.parent_id
|
52
|
+
assert_equal request.id, child.request_id
|
53
|
+
assert_equal parent.id, child.parent_id
|
54
|
+
|
55
|
+
assert parent.parent_of?(child)
|
56
|
+
assert child.child_of?(parent)
|
57
|
+
|
58
|
+
assert !parent.parent_of?(another)
|
59
|
+
assert !another.parent_of?(parent)
|
60
|
+
assert !parent.child_of?(another)
|
61
|
+
assert !another.child_of?(parent)
|
62
|
+
end
|
63
|
+
|
64
|
+
test "tree can be created from nested instrumentations" do
|
65
|
+
instrument "rails_metrics.parent" do
|
66
|
+
instrument "rails_metrics.child" do
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
child, parent, request = MockStore.instances
|
71
|
+
root = RailsMetrics.store.mount_tree(MockStore.instances)
|
72
|
+
|
73
|
+
assert_equal "rails_metrics.child", child.name
|
74
|
+
assert_equal "rails_metrics.parent", parent.name
|
75
|
+
assert_equal "rack.request", request.name
|
76
|
+
|
77
|
+
assert root.rack_request?
|
78
|
+
assert [parent], root.children
|
79
|
+
assert [child], parent.children
|
80
|
+
end
|
81
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
class ActiveSupport::TestCase
|
2
|
+
# Execute the block setting the given values and restoring old values after
|
3
|
+
# the block is executed.
|
4
|
+
def swap(object, new_values)
|
5
|
+
old_values = {}
|
6
|
+
new_values.each do |key, value|
|
7
|
+
old_values[key] = object.send key
|
8
|
+
object.send :"#{key}=", value
|
9
|
+
end
|
10
|
+
yield
|
11
|
+
ensure
|
12
|
+
old_values.each do |key, value|
|
13
|
+
object.send :"#{key}=", value
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class ActiveSupport::TestCase
|
2
|
+
def wait
|
3
|
+
RailsMetrics.wait
|
4
|
+
end
|
5
|
+
|
6
|
+
# Fake a request instrumentation.
|
7
|
+
def instrument(*args, &block)
|
8
|
+
if RailsMetrics.listening?
|
9
|
+
ActiveSupport::Notifications.instrument(*args, &block)
|
10
|
+
else
|
11
|
+
RailsMetrics.listen_request do
|
12
|
+
ActiveSupport::Notifications.instrument "rack.request" do
|
13
|
+
ActiveSupport::Notifications.instrument(*args, &block)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
class ActiveSupport::TestCase
|
2
|
+
class MockStore
|
3
|
+
include RailsMetrics::Store
|
4
|
+
|
5
|
+
attr_accessor :id, :name, :parent_id, :request_id, :started_at, :duration, :payload
|
6
|
+
|
7
|
+
def self.instances
|
8
|
+
@instances ||= []
|
9
|
+
end
|
10
|
+
|
11
|
+
def initialize
|
12
|
+
self.class.instances << self
|
13
|
+
end
|
14
|
+
|
15
|
+
def kicked?
|
16
|
+
@kicked || false
|
17
|
+
end
|
18
|
+
|
19
|
+
def new_record?
|
20
|
+
true
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def save_metric!
|
26
|
+
self.id ||= (rand * 1000).to_i
|
27
|
+
|
28
|
+
if self.name == "rails_metrics.kicker"
|
29
|
+
@kicked = true
|
30
|
+
ActiveSupport::Notifications.instrument("rails_metrics.inside_store")
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'webrat/core/elements/field'
|
2
|
+
|
3
|
+
module Webrat
|
4
|
+
Field.class_eval do
|
5
|
+
def parse_rails_request_params(params)
|
6
|
+
Rack::Utils.parse_nested_query(params)
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
11
|
+
module ActionController #:nodoc:
|
12
|
+
IntegrationTest.class_eval do
|
13
|
+
include Webrat::Methods
|
14
|
+
include Webrat::Matchers
|
15
|
+
|
16
|
+
# The Rails version of within supports passing in a model and Webrat
|
17
|
+
# will apply a scope based on Rails' dom_id for that model.
|
18
|
+
#
|
19
|
+
# Example:
|
20
|
+
# within User.last do
|
21
|
+
# click_link "Delete"
|
22
|
+
# end
|
23
|
+
def within(selector_or_object, &block)
|
24
|
+
if selector_or_object.is_a?(String)
|
25
|
+
super
|
26
|
+
else
|
27
|
+
super('#' + RecordIdentifier.dom_id(selector_or_object), &block)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# Configure Rails Envinronment
|
2
|
+
ENV["RAILS_ENV"] = "test"
|
3
|
+
|
4
|
+
# To test RailsMetrics, you need to:
|
5
|
+
#
|
6
|
+
# 1) Install latest bundler with "gem install bundler"
|
7
|
+
# 2) bundle install
|
8
|
+
# 3) rake prepare
|
9
|
+
# 4) rake test
|
10
|
+
#
|
11
|
+
require File.expand_path("../dummy/config/environment.rb", __FILE__)
|
12
|
+
require "rails/test_help"
|
13
|
+
|
14
|
+
ActionMailer::Base.delivery_method = :test
|
15
|
+
ActionMailer::Base.perform_deliveries = true
|
16
|
+
ActionMailer::Base.default_url_options[:host] = "test.com"
|
17
|
+
|
18
|
+
Webrat.configure do |config|
|
19
|
+
config.mode = :rails
|
20
|
+
config.open_error_files = false
|
21
|
+
end
|
22
|
+
|
23
|
+
# Add support to load paths so we can overwrite broken webrat setup
|
24
|
+
$:.unshift File.expand_path('../support', __FILE__)
|
25
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each { |f| require f }
|
26
|
+
|
27
|
+
class ActiveSupport::TestCase
|
28
|
+
setup do
|
29
|
+
wait
|
30
|
+
RailsMetrics.set_store { Metric }
|
31
|
+
end
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,118 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: rails_metrics
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: "0.1"
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- "Jos\xC3\xA9 Valim"
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-02-15 00:00:00 +01:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Metrics measurement for your app on top of ActiveSupport::Notifications
|
17
|
+
email: contact@engineyard.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files:
|
23
|
+
- README.rdoc
|
24
|
+
files:
|
25
|
+
- CHANGELOG.rdoc
|
26
|
+
- Gemfile
|
27
|
+
- MIT-LICENSE
|
28
|
+
- README.rdoc
|
29
|
+
- Rakefile
|
30
|
+
- TODO.rdoc
|
31
|
+
- app/controllers/rails_metrics_controller.rb
|
32
|
+
- app/helpers/rails_metrics_helper.rb
|
33
|
+
- app/views/layouts/rails_metrics.html.erb
|
34
|
+
- app/views/rails_metrics/_request.html.erb
|
35
|
+
- app/views/rails_metrics/_row.html.erb
|
36
|
+
- app/views/rails_metrics/all.html.erb
|
37
|
+
- app/views/rails_metrics/chart.html.erb
|
38
|
+
- app/views/rails_metrics/index.html.erb
|
39
|
+
- app/views/rails_metrics/show.html.erb
|
40
|
+
- config/routes.rb
|
41
|
+
- lib/generators/rails_metrics_generator.rb
|
42
|
+
- lib/rails_metrics.rb
|
43
|
+
- lib/rails_metrics/async_consumer.rb
|
44
|
+
- lib/rails_metrics/engine.rb
|
45
|
+
- lib/rails_metrics/middleware.rb
|
46
|
+
- lib/rails_metrics/orm/active_record.rb
|
47
|
+
- lib/rails_metrics/payload_parser.rb
|
48
|
+
- lib/rails_metrics/store.rb
|
49
|
+
- lib/rails_metrics/version.rb
|
50
|
+
- public/images/rails_metrics/arrow_down.png
|
51
|
+
- public/images/rails_metrics/arrow_up.png
|
52
|
+
- public/images/rails_metrics/cancel.png
|
53
|
+
- public/images/rails_metrics/chart_pie.png
|
54
|
+
- public/images/rails_metrics/page_white_delete.png
|
55
|
+
- public/images/rails_metrics/page_white_go.png
|
56
|
+
- public/images/rails_metrics/tick.png
|
57
|
+
- public/javascripts/rails_metrics/g.pie-min.js
|
58
|
+
- public/javascripts/rails_metrics/g.raphael-min.js
|
59
|
+
- public/javascripts/rails_metrics/raphael-min.js
|
60
|
+
- public/stylesheets/rails_metrics.css
|
61
|
+
has_rdoc: true
|
62
|
+
homepage: http://github.com/engineyard
|
63
|
+
licenses: []
|
64
|
+
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options:
|
67
|
+
- --charset=UTF-8
|
68
|
+
require_paths:
|
69
|
+
- lib
|
70
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - ">="
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: "0"
|
75
|
+
version:
|
76
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
|
+
requirements:
|
78
|
+
- - ">="
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
version: "0"
|
81
|
+
version:
|
82
|
+
requirements: []
|
83
|
+
|
84
|
+
rubyforge_project:
|
85
|
+
rubygems_version: 1.3.5
|
86
|
+
signing_key:
|
87
|
+
specification_version: 3
|
88
|
+
summary: Metrics measurement for your app on top of ActiveSupport::Notifications
|
89
|
+
test_files:
|
90
|
+
- test/dummy/app/controllers/application_controller.rb
|
91
|
+
- test/dummy/app/controllers/users_controller.rb
|
92
|
+
- test/dummy/app/helpers/application_helper.rb
|
93
|
+
- test/dummy/app/models/metric.rb
|
94
|
+
- test/dummy/app/models/notification.rb
|
95
|
+
- test/dummy/app/models/user.rb
|
96
|
+
- test/dummy/config/application.rb
|
97
|
+
- test/dummy/config/boot.rb
|
98
|
+
- test/dummy/config/environment.rb
|
99
|
+
- test/dummy/config/environments/development.rb
|
100
|
+
- test/dummy/config/environments/production.rb
|
101
|
+
- test/dummy/config/environments/test.rb
|
102
|
+
- test/dummy/config/initializers/backtrace_silencers.rb
|
103
|
+
- test/dummy/config/initializers/cookie_verification_secret.rb
|
104
|
+
- test/dummy/config/initializers/session_store.rb
|
105
|
+
- test/dummy/config/routes.rb
|
106
|
+
- test/dummy/db/migrate/20100106152343_create_metrics.rb
|
107
|
+
- test/dummy/db/migrate/20100108120821_create_users.rb
|
108
|
+
- test/integration/instrumentation_test.rb
|
109
|
+
- test/integration/navigation_test.rb
|
110
|
+
- test/orm/active_record_test.rb
|
111
|
+
- test/payload_parser_test.rb
|
112
|
+
- test/rails_metrics_test.rb
|
113
|
+
- test/store_test.rb
|
114
|
+
- test/support/helpers.rb
|
115
|
+
- test/support/instrumentation.rb
|
116
|
+
- test/support/mock_store.rb
|
117
|
+
- test/support/webrat/integrations/rails.rb
|
118
|
+
- test/test_helper.rb
|