system-metrics 0.1.0 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +16 -1
- data/app/views/layouts/system_metrics/metrics.html.erb +4 -15
- data/app/views/system_metrics/metrics/_menu.html.erb +1 -1
- data/app/views/system_metrics/metrics/admin.html.erb +1 -1
- data/lib/system_metrics/engine.rb +3 -3
- data/lib/system_metrics/instrument/base.rb +1 -1
- data/lib/system_metrics/nested_event.rb +8 -1
- data/lib/system_metrics/store.rb +10 -15
- data/lib/system_metrics/version.rb +1 -1
- data/public/images/gradient.png +0 -0
- data/public/stylesheets/app.css +197 -3
- data/spec/spec_helper.rb +2 -0
- data/spec/support/db_setup.rb +3 -0
- data/spec/support/mock_app.rb +1 -3
- data/spec/support/notifications_support.rb +10 -0
- data/spec/system_metrics/collector_spec.rb +1 -2
- data/spec/system_metrics/config_spec.rb +16 -8
- data/spec/system_metrics/engine_spec.rb +53 -28
- data/spec/system_metrics/instrument/action_controller_spec.rb +51 -0
- data/spec/system_metrics/instrument/action_mailer_spec.rb +40 -0
- data/spec/system_metrics/instrument/action_view_spec.rb +40 -0
- data/spec/system_metrics/instrument/active_record_spec.rb +50 -0
- data/spec/system_metrics/instrument/base_spec.rb +38 -0
- data/spec/system_metrics/instrument/rack_spec.rb +28 -0
- data/spec/system_metrics/middleware_spec.rb +1 -3
- data/spec/system_metrics/nested_event_spec.rb +87 -0
- data/spec/system_metrics/store_spec.rb +49 -0
- data/spec/system_metrics_spec.rb +0 -1
- data/system-metrics.gemspec +1 -0
- metadata +30 -11
- data/public/stylesheets/base.css +0 -46
- data/public/stylesheets/footer.css +0 -6
- data/public/stylesheets/graphs.css +0 -9
- data/public/stylesheets/header.css +0 -52
- data/public/stylesheets/menu_bar.css +0 -7
- data/public/stylesheets/metric.css +0 -19
- data/public/stylesheets/payload.css +0 -4
- data/public/stylesheets/portlet.css +0 -11
- data/public/stylesheets/title_bar.css +0 -29
@@ -0,0 +1,49 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/../spec_helper'
|
2
|
+
require 'system_metrics/metric'
|
3
|
+
|
4
|
+
describe SystemMetrics::Store do
|
5
|
+
include NotificationsSupport
|
6
|
+
|
7
|
+
describe '#save' do
|
8
|
+
it 'should save an array of events hierarchically' do
|
9
|
+
parent = event(:start => Time.now - 10.seconds, :end => Time.now)
|
10
|
+
child = event(:start => Time.now - 9.seconds, :end => Time.now - 1.seconds)
|
11
|
+
grandchild = event(:start => Time.now - 8.seconds, :end => Time.now - 2.seconds)
|
12
|
+
|
13
|
+
store = SystemMetrics::Store.new
|
14
|
+
|
15
|
+
lambda {
|
16
|
+
store.save([grandchild, child, parent])
|
17
|
+
}.should change(SystemMetrics::Metric, :count).by(3)
|
18
|
+
|
19
|
+
metrics = SystemMetrics::Metric.all
|
20
|
+
verify_equal(parent, metrics[0])
|
21
|
+
verify_equal(child, metrics[0].children[0])
|
22
|
+
verify_equal(grandchild, metrics[0].children[0].children[0])
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'should not attempt to save anything if passed an empty array of events' do
|
26
|
+
store = SystemMetrics::Store.new
|
27
|
+
lambda { store.save([]) }.should_not change(SystemMetrics::Metric, :count)
|
28
|
+
end
|
29
|
+
|
30
|
+
it 'should not attempt to save anything if passed a nil' do
|
31
|
+
store = SystemMetrics::Store.new
|
32
|
+
lambda { store.save(nil) }.should_not change(SystemMetrics::Metric, :count)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def verify_equal(event, metric)
|
39
|
+
event.name.should == metric.name
|
40
|
+
event.action.should == metric.action
|
41
|
+
event.category.should == metric.category
|
42
|
+
event.transaction_id.should == metric.transaction_id
|
43
|
+
event.payload.should == metric.payload
|
44
|
+
event.started_at.should be_within(1).of(metric.started_at)
|
45
|
+
event.duration.should be_within(1).of(metric.duration)
|
46
|
+
event.exclusive_duration.should be_within(1).of(metric.exclusive_duration)
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
data/spec/system_metrics_spec.rb
CHANGED
data/system-metrics.gemspec
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: system-metrics
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 0.
|
5
|
+
version: 0.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeff Kunkle
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2011-
|
13
|
+
date: 2011-08-11 00:00:00 -04:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -46,6 +46,17 @@ dependencies:
|
|
46
46
|
version: 1.3.3
|
47
47
|
type: :development
|
48
48
|
version_requirements: *id003
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
name: rdoc
|
51
|
+
prerelease: false
|
52
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
53
|
+
none: false
|
54
|
+
requirements:
|
55
|
+
- - "="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: "3.8"
|
58
|
+
type: :development
|
59
|
+
version_requirements: *id004
|
49
60
|
description: System Metrics is a Rails 3 Engine that provides a clean web interface to the performance metrics instrumented with ActiveSupport::Notifications
|
50
61
|
email:
|
51
62
|
executables: []
|
@@ -92,20 +103,12 @@ files:
|
|
92
103
|
- lib/system_metrics/nested_event.rb
|
93
104
|
- lib/system_metrics/store.rb
|
94
105
|
- lib/system_metrics/version.rb
|
106
|
+
- public/images/gradient.png
|
95
107
|
- public/images/rings_13.png
|
96
108
|
- public/stylesheets/app.css
|
97
|
-
- public/stylesheets/base.css
|
98
|
-
- public/stylesheets/footer.css
|
99
|
-
- public/stylesheets/graphs.css
|
100
|
-
- public/stylesheets/header.css
|
101
109
|
- public/stylesheets/ie.css
|
102
|
-
- public/stylesheets/menu_bar.css
|
103
|
-
- public/stylesheets/metric.css
|
104
|
-
- public/stylesheets/payload.css
|
105
|
-
- public/stylesheets/portlet.css
|
106
110
|
- public/stylesheets/print.css
|
107
111
|
- public/stylesheets/reset.css
|
108
|
-
- public/stylesheets/title_bar.css
|
109
112
|
- public/stylesheets/typography.css
|
110
113
|
- spec/spec_helper.rb
|
111
114
|
- spec/support/db_setup.rb
|
@@ -117,7 +120,15 @@ files:
|
|
117
120
|
- spec/system_metrics/collector_spec.rb
|
118
121
|
- spec/system_metrics/config_spec.rb
|
119
122
|
- spec/system_metrics/engine_spec.rb
|
123
|
+
- spec/system_metrics/instrument/action_controller_spec.rb
|
124
|
+
- spec/system_metrics/instrument/action_mailer_spec.rb
|
125
|
+
- spec/system_metrics/instrument/action_view_spec.rb
|
126
|
+
- spec/system_metrics/instrument/active_record_spec.rb
|
127
|
+
- spec/system_metrics/instrument/base_spec.rb
|
128
|
+
- spec/system_metrics/instrument/rack_spec.rb
|
120
129
|
- spec/system_metrics/middleware_spec.rb
|
130
|
+
- spec/system_metrics/nested_event_spec.rb
|
131
|
+
- spec/system_metrics/store_spec.rb
|
121
132
|
- spec/system_metrics_spec.rb
|
122
133
|
- system-metrics.gemspec
|
123
134
|
has_rdoc: true
|
@@ -159,5 +170,13 @@ test_files:
|
|
159
170
|
- spec/system_metrics/collector_spec.rb
|
160
171
|
- spec/system_metrics/config_spec.rb
|
161
172
|
- spec/system_metrics/engine_spec.rb
|
173
|
+
- spec/system_metrics/instrument/action_controller_spec.rb
|
174
|
+
- spec/system_metrics/instrument/action_mailer_spec.rb
|
175
|
+
- spec/system_metrics/instrument/action_view_spec.rb
|
176
|
+
- spec/system_metrics/instrument/active_record_spec.rb
|
177
|
+
- spec/system_metrics/instrument/base_spec.rb
|
178
|
+
- spec/system_metrics/instrument/rack_spec.rb
|
162
179
|
- spec/system_metrics/middleware_spec.rb
|
180
|
+
- spec/system_metrics/nested_event_spec.rb
|
181
|
+
- spec/system_metrics/store_spec.rb
|
163
182
|
- spec/system_metrics_spec.rb
|
data/public/stylesheets/base.css
DELETED
@@ -1,46 +0,0 @@
|
|
1
|
-
body {
|
2
|
-
font-size: 72%;
|
3
|
-
line-height: 150%;
|
4
|
-
color: #323537;
|
5
|
-
background: #EFEFEF;
|
6
|
-
}
|
7
|
-
|
8
|
-
h1, h2, h3, h4, h5, h6 {
|
9
|
-
color: #F47721;
|
10
|
-
font-weight: normal;
|
11
|
-
}
|
12
|
-
|
13
|
-
tbody tr:nth-child(2n) td, tbody tr.even td {
|
14
|
-
background-color: #EFEFEF;
|
15
|
-
}
|
16
|
-
|
17
|
-
thead th {
|
18
|
-
background-color: #6A7176;
|
19
|
-
color: #CDCDCD;
|
20
|
-
}
|
21
|
-
|
22
|
-
a {
|
23
|
-
color: #323537;
|
24
|
-
text-decoration: none;
|
25
|
-
}
|
26
|
-
|
27
|
-
a:hover {
|
28
|
-
color: #F47721;
|
29
|
-
text-decoration: underline;
|
30
|
-
}
|
31
|
-
|
32
|
-
input[type=submit] {
|
33
|
-
background: #EFEFEF;
|
34
|
-
padding: 6px 10px 4px;
|
35
|
-
border: none;
|
36
|
-
-moz-border-radius: 10px;
|
37
|
-
-webkit-border-radius: 10px;
|
38
|
-
border-radius: 10px;
|
39
|
-
}
|
40
|
-
|
41
|
-
input[type=submit]:hover {
|
42
|
-
background: #7B8389;
|
43
|
-
color: #FFF;
|
44
|
-
cursor: pointer;
|
45
|
-
}
|
46
|
-
|
@@ -1,52 +0,0 @@
|
|
1
|
-
#header {
|
2
|
-
color: white;
|
3
|
-
background-color: #6A7176;
|
4
|
-
border-bottom: 1px solid #44484B;
|
5
|
-
padding: 9px 30px;
|
6
|
-
position: relative;
|
7
|
-
text-shadow: 0 1px 0 black;
|
8
|
-
z-index: 900;
|
9
|
-
}
|
10
|
-
|
11
|
-
#header h1 {
|
12
|
-
color: #CDCDCD;
|
13
|
-
display: inline;
|
14
|
-
font-size: 1.3em;
|
15
|
-
margin-right: 20px;
|
16
|
-
}
|
17
|
-
|
18
|
-
#header a, #header a:link {
|
19
|
-
color: #CDCDCD;
|
20
|
-
}
|
21
|
-
|
22
|
-
#header ul#tabs {
|
23
|
-
display: inline;
|
24
|
-
height: 100%;
|
25
|
-
}
|
26
|
-
|
27
|
-
#header ul#tabs li {
|
28
|
-
display: inline;
|
29
|
-
font-size: 1em;
|
30
|
-
margin-right: 4px;
|
31
|
-
padding: 9px 0;
|
32
|
-
position: relative;
|
33
|
-
}
|
34
|
-
|
35
|
-
#header ul#tabs li a {
|
36
|
-
padding: 6px 10px 4px;
|
37
|
-
position: relative;
|
38
|
-
text-decoration: none;
|
39
|
-
-moz-border-radius: 10px;
|
40
|
-
-webkit-border-radius: 10px;
|
41
|
-
border-radius: 10px;
|
42
|
-
}
|
43
|
-
|
44
|
-
#header ul#tabs li:hover > a {
|
45
|
-
background: #7B8389;
|
46
|
-
color: #FFF;
|
47
|
-
}
|
48
|
-
|
49
|
-
#header img {
|
50
|
-
position: relative;
|
51
|
-
top: 2px;
|
52
|
-
}
|
@@ -1,19 +0,0 @@
|
|
1
|
-
#metric-details {
|
2
|
-
border-right: 1px solid #EFEFEF;
|
3
|
-
float: left;
|
4
|
-
padding-right: 20px;
|
5
|
-
width: 37%;
|
6
|
-
}
|
7
|
-
|
8
|
-
#metric-details h2 {
|
9
|
-
font-size: 500%;
|
10
|
-
line-height: normal;
|
11
|
-
margin-bottom: 20px;
|
12
|
-
color: #323537;
|
13
|
-
text-align: center;
|
14
|
-
}
|
15
|
-
|
16
|
-
#metric-children {
|
17
|
-
float: right;
|
18
|
-
width: 60%;
|
19
|
-
}
|
@@ -1,29 +0,0 @@
|
|
1
|
-
#title-bar {
|
2
|
-
background: #EFEFEF;
|
3
|
-
border-bottom: 1px solid #EDEDED;
|
4
|
-
color: #5E6469;
|
5
|
-
font-size: 1em;
|
6
|
-
font-weight: bold;
|
7
|
-
line-height: 140%;
|
8
|
-
padding: 10px 30px;
|
9
|
-
position: relative;
|
10
|
-
text-shadow: 0 1px 0 white;
|
11
|
-
-moz-box-shadow: 0 1px 2px #AAAAAA;
|
12
|
-
-webkit-box-shadow: 0 1px 2px #AAAAAA;
|
13
|
-
box-shadow: 0 1px 2px #AAAAAA;
|
14
|
-
}
|
15
|
-
|
16
|
-
#title-bar h2 {
|
17
|
-
font-size: 2.6em;
|
18
|
-
font-weight: bold;
|
19
|
-
margin: 12px 0 10px;
|
20
|
-
}
|
21
|
-
|
22
|
-
#title-bar h4 {
|
23
|
-
margin-bottom: 0.25em;
|
24
|
-
color: #5E6469;
|
25
|
-
}
|
26
|
-
|
27
|
-
#title-bar h4 a {
|
28
|
-
color: #5E6469;
|
29
|
-
}
|