nbogie-production_log_analyzer 1.5.1.2 → 1.5.1.3

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.
@@ -0,0 +1,14 @@
1
+ #http://ph7spot.com/musings/getting-started-with-autotest#running_whole_test_suite
2
+ # Override autotest default magic to rerun all tests every time a
3
+ # change is detected on the file system.
4
+ class Autotest
5
+
6
+ def get_to_green
7
+ begin
8
+ rerun_all_tests
9
+ wait_for_changes unless all_good
10
+ end until all_good
11
+ end
12
+
13
+ end
14
+
@@ -1,3 +1,7 @@
1
+ === 1.5.1.3
2
+
3
+ * Add bin for pl_analyze_diff
4
+
1
5
  === 1.5.1.2
2
6
 
3
7
  * Add tool to diff reports, to see what actions got faster or slower, etc.
@@ -1,18 +1,29 @@
1
- History.txt
2
- LICENSE.txt
3
- Manifest.txt
4
- README.txt
5
- Rakefile
1
+ .autotest
6
2
  bin/action_errors
7
3
  bin/action_grep
8
4
  bin/pl_analyze
5
+ bin/pl_analyze_diff
6
+ History.txt
9
7
  lib/production_log/action_grep.rb
10
8
  lib/production_log/analyzer.rb
11
9
  lib/production_log/parser.rb
10
+ lib/report/report_differ.rb
11
+ lib/report/report_parser.rb
12
+ LICENSE.txt
13
+ Manifest.txt
14
+ Rakefile
15
+ README.txt
16
+ test/example_data/actual_diff.txt
17
+ test/example_data/example.txt
18
+ test/example_data/expected_diff.txt
19
+ test/example_data/report_a.txt
20
+ test/example_data/report_b.txt
21
+ test/test_action_grep.rb
22
+ test/test_analyzer.rb
23
+ test/test_parser.rb
24
+ test/test_report_differ.rb
25
+ test/test_report_parser.rb
12
26
  test/test.syslog.0.14.x.log
13
27
  test/test.syslog.1.2.shortname.log
14
28
  test/test.syslog.empty.log
15
29
  test/test.syslog.log
16
- test/test_action_grep.rb
17
- test/test_analyzer.rb
18
- test/test_parser.rb
data/Rakefile CHANGED
@@ -8,7 +8,7 @@ Hoe.plugin :email, :perforce # not on minitest yet
8
8
  Hoe.spec 'nbogie-production_log_analyzer' do
9
9
  developer 'Eric Hodel', 'drbrain@segment7.net'
10
10
  self.name = 'nbogie-production_log_analyzer'
11
- self.version = '1.5.1.2'
11
+ self.version = '1.5.1.3'
12
12
 
13
13
  extra_deps << ['rails_analyzer_tools', '>= 1.4.0']
14
14
  end
@@ -1,4 +1,4 @@
1
- #!/usr/local/bin/ruby -w
1
+ #!/usr/bin/env ruby
2
2
 
3
3
  require 'production_log/analyzer'
4
4
 
@@ -0,0 +1,10 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'report/report_differ'
4
+
5
+ if ARGV.size != 2 then
6
+ puts "Usage: #{$0} report_a report_b"
7
+ exit 1
8
+ end
9
+
10
+ ReportDiffer.compare_files(ARGV[0], ARGV[1])
@@ -0,0 +1,216 @@
1
+ require 'report/report_parser.rb'
2
+
3
+ module AnsiHelp
4
+ def ansi(code, text)
5
+ "\033[#{code}m#{text}\033[0m"
6
+ end
7
+ def noattrs(text); ansi(0,text); end
8
+ def bold(text); ansi(1,text); end
9
+ def red(text); ansi(31,text); end
10
+ def green(text); ansi(32,text); end
11
+ def yellow(text); ansi(33,text); end
12
+ def white(text); ansi(37,text); end
13
+ def redbg(text); ansi(41,text); end
14
+ def greenbg(text); ansi(42,text); end
15
+ end
16
+
17
+ class MatchedRequests
18
+ attr_accessor :request1, :request2
19
+ def initialize(request1, request2)
20
+ @request1 = request1
21
+ @request2 = request2
22
+ end
23
+
24
+ def key
25
+ r = @request1
26
+ [["%s#%s" % [r.controller, r.action]], r.verb, r.format].compact.join(".")
27
+ end
28
+
29
+ def values_ab(method_name)
30
+ [ @request1, @request2 ].map {|req| req.send(method_name) }
31
+ end
32
+
33
+ def to_s
34
+ "%s matches %s" %[@request1, @request2]
35
+ end
36
+ end
37
+ class UnmatchedRequest
38
+ attr_accessor :report, :request
39
+ def initialize(report, request)
40
+ @report = report
41
+ @request = request
42
+ end
43
+ def to_s
44
+ "%s only in report %s" %[@request, @report.name]
45
+ end
46
+ end
47
+
48
+ class ReportDiffer
49
+ include AnsiHelp
50
+
51
+ def banner(title)
52
+ ("="*30) + title + ("=" * 30) + "\n"
53
+ end
54
+
55
+ def compute_difference_in_values(va, vb)
56
+ return 1 if va==vb
57
+ sign= (vb > va) ? 1 : -1
58
+ return sign * 999999 if (va==0 || vb==0)
59
+ min=[va,vb].min
60
+ max=[va,vb].max
61
+ abs=max/min.to_f
62
+ abs=("%.2f"%abs).to_f
63
+ return sign * abs
64
+ end
65
+
66
+ def compute_difference(a, b, method_name)
67
+ va= a.send(method_name)
68
+ vb= b.send(method_name)
69
+ return compute_difference_in_values(va,vb)
70
+ end
71
+
72
+ def find_matched_actions(ra, rb)
73
+ matched=[]
74
+ ra.requests.each do |req_a|
75
+ req_b = rb.get_request_like(req_a)
76
+ unless req_b.nil?
77
+ matched << MatchedRequests.new(req_a, req_b)
78
+ end
79
+ end
80
+ matched
81
+ end
82
+
83
+ def find_unmatched_actions(ra, rb)
84
+ unmatched=[]
85
+ [[ra, rb], [rb, ra]].each do|a,b|
86
+ a.requests.each do |req_a|
87
+ req_b = b.get_request_like(req_a)
88
+ if req_b.nil?
89
+ (unmatched << UnmatchedRequest.new(a, req_a))
90
+ end
91
+ end
92
+ end
93
+ unmatched
94
+ end
95
+
96
+ def compare_attribs(holder_a, holder_b, attribs_for_comparison)
97
+ results = {}
98
+ attribs_for_comparison.each do |method_name|
99
+ change = compute_difference(holder_a, holder_b, method_name)
100
+ diff_hash = {}
101
+ diff_hash[:change] = change
102
+ diff_hash[:from] = holder_a.send(method_name)
103
+ diff_hash[:to] = holder_b.send(method_name)
104
+ results["diff_#{method_name}".to_sym] = diff_hash
105
+ end
106
+ return results
107
+ end
108
+
109
+ def compare_matched_action(matched_action, threshold)
110
+ attribs=[:count, :avg_time, :std_dev, :max_time, :min_time]
111
+ return compare_attribs(matched_action.request1, matched_action.request2, attribs)
112
+ end
113
+
114
+ def compare_summaries(report_a, report_b, threshold=1.3)
115
+ attribs=[:count, :avg_time, :std_dev, :max_time, :min_time]
116
+ return compare_attribs(report_a.summary, report_b.summary, attribs)
117
+ end
118
+
119
+ def compare_requests(report_a, report_b, threshold)
120
+ diffs = {}
121
+ matched_actions = find_matched_actions(report_a, report_b)
122
+ matched_actions.each do |matched_action|
123
+ diffs[matched_action.key] = compare_matched_action(matched_action, threshold)
124
+ end
125
+ diffs
126
+ end
127
+
128
+ def compare(report_a, report_b, threshold=1)
129
+ summary_diff=compare_summaries(report_a, report_b, threshold)
130
+ req_diffs=compare_requests(report_a, report_b, threshold)
131
+ {:threshold => threshold, :summary_diff => summary_diff, :request_diffs => req_diffs, :unmatched_actions => find_unmatched_actions(report_a, report_b)}
132
+ end
133
+
134
+ def should_use_ansi()
135
+ false
136
+ end
137
+
138
+ def prepare_report_line_for_request(title, diff_hash, threshold)
139
+ text=""
140
+ text << "%-50s" % title
141
+ rd = diff_hash
142
+ w = 20
143
+ cell_texts = []
144
+ %w(count avg_time std_dev min_time max_time).each do |metric|
145
+ metric_key = ("diff_"+metric).to_sym
146
+ diff = rd[metric_key]
147
+ change = diff[:change]
148
+ from = diff[:from]
149
+ to = diff[:to]
150
+ sign = (change == 1 ? " " : (change > 0 ? "+":""))
151
+ change_text="%s%.1f" % [ sign, change ]
152
+ if should_use_ansi()
153
+ change_text = bold(change_text)
154
+ change_text = change > 0 ? redbg(change_text) : ( change.abs > 2 ? greenbg(change_text) : green(change_text) )
155
+ end
156
+ cell_text = ( "%s(%s->%s)" % [ change_text, from, to])
157
+ if change.abs < threshold
158
+ marker = should_use_ansi() ? noattrs(white("~")) : "~" #when using ansi pad the marker with the same number of ansi control chars as the other columns get
159
+ cell_text = "%-#{w}s" % marker
160
+ end
161
+ cell_texts << cell_text
162
+ end
163
+ #max_width = cell_texts.map{|ct| ct.length}.max
164
+ ## w=max_width+3
165
+ text << (" %-#{w}s %-#{w}s %-#{w}s %-#{w}s %-#{w}s\n" % cell_texts)
166
+ end
167
+
168
+ def prepare_report_line_for_unmatched_action(ac)
169
+ "%-60s only in %s\n" % [ ac.request, ac.report ]
170
+ end
171
+
172
+ def prepare_report(diff_data)
173
+ dd=diff_data
174
+ threshold = dd[:threshold]
175
+ text =""
176
+ text << "#Threshold=#{threshold}\n"
177
+ w=20
178
+
179
+ #Headers
180
+ text << "%-50s %-#{w}s %-#{w}s %-#{w}s %-#{w}s %-#{w}s\n" % ["Request_Times_Summary:", "Count", "Avg", "Std_Dev", "Min", "Max"]
181
+
182
+ #Summary - all requests - line
183
+ text << prepare_report_line_for_request("ALL_REQUESTS", dd[:summary_diff], threshold)
184
+ text << "\n"
185
+ #Go through all the request diffs and print them, in order of frequency
186
+ req_diffs = dd[:request_diffs]
187
+ req_diffs.sort_by{|k,v| v[:diff_count][:from]}.reverse.each do |req_key, req_diff|
188
+ text << prepare_report_line_for_request(req_key, req_diff, threshold)
189
+ end
190
+
191
+ text << "\nUnmatched_Actions: \n\n"
192
+ dd[:unmatched_actions].each do |unmatched_action|
193
+ text << prepare_report_line_for_unmatched_action(unmatched_action)
194
+ end
195
+ text
196
+ end
197
+
198
+ def self.compare_files(report_file_a, report_file_b)
199
+ differ = ReportDiffer.new
200
+ parser = ReportParser.new
201
+ reports = [report_file_a, report_file_b].map do |filename|
202
+ text=File.read(filename)
203
+ report = parser.parse(File.basename(filename), text)
204
+ report
205
+ end
206
+ diff_data = differ.compare(reports[0], reports[1])
207
+ puts differ.prepare_report(diff_data)
208
+ end
209
+
210
+ end
211
+
212
+ if __FILE__ == $0
213
+ abort("usage #{File.dirname(__FILE__)} report_a report_b") if ARGV.size!=2
214
+ ReportDiffer.compare_files(ARGV[0], ARGV[1])
215
+ end
216
+
@@ -0,0 +1,109 @@
1
+ class Report
2
+ attr_accessor :name
3
+ attr_accessor :requests
4
+ attr_accessor :started_at
5
+ attr_accessor :summary
6
+
7
+ def initialize
8
+ @summary = Request.new #blagging it. doesn't have controller/action.
9
+ @requests=[]
10
+ end
11
+
12
+ def get_request_like(other)
13
+ @requests.select { |r| r.controller == other.controller && r.action == other.action && r.verb==other.verb && r.format==other.format}.first
14
+ end
15
+ def to_s
16
+ @name
17
+ end
18
+ end
19
+
20
+ class Request
21
+ attr_accessor :controller
22
+ attr_accessor :action
23
+ attr_accessor :verb
24
+ attr_accessor :format
25
+ attr_accessor :count, :avg_time, :std_dev, :min_time, :max_time
26
+ def initialize
27
+ end
28
+
29
+ def self.create(controller, action, count, avg_time, std_dev, min_time, max_time, options={})
30
+ r = Request.new
31
+ r.verb = options[:verb]
32
+ r.format = options[:format]
33
+ r.controller=controller
34
+ r.action=action
35
+ r.count=count
36
+ r.avg_time=avg_time
37
+ r.std_dev=std_dev
38
+ r.min_time=min_time
39
+ r.max_time=max_time
40
+ return r
41
+ end
42
+
43
+ def fixup_controller_name!
44
+ if @controller =~ /^Api([^:].*)Controller/
45
+ @controller = "Api::V1::#{$1}Controller"
46
+ end
47
+ end
48
+
49
+ def to_s
50
+ "%s#%s.%s.%s" % [ controller, action, verb, format ]
51
+ end
52
+
53
+ end
54
+
55
+ class ReportParser
56
+ def parse(report_name, content)
57
+ report = Report.new
58
+ report.name=report_name
59
+ #TODO: parse report name as a time
60
+ report.started_at=report_name#Time.parse(report_name)
61
+ #ALL REQUESTS: 11830 0.085 0.052 0.001 1.053
62
+ content =~ /ALL REQUESTS:\s*([0-9]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9\.]+)/
63
+ report.summary.count=Integer($1)
64
+ report.summary.avg_time=Float($2)
65
+ report.summary.std_dev=Float($3)
66
+ report.summary.min_time=Float($4)
67
+ report.summary.max_time=Float($5)
68
+
69
+ content =~ /\nALL REQUESTS:.*?\n\n(.*)\n\nSlowest Request Times/m
70
+
71
+ request_lines_block = $1
72
+ throw "No requests found" if request_lines_block.nil?
73
+ request_lines_block.split(/\n/).each_with_index do |line, i|
74
+ request = parse_request(line)
75
+ request.fixup_controller_name!
76
+ if request.nil? || request.controller.nil?
77
+ puts "WARN: unparseable request line: #{line}, index #{i}"
78
+ next
79
+ end
80
+ report.requests << request
81
+ end
82
+ return report
83
+ end
84
+
85
+ def parse_request(request_line)
86
+ r = Request.new
87
+ #Examples:
88
+ #FooController#update.PUT.xml: 3557 0.144 0.037 0.059 0.712
89
+ #FooController#show.GET: 11707 0.107 0.063 0.015 1.075
90
+ request_line =~ /([a-zA-Z0-9:]+)#([^\.: ]+)\.?([a-zA-Z]+)?\.?([a-zA-Z]+)?:\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)/
91
+ r.controller = $1
92
+ r.action = $2
93
+ r.verb = $3.upcase unless $3.nil?
94
+ r.format = $4.downcase unless $4.nil?
95
+ r.count = $5.to_i
96
+ r.avg_time = $6.to_f
97
+ r.std_dev = $7.to_f
98
+ r.min_time = $8.to_f
99
+ r.max_time = $9.to_f
100
+ r
101
+ end
102
+
103
+ def looks_ok_on_quick_peek?(content)
104
+ return false if content.nil? || content.empty?
105
+ return false if (content =~ /No requests to analyze/)
106
+ return true
107
+ end
108
+
109
+ end
@@ -0,0 +1,44 @@
1
+ #Threshold=1
2
+ Request_Times_Summary: Count Avg Std_Dev Min Max
3
+ ALL_REQUESTS +1.4(16515->22909) -2.2(0.405->0.18) -2.8(2.023->0.725) 1.0(0.001->0.001) -1.6(59.678->37.721)
4
+
5
+ Api::V1::SleepwalkersController#update.PUT.xml +1.4(6249->8793) -1.1(0.079->0.07) -2.5(0.176->0.071) +1.4(0.028->0.04) -2.7(8.328->3.103)
6
+ Api::V1::SleepwalkersController#update.PUT.csv +1.4(6245->8807) -1.0(0.099->0.097) -1.2(0.085->0.071) -1.0(0.028->0.027) +1.2(2.536->3.02)
7
+ HealthController#pulse.GET -1.1(791->742) +1.5(0.002->0.003) +2.0(0.005->0.01) 1.0(0.001->0.001) +1.1(0.129->0.142)
8
+ Api::V1::SleepwalkersController#show.GET +1.4(509->710) -1.2(0.072->0.061) -2.1(0.17->0.08) -1.1(0.014->0.013) -2.3(3.505->1.504)
9
+ Api::V1::SleepwalkersController#show.GET.json +1.4(496->702) -1.2(0.076->0.064) -3.6(0.224->0.062) +1.0(0.026->0.027) -7.3(4.874->0.663)
10
+ Api::V1::SleepwalkersController#show.GET.xml +1.4(491->706) -1.2(0.065->0.054) -1.4(0.065->0.047) -1.1(0.023->0.022) -1.7(0.624->0.359)
11
+ Api::V1::SleepwalkersController#show.GET.csv +1.5(474->703) 1.0(0.029->0.029) -1.0(0.029->0.028) 1.0(0.011->0.011) -1.3(0.239->0.185)
12
+ AccomplicesController#history.GET.csv +1.4(470->680) -3.3(5.35->1.618) -2.5(3.748->1.522) 1.0(0.003->0.003) -1.5(20.681->13.692)
13
+ WindsController#feeds.GET +1.4(237->320) -1.1(0.201->0.183) +1.3(0.153->0.195) -1.2(0.096->0.083) +1.5(1.304->1.989)
14
+ ScamsController#show.GET +1.3(236->317) -3.0(11.793->3.869) -2.3(8.46->3.697) -1.1(0.038->0.034) -1.6(59.678->37.721)
15
+ ScamsController#index.GET +1.3(147->194) -1.2(0.6->0.492) -2.2(0.395->0.182) -1.1(0.076->0.072) -1.5(3.638->2.427)
16
+ ScamsController#outputs.GET +1.4(114->160) -2.1(0.037->0.018) -3.3(0.063->0.019) 1.0(0.011->0.011) -2.8(0.404->0.144)
17
+ Api::V1::SleepwalkersController#update.PUT -1.1(9->8) -1.1(0.051->0.047) -1.3(0.017->0.013) -1.0(0.035->0.034) -1.2(0.09->0.076)
18
+ ScamsController#index.GET.rss 1.0(9->9) +1.0(0.132->0.135) +1.2(0.054->0.064) +1.0(0.095->0.098) +1.1(0.242->0.276)
19
+ ScamsController#index.GET.atom 1.0(9->9) -1.2(0.193->0.16) -1.4(0.065->0.046) +1.0(0.134->0.135) -1.0(0.292->0.283)
20
+ Api::V1::SleepwalkersController#create.POST 1.0(3->3) -1.7(0.369->0.215) -1.6(0.342->0.22) -1.5(0.076->0.052) -1.6(0.849->0.526)
21
+ Api::V1::SleepwalkersController#destroy.DELETE 1.0(3->3) 1.0(0.046->0.046) -1.1(0.009->0.008) +1.0(0.037->0.038) -1.0(0.059->0.057)
22
+ Api::V1::SleepwalkersController#index.GET 1.0(2->2) -1.1(2.887->2.744) -1.5(0.327->0.22) -1.0(2.56->2.525) -1.1(3.214->2.964)
23
+ ScamsController#tag.GET.atom 1.0(2->2) -1.3(0.462->0.345) -3.6(0.185->0.052) +1.1(0.277->0.293) -1.6(0.647->0.397)
24
+ Api::V1::MisinterpretationsController#show.GET 1.0(2->2) +1.1(0.021->0.022) +1.2(0.005->0.006) 1.0(0.016->0.016) +1.1(0.026->0.028)
25
+ Api::V1::AccomplicesController#show.GET.xml 1.0(2->2) -1.0(0.102->0.1) -1.0(0.081->0.079) 1.0(0.021->0.021) -1.0(0.184->0.179)
26
+ ScamsController#map.GET +6.0(2->12) -3.5(1.075->0.305) -1.7(0.933->0.55) -1.8(0.141->0.08) +1.1(2.008->2.112)
27
+ Api::V1::MisinterpretationsController#update.PUT 1.0(1->1) 1.0(0.016->0.016) 1.0(0.0->0.0) 1.0(0.016->0.016) 1.0(0.016->0.016)
28
+ Api::V1::AccomplicesController#create.POST.xml 1.0(1->1) -1.2(0.089->0.075) 1.0(0.0->0.0) -1.2(0.089->0.075) -1.2(0.089->0.075)
29
+ Api::V1::AccomplicesController#update.PUT.xml 1.0(1->1) 1.0(0.03->0.03) 1.0(0.0->0.0) 1.0(0.03->0.03) 1.0(0.03->0.03)
30
+ Api::V1::SleepwalkersController#index.GET.xml 1.0(1->1) -1.1(0.385->0.353) 1.0(0.0->0.0) -1.1(0.385->0.353) -1.1(0.385->0.353)
31
+ WindsController#show.GET 1.0(1->1) +1.0(1.988->2.006) 1.0(0.0->0.0) +1.0(1.988->2.006) +1.0(1.988->2.006)
32
+ WindsController#feeds.GET.rss 1.0(1->1) -1.1(0.037->0.034) 1.0(0.0->0.0) -1.1(0.037->0.034) -1.1(0.037->0.034)
33
+ Api::V1::MisinterpretationsController#create.POST 1.0(1->1) -1.1(0.075->0.067) 1.0(0.0->0.0) -1.1(0.075->0.067) -1.1(0.075->0.067)
34
+ Api::V1::SleepwalkersController#index.GET.json 1.0(1->1) -1.8(0.34->0.19) 1.0(0.0->0.0) -1.8(0.34->0.19) -1.8(0.34->0.19)
35
+ Api::V1::AccomplicesController#destroy.DELETE.xml 1.0(1->1) -1.0(0.027->0.026) 1.0(0.0->0.0) -1.0(0.027->0.026) -1.0(0.027->0.026)
36
+ WindsController#favourites.GET.json 1.0(1->1) -1.2(0.019->0.016) 1.0(0.0->0.0) -1.2(0.019->0.016) -1.2(0.019->0.016)
37
+ WindsController#feeds.GET.json 1.0(1->1) +11.2(0.013->0.145) 1.0(0.0->0.0) +11.2(0.013->0.145) +11.2(0.013->0.145)
38
+ WindsController#feeds.GET.atom 1.0(1->1) -1.1(0.061->0.058) 1.0(0.0->0.0) -1.1(0.061->0.058) -1.1(0.061->0.058)
39
+ ScamsController#tag.GET.rss 1.0(1->1) -1.0(0.134->0.129) 1.0(0.0->0.0) -1.0(0.134->0.129) -1.0(0.134->0.129)
40
+
41
+ Unmatched_Actions:
42
+
43
+ ScamsController#index.GET.json only in report_a.txt
44
+ Api::V1::MisinterpretationsController#destroy.DELETE. only in report_a.txt
@@ -0,0 +1,54 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: 11830 0.185 0.212 0.001 3.553
3
+
4
+ FooController#update.PUT.xml: 3557 0.144 0.137 0.059 3.212
5
+ FooController#update.PUT.csv: 3542 0.392 0.232 0.069 3.553
6
+ FooController#show.GET.json: 851 0.069 0.087 0.030 1.257
7
+ FooController#show.GET: 844 0.068 0.085 0.016 1.077
8
+ BarController#history.GET.csv: 780 0.029 0.046 0.003 0.849
9
+ HealthController#pulse.GET: 374 0.006 0.010 0.001 0.134
10
+ QuxController#index.GET: 64 0.434 0.174 0.041 0.922
11
+ UsersController#feeds.GET: 58 0.147 0.092 0.071 0.603
12
+
13
+ Slowest Request Times:
14
+ FooController#update.PUT.csv took 3.553s
15
+ FooController#update.PUT.csv took 3.251s
16
+ FooController#update.PUT.xml took 3.212s
17
+
18
+ ------------------------------------------------------------------------
19
+
20
+ DB Times Summary: Count Avg Std Dev Min Max
21
+ ALL REQUESTS: 11830 0.014 0.090 0.000 2.871
22
+
23
+ FooController#update.PUT.xml: 3557 0.015 0.090 0.003 2.832
24
+ FooController#update.PUT.csv: 3542 0.022 0.135 0.005 2.871
25
+ FooController#show.GET.json: 851 0.008 0.023 0.004 0.585
26
+ FooController#show.GET: 844 0.008 0.015 0.002 0.320
27
+ BarController#history.GET.csv: 780 0.003 0.005 0.000 0.092
28
+ HealthController#pulse.GET: 374 0.000 0.000 0.000 0.000
29
+ QuxController#index.GET: 64 0.043 0.024 0.000 0.147
30
+ UsersController#feeds.GET: 58 0.034 0.054 0.005 0.323
31
+
32
+ Slowest Total DB Times:
33
+ FooController#update.PUT.csv took 2.871s
34
+ FooController#update.PUT.xml took 2.832s
35
+ FooController#update.PUT.csv took 2.772s
36
+
37
+ ------------------------------------------------------------------------
38
+
39
+ Render Times Summary: Count Avg Std Dev Min Max
40
+ ALL REQUESTS: 11830 0.006 0.034 0.000 0.704
41
+
42
+ FooController#update.PUT.xml: 3557 0.001 0.007 0.000 0.152
43
+ FooController#update.PUT.csv: 3542 0.000 0.006 0.000 0.146
44
+ FooController#show.GET.json: 851 0.027 0.037 0.013 0.328
45
+ FooController#show.GET: 844 0.001 0.006 0.000 0.133
46
+ BarController#history.GET.csv: 780 0.000 0.001 0.000 0.016
47
+ HealthController#pulse.GET: 374 0.000 0.007 0.000 0.132
48
+ QuxController#index.GET: 64 0.326 0.135 0.022 0.509
49
+ UsersController#feeds.GET: 58 0.090 0.057 0.031 0.262
50
+
51
+ Slowest Total Render Times:
52
+ QuxController#show.GET took 0.704s
53
+ QuxController#show.GET took 0.541s
54
+ QuxController#index.GET took 0.509s
@@ -0,0 +1,162 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: -1.39(22909>16515) +2.25(0.180>0.405) +2.79(0.725>2.023) =(0.001>0.001) +1.58(37.721>59.678)
3
+
4
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.097 0.071 0.027 3.020
5
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.070 0.071 0.040 3.103
6
+ HealthController#pulse.GET: 742 0.003 0.010 0.001 0.142
7
+ Api::V1::SleepwalkersController#show.GET: 710 0.061 0.080 0.013 1.504
8
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.054 0.047 0.022 0.359
9
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.029 0.028 0.011 0.185
10
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.064 0.062 0.027 0.663
11
+ AccomplicesController#history.GET.csv: 680 1.618 1.522 0.003 13.692
12
+ WindsController#feeds.GET: 320 0.183 0.195 0.083 1.989
13
+ ScamsController#show.GET: 317 3.869 3.697 0.034 37.721
14
+ ScamsController#index.GET: 194 0.492 0.182 0.072 2.427
15
+ ScamsController#outputs.GET: 160 0.018 0.019 0.011 0.144
16
+ ScamsController#map.GET: 12 0.305 0.550 0.080 2.112
17
+ ScamsController#index.GET.atom: 9 0.160 0.046 0.135 0.283
18
+ ScamsController#index.GET.json: 9 0.832 0.222 0.599 1.131
19
+ ScamsController#index.GET.rss: 9 0.135 0.064 0.098 0.276
20
+ Api::V1::SleepwalkersController#update.PUT: 8 0.047 0.013 0.034 0.076
21
+ Api::V1::SleepwalkersController#create.POST: 3 0.215 0.220 0.052 0.526
22
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.046 0.008 0.038 0.057
23
+ Api::V1::MisinterpretationsController#show.GET: 2 0.022 0.006 0.016 0.028
24
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.100 0.079 0.021 0.179
25
+ Api::V1::SleepwalkersController#index.GET: 2 2.744 0.220 2.525 2.964
26
+ ScamsController#tag.GET.atom: 2 0.345 0.052 0.293 0.397
27
+ Api::V1::MisinterpretationsController#create.POST: 1 0.067 0.000 0.067 0.067
28
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.016 0.000 0.016 0.016
29
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.016 0.000 0.016 0.016
30
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.075 0.000 0.075 0.075
31
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.026 0.000 0.026 0.026
32
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.030 0.000 0.030 0.030
33
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.190 0.000 0.190 0.190
34
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.353 0.000 0.353 0.353
35
+ ScamsController#tag.GET.rss: 1 0.129 0.000 0.129 0.129
36
+ WindsController#favourites.GET.json: 1 0.016 0.000 0.016 0.016
37
+ WindsController#feeds.GET.atom: 1 0.058 0.000 0.058 0.058
38
+ WindsController#feeds.GET.json: 1 0.145 0.000 0.145 0.145
39
+ WindsController#feeds.GET.rss: 1 0.034 0.000 0.034 0.034
40
+ WindsController#show.GET: 1 2.006 0.000 2.006 2.006
41
+
42
+ Slowest Request Times:
43
+ ScamsController#show.GET took 37.721s
44
+ ScamsController#show.GET took 20.416s
45
+ ScamsController#show.GET took 19.060s
46
+ ScamsController#show.GET took 14.868s
47
+ ScamsController#show.GET took 14.730s
48
+ ScamsController#show.GET took 13.968s
49
+ AccomplicesController#history.GET.csv took 13.692s
50
+ ScamsController#show.GET took 13.298s
51
+ ScamsController#show.GET took 12.704s
52
+ ScamsController#show.GET took 12.608s
53
+
54
+ ------------------------------------------------------------------------
55
+
56
+ DB Times Summary: Count Avg Std Dev Min Max
57
+ ALL REQUESTS: 22909 0.102 0.679 0.000 36.529
58
+
59
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.009 0.038 0.004 2.967
60
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.010 0.053 0.004 3.056
61
+ HealthController#pulse.GET: 742 0.000 0.000 0.000 0.002
62
+ Api::V1::SleepwalkersController#show.GET: 710 0.011 0.058 0.002 1.479
63
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.007 0.009 0.002 0.151
64
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.004 0.002 0.001 0.029
65
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.009 0.032 0.003 0.624
66
+ AccomplicesController#history.GET.csv: 680 1.589 1.521 0.000 13.672
67
+ WindsController#feeds.GET: 320 0.050 0.182 0.004 1.893
68
+ ScamsController#show.GET: 317 3.277 3.576 0.004 36.529
69
+ ScamsController#index.GET: 194 0.048 0.039 0.000 0.508
70
+ ScamsController#outputs.GET: 160 0.002 0.007 0.000 0.042
71
+ ScamsController#map.GET: 12 0.032 0.042 0.009 0.160
72
+ ScamsController#index.GET.atom: 9 0.009 0.016 0.003 0.053
73
+ ScamsController#index.GET.json: 9 0.019 0.009 0.011 0.032
74
+ ScamsController#index.GET.rss: 9 0.004 0.001 0.003 0.005
75
+ Api::V1::SleepwalkersController#update.PUT: 8 0.009 0.008 0.004 0.030
76
+ Api::V1::SleepwalkersController#create.POST: 3 0.096 0.116 0.007 0.259
77
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.006 0.001 0.005 0.007
78
+ Api::V1::MisinterpretationsController#show.GET: 2 0.003 0.001 0.002 0.004
79
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.004 0.002 0.002 0.006
80
+ Api::V1::SleepwalkersController#index.GET: 2 0.279 0.051 0.228 0.330
81
+ ScamsController#tag.GET.atom: 2 0.143 0.120 0.023 0.262
82
+ Api::V1::MisinterpretationsController#create.POST: 1 0.040 0.000 0.040 0.040
83
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.003 0.000 0.003 0.003
84
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.003 0.000 0.003 0.003
85
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.022 0.000 0.022 0.022
86
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.003 0.000 0.003 0.003
87
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.004 0.000 0.004 0.004
88
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.023 0.000 0.023 0.023
89
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.024 0.000 0.024 0.024
90
+ ScamsController#tag.GET.rss: 1 0.032 0.000 0.032 0.032
91
+ WindsController#favourites.GET.json: 1 0.006 0.000 0.006 0.006
92
+ WindsController#feeds.GET.atom: 1 0.019 0.000 0.019 0.019
93
+ WindsController#feeds.GET.json: 1 0.004 0.000 0.004 0.004
94
+ WindsController#feeds.GET.rss: 1 0.002 0.000 0.002 0.002
95
+ WindsController#show.GET: 1 0.001 0.000 0.001 0.001
96
+
97
+ Slowest Total DB Times:
98
+ ScamsController#show.GET took 36.529s
99
+ ScamsController#show.GET took 19.298s
100
+ ScamsController#show.GET took 17.895s
101
+ ScamsController#show.GET took 14.336s
102
+ AccomplicesController#history.GET.csv took 13.672s
103
+ ScamsController#show.GET took 13.601s
104
+ ScamsController#show.GET took 13.581s
105
+ ScamsController#show.GET took 12.750s
106
+ ScamsController#show.GET took 12.077s
107
+ ScamsController#show.GET took 12.057s
108
+
109
+ ------------------------------------------------------------------------
110
+
111
+ Render Times Summary: Count Avg Std Dev Min Max
112
+ ALL REQUESTS: 22909 0.015 0.094 0.000 2.714
113
+
114
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.001 0.007 0.000 0.160
115
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.001 0.007 0.000 0.149
116
+ HealthController#pulse.GET: 742 0.001 0.010 0.000 0.141
117
+ Api::V1::SleepwalkersController#show.GET: 710 0.001 0.007 0.000 0.156
118
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.001 0.000 0.000 0.002
119
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.001 0.010 0.000 0.151
120
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.038 0.048 0.014 0.351
121
+ AccomplicesController#history.GET.csv: 680 0.001 0.001 0.000 0.012
122
+ WindsController#feeds.GET: 320 0.119 0.061 0.072 0.609
123
+ ScamsController#show.GET: 317 0.575 0.389 0.019 2.714
124
+ ScamsController#index.GET: 194 0.392 0.167 0.063 2.295
125
+ ScamsController#outputs.GET: 160 0.010 0.010 0.008 0.133
126
+ ScamsController#map.GET: 12 0.262 0.555 0.063 2.094
127
+ ScamsController#index.GET.atom: 9 0.128 0.003 0.124 0.132
128
+ ScamsController#index.GET.json: 9 0.353 0.047 0.226 0.394
129
+ ScamsController#index.GET.rss: 9 0.123 0.064 0.085 0.265
130
+ Api::V1::SleepwalkersController#update.PUT: 8 0.000 0.000 0.000 0.001
131
+ Api::V1::SleepwalkersController#create.POST: 3 0.000 0.000 0.000 0.000
132
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.000 0.000 0.000 0.001
133
+ Api::V1::MisinterpretationsController#show.GET: 2 0.007 0.002 0.005 0.009
134
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.001 0.001 0.000 0.001
135
+ Api::V1::SleepwalkersController#index.GET: 2 0.001 0.001 0.000 0.001
136
+ ScamsController#tag.GET.atom: 2 0.194 0.068 0.126 0.261
137
+ Api::V1::MisinterpretationsController#create.POST: 1 0.000 0.000 0.000 0.000
138
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.000 0.000 0.000 0.000
139
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.000 0.000 0.000 0.000
140
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.000 0.000 0.000 0.000
141
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.000 0.000 0.000 0.000
142
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.000 0.000 0.000 0.000
143
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.018 0.000 0.018 0.018
144
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.001 0.000 0.001 0.001
145
+ ScamsController#tag.GET.rss: 1 0.088 0.000 0.088 0.088
146
+ WindsController#favourites.GET.json: 1 0.003 0.000 0.003 0.003
147
+ WindsController#feeds.GET.atom: 1 0.031 0.000 0.031 0.031
148
+ WindsController#feeds.GET.json: 1 0.135 0.000 0.135 0.135
149
+ WindsController#feeds.GET.rss: 1 0.026 0.000 0.026 0.026
150
+ WindsController#show.GET: 1 2.001 0.000 2.001 2.001
151
+
152
+ Slowest Total Render Times:
153
+ ScamsController#show.GET took 2.714s
154
+ ScamsController#index.GET took 2.295s
155
+ ScamsController#show.GET took 2.293s
156
+ ScamsController#show.GET took 2.293s
157
+ ScamsController#show.GET took 2.253s
158
+ ScamsController#map.GET took 2.094s
159
+ WindsController#show.GET took 2.001s
160
+ ScamsController#show.GET took 1.952s
161
+ ScamsController#show.GET took 1.866s
162
+ ScamsController#show.GET took 1.773s
@@ -0,0 +1,162 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: 22909 0.180 0.725 0.001 37.721
3
+
4
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.097 0.071 0.027 3.020
5
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.070 0.071 0.040 3.103
6
+ HealthController#pulse.GET: 742 0.003 0.010 0.001 0.142
7
+ Api::V1::SleepwalkersController#show.GET: 710 0.061 0.080 0.013 1.504
8
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.054 0.047 0.022 0.359
9
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.029 0.028 0.011 0.185
10
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.064 0.062 0.027 0.663
11
+ AccomplicesController#history.GET.csv: 680 1.618 1.522 0.003 13.692
12
+ WindsController#feeds.GET: 320 0.183 0.195 0.083 1.989
13
+ ScamsController#show.GET: 317 3.869 3.697 0.034 37.721
14
+ ScamsController#index.GET: 194 0.492 0.182 0.072 2.427
15
+ ScamsController#outputs.GET: 160 0.018 0.019 0.011 0.144
16
+ ScamsController#map.GET: 12 0.305 0.550 0.080 2.112
17
+ ScamsController#index.GET.atom: 9 0.160 0.046 0.135 0.283
18
+ ScamsController#index.GET.json: 9 0.832 0.222 0.599 1.131
19
+ ScamsController#index.GET.rss: 9 0.135 0.064 0.098 0.276
20
+ Api::V1::SleepwalkersController#update.PUT: 8 0.047 0.013 0.034 0.076
21
+ Api::V1::SleepwalkersController#create.POST: 3 0.215 0.220 0.052 0.526
22
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.046 0.008 0.038 0.057
23
+ Api::V1::MisinterpretationsController#show.GET: 2 0.022 0.006 0.016 0.028
24
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.100 0.079 0.021 0.179
25
+ Api::V1::SleepwalkersController#index.GET: 2 2.744 0.220 2.525 2.964
26
+ ScamsController#tag.GET.atom: 2 0.345 0.052 0.293 0.397
27
+ Api::V1::MisinterpretationsController#create.POST: 1 0.067 0.000 0.067 0.067
28
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.016 0.000 0.016 0.016
29
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.016 0.000 0.016 0.016
30
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.075 0.000 0.075 0.075
31
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.026 0.000 0.026 0.026
32
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.030 0.000 0.030 0.030
33
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.190 0.000 0.190 0.190
34
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.353 0.000 0.353 0.353
35
+ ScamsController#tag.GET.rss: 1 0.129 0.000 0.129 0.129
36
+ WindsController#favourites.GET.json: 1 0.016 0.000 0.016 0.016
37
+ WindsController#feeds.GET.atom: 1 0.058 0.000 0.058 0.058
38
+ WindsController#feeds.GET.json: 1 0.145 0.000 0.145 0.145
39
+ WindsController#feeds.GET.rss: 1 0.034 0.000 0.034 0.034
40
+ WindsController#show.GET: 1 2.006 0.000 2.006 2.006
41
+
42
+ Slowest Request Times:
43
+ ScamsController#show.GET took 37.721s
44
+ ScamsController#show.GET took 20.416s
45
+ ScamsController#show.GET took 19.060s
46
+ ScamsController#show.GET took 14.868s
47
+ ScamsController#show.GET took 14.730s
48
+ ScamsController#show.GET took 13.968s
49
+ AccomplicesController#history.GET.csv took 13.692s
50
+ ScamsController#show.GET took 13.298s
51
+ ScamsController#show.GET took 12.704s
52
+ ScamsController#show.GET took 12.608s
53
+
54
+ ------------------------------------------------------------------------
55
+
56
+ DB Times Summary: Count Avg Std Dev Min Max
57
+ ALL REQUESTS: 22909 0.102 0.679 0.000 36.529
58
+
59
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.009 0.038 0.004 2.967
60
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.010 0.053 0.004 3.056
61
+ HealthController#pulse.GET: 742 0.000 0.000 0.000 0.002
62
+ Api::V1::SleepwalkersController#show.GET: 710 0.011 0.058 0.002 1.479
63
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.007 0.009 0.002 0.151
64
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.004 0.002 0.001 0.029
65
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.009 0.032 0.003 0.624
66
+ AccomplicesController#history.GET.csv: 680 1.589 1.521 0.000 13.672
67
+ WindsController#feeds.GET: 320 0.050 0.182 0.004 1.893
68
+ ScamsController#show.GET: 317 3.277 3.576 0.004 36.529
69
+ ScamsController#index.GET: 194 0.048 0.039 0.000 0.508
70
+ ScamsController#outputs.GET: 160 0.002 0.007 0.000 0.042
71
+ ScamsController#map.GET: 12 0.032 0.042 0.009 0.160
72
+ ScamsController#index.GET.atom: 9 0.009 0.016 0.003 0.053
73
+ ScamsController#index.GET.json: 9 0.019 0.009 0.011 0.032
74
+ ScamsController#index.GET.rss: 9 0.004 0.001 0.003 0.005
75
+ Api::V1::SleepwalkersController#update.PUT: 8 0.009 0.008 0.004 0.030
76
+ Api::V1::SleepwalkersController#create.POST: 3 0.096 0.116 0.007 0.259
77
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.006 0.001 0.005 0.007
78
+ Api::V1::MisinterpretationsController#show.GET: 2 0.003 0.001 0.002 0.004
79
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.004 0.002 0.002 0.006
80
+ Api::V1::SleepwalkersController#index.GET: 2 0.279 0.051 0.228 0.330
81
+ ScamsController#tag.GET.atom: 2 0.143 0.120 0.023 0.262
82
+ Api::V1::MisinterpretationsController#create.POST: 1 0.040 0.000 0.040 0.040
83
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.003 0.000 0.003 0.003
84
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.003 0.000 0.003 0.003
85
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.022 0.000 0.022 0.022
86
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.003 0.000 0.003 0.003
87
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.004 0.000 0.004 0.004
88
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.023 0.000 0.023 0.023
89
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.024 0.000 0.024 0.024
90
+ ScamsController#tag.GET.rss: 1 0.032 0.000 0.032 0.032
91
+ WindsController#favourites.GET.json: 1 0.006 0.000 0.006 0.006
92
+ WindsController#feeds.GET.atom: 1 0.019 0.000 0.019 0.019
93
+ WindsController#feeds.GET.json: 1 0.004 0.000 0.004 0.004
94
+ WindsController#feeds.GET.rss: 1 0.002 0.000 0.002 0.002
95
+ WindsController#show.GET: 1 0.001 0.000 0.001 0.001
96
+
97
+ Slowest Total DB Times:
98
+ ScamsController#show.GET took 36.529s
99
+ ScamsController#show.GET took 19.298s
100
+ ScamsController#show.GET took 17.895s
101
+ ScamsController#show.GET took 14.336s
102
+ AccomplicesController#history.GET.csv took 13.672s
103
+ ScamsController#show.GET took 13.601s
104
+ ScamsController#show.GET took 13.581s
105
+ ScamsController#show.GET took 12.750s
106
+ ScamsController#show.GET took 12.077s
107
+ ScamsController#show.GET took 12.057s
108
+
109
+ ------------------------------------------------------------------------
110
+
111
+ Render Times Summary: Count Avg Std Dev Min Max
112
+ ALL REQUESTS: 22909 0.015 0.094 0.000 2.714
113
+
114
+ Api::V1::SleepwalkersController#update.PUT.csv: 8807 0.001 0.007 0.000 0.160
115
+ Api::V1::SleepwalkersController#update.PUT.xml: 8793 0.001 0.007 0.000 0.149
116
+ HealthController#pulse.GET: 742 0.001 0.010 0.000 0.141
117
+ Api::V1::SleepwalkersController#show.GET: 710 0.001 0.007 0.000 0.156
118
+ Api::V1::SleepwalkersController#show.GET.xml: 706 0.001 0.000 0.000 0.002
119
+ Api::V1::SleepwalkersController#show.GET.csv: 703 0.001 0.010 0.000 0.151
120
+ Api::V1::SleepwalkersController#show.GET.json: 702 0.038 0.048 0.014 0.351
121
+ AccomplicesController#history.GET.csv: 680 0.001 0.001 0.000 0.012
122
+ WindsController#feeds.GET: 320 0.119 0.061 0.072 0.609
123
+ ScamsController#show.GET: 317 0.575 0.389 0.019 2.714
124
+ ScamsController#index.GET: 194 0.392 0.167 0.063 2.295
125
+ ScamsController#outputs.GET: 160 0.010 0.010 0.008 0.133
126
+ ScamsController#map.GET: 12 0.262 0.555 0.063 2.094
127
+ ScamsController#index.GET.atom: 9 0.128 0.003 0.124 0.132
128
+ ScamsController#index.GET.json: 9 0.353 0.047 0.226 0.394
129
+ ScamsController#index.GET.rss: 9 0.123 0.064 0.085 0.265
130
+ Api::V1::SleepwalkersController#update.PUT: 8 0.000 0.000 0.000 0.001
131
+ Api::V1::SleepwalkersController#create.POST: 3 0.000 0.000 0.000 0.000
132
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.000 0.000 0.000 0.001
133
+ Api::V1::MisinterpretationsController#show.GET: 2 0.007 0.002 0.005 0.009
134
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.001 0.001 0.000 0.001
135
+ Api::V1::SleepwalkersController#index.GET: 2 0.001 0.001 0.000 0.001
136
+ ScamsController#tag.GET.atom: 2 0.194 0.068 0.126 0.261
137
+ Api::V1::MisinterpretationsController#create.POST: 1 0.000 0.000 0.000 0.000
138
+ Api::V1::MisinterpretationsController#destroy.DELETE: 1 0.000 0.000 0.000 0.000
139
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.000 0.000 0.000 0.000
140
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.000 0.000 0.000 0.000
141
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.000 0.000 0.000 0.000
142
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.000 0.000 0.000 0.000
143
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.018 0.000 0.018 0.018
144
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.001 0.000 0.001 0.001
145
+ ScamsController#tag.GET.rss: 1 0.088 0.000 0.088 0.088
146
+ WindsController#favourites.GET.json: 1 0.003 0.000 0.003 0.003
147
+ WindsController#feeds.GET.atom: 1 0.031 0.000 0.031 0.031
148
+ WindsController#feeds.GET.json: 1 0.135 0.000 0.135 0.135
149
+ WindsController#feeds.GET.rss: 1 0.026 0.000 0.026 0.026
150
+ WindsController#show.GET: 1 2.001 0.000 2.001 2.001
151
+
152
+ Slowest Total Render Times:
153
+ ScamsController#show.GET took 2.714s
154
+ ScamsController#index.GET took 2.295s
155
+ ScamsController#show.GET took 2.293s
156
+ ScamsController#show.GET took 2.293s
157
+ ScamsController#show.GET took 2.253s
158
+ ScamsController#map.GET took 2.094s
159
+ WindsController#show.GET took 2.001s
160
+ ScamsController#show.GET took 1.952s
161
+ ScamsController#show.GET took 1.866s
162
+ ScamsController#show.GET took 1.773s
@@ -0,0 +1,156 @@
1
+ Request Times Summary: Count Avg Std Dev Min Max
2
+ ALL REQUESTS: 16515 0.405 2.023 0.001 59.678
3
+
4
+ Api::V1::SleepwalkersController#update.PUT.xml: 6249 0.079 0.176 0.028 8.328
5
+ Api::V1::SleepwalkersController#update.PUT.csv: 6245 0.099 0.085 0.028 2.536
6
+ HealthController#pulse.GET: 791 0.002 0.005 0.001 0.129
7
+ Api::V1::SleepwalkersController#show.GET: 509 0.072 0.170 0.014 3.505
8
+ Api::V1::SleepwalkersController#show.GET.json: 496 0.076 0.224 0.026 4.874
9
+ Api::V1::SleepwalkersController#show.GET.xml: 491 0.065 0.065 0.023 0.624
10
+ Api::V1::SleepwalkersController#show.GET.csv: 474 0.029 0.029 0.011 0.239
11
+ AccomplicesController#history.GET.csv: 470 5.350 3.748 0.003 20.681
12
+ WindsController#feeds.GET: 237 0.201 0.153 0.096 1.304
13
+ ScamsController#show.GET: 236 11.793 8.460 0.038 59.678
14
+ ScamsController#index.GET: 147 0.600 0.395 0.076 3.638
15
+ ScamsController#outputs.GET: 114 0.037 0.063 0.011 0.404
16
+ Api::V1::SleepwalkersController#update.PUT: 9 0.051 0.017 0.035 0.090
17
+ ScamsController#index.GET.atom: 9 0.193 0.065 0.134 0.292
18
+ ScamsController#index.GET.rss: 9 0.132 0.054 0.095 0.242
19
+ Api::V1::SleepwalkersController#create.POST: 3 0.369 0.342 0.076 0.849
20
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.046 0.009 0.037 0.059
21
+ Api::V1::MisinterpretationsController#show.GET: 2 0.021 0.005 0.016 0.026
22
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.102 0.081 0.021 0.184
23
+ Api::V1::SleepwalkersController#index.GET: 2 2.887 0.327 2.560 3.214
24
+ ScamsController#map.GET: 2 1.075 0.933 0.141 2.008
25
+ ScamsController#tag.GET.atom: 2 0.462 0.185 0.277 0.647
26
+ Api::V1::MisinterpretationsController#create.POST: 1 0.075 0.000 0.075 0.075
27
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.016 0.000 0.016 0.016
28
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.089 0.000 0.089 0.089
29
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.027 0.000 0.027 0.027
30
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.030 0.000 0.030 0.030
31
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.340 0.000 0.340 0.340
32
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.385 0.000 0.385 0.385
33
+ ScamsController#tag.GET.rss: 1 0.134 0.000 0.134 0.134
34
+ WindsController#favourites.GET.json: 1 0.019 0.000 0.019 0.019
35
+ WindsController#feeds.GET.atom: 1 0.061 0.000 0.061 0.061
36
+ WindsController#feeds.GET.json: 1 0.013 0.000 0.013 0.013
37
+ WindsController#feeds.GET.rss: 1 0.037 0.000 0.037 0.037
38
+ WindsController#show.GET: 1 1.988 0.000 1.988 1.988
39
+
40
+ Slowest Request Times:
41
+ ScamsController#show.GET took 59.678s
42
+ ScamsController#show.GET took 50.577s
43
+ ScamsController#show.GET took 48.901s
44
+ ScamsController#show.GET took 38.601s
45
+ ScamsController#show.GET took 34.107s
46
+ ScamsController#show.GET took 30.878s
47
+ ScamsController#show.GET took 30.697s
48
+ ScamsController#show.GET took 29.660s
49
+ ScamsController#show.GET took 28.655s
50
+ ScamsController#show.GET took 28.548s
51
+
52
+ ------------------------------------------------------------------------
53
+
54
+ DB Times Summary: Count Avg Std Dev Min Max
55
+ ALL REQUESTS: 16515 0.327 1.973 0.000 57.834
56
+
57
+ Api::V1::SleepwalkersController#update.PUT.xml: 6249 0.020 0.169 0.004 8.285
58
+ Api::V1::SleepwalkersController#update.PUT.csv: 6245 0.012 0.062 0.004 2.482
59
+ HealthController#pulse.GET: 791 0.000 0.000 0.000 0.002
60
+ Api::V1::SleepwalkersController#show.GET: 509 0.020 0.160 0.001 3.456
61
+ Api::V1::SleepwalkersController#show.GET.json: 496 0.019 0.218 0.002 4.841
62
+ Api::V1::SleepwalkersController#show.GET.xml: 491 0.010 0.029 0.003 0.453
63
+ Api::V1::SleepwalkersController#show.GET.csv: 474 0.004 0.010 0.001 0.218
64
+ AccomplicesController#history.GET.csv: 470 5.320 3.747 0.000 20.632
65
+ WindsController#feeds.GET: 237 0.062 0.143 0.006 1.213
66
+ ScamsController#show.GET: 236 11.195 8.313 0.005 57.834
67
+ ScamsController#index.GET: 147 0.075 0.064 0.000 0.516
68
+ ScamsController#outputs.GET: 114 0.010 0.050 0.000 0.388
69
+ Api::V1::SleepwalkersController#update.PUT: 9 0.011 0.012 0.004 0.041
70
+ ScamsController#index.GET.atom: 9 0.009 0.015 0.002 0.051
71
+ ScamsController#index.GET.rss: 9 0.004 0.001 0.002 0.005
72
+ Api::V1::SleepwalkersController#create.POST: 3 0.174 0.220 0.008 0.485
73
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.006 0.000 0.006 0.007
74
+ Api::V1::MisinterpretationsController#show.GET: 2 0.003 0.001 0.002 0.003
75
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.005 0.002 0.003 0.006
76
+ Api::V1::SleepwalkersController#index.GET: 2 0.386 0.161 0.225 0.546
77
+ ScamsController#map.GET: 2 0.036 0.006 0.030 0.043
78
+ ScamsController#tag.GET.atom: 2 0.267 0.243 0.024 0.510
79
+ Api::V1::MisinterpretationsController#create.POST: 1 0.048 0.000 0.048 0.048
80
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.003 0.000 0.003 0.003
81
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.033 0.000 0.033 0.033
82
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.004 0.000 0.004 0.004
83
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.004 0.000 0.004 0.004
84
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.025 0.000 0.025 0.025
85
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.026 0.000 0.026 0.026
86
+ ScamsController#tag.GET.rss: 1 0.032 0.000 0.032 0.032
87
+ WindsController#favourites.GET.json: 1 0.010 0.000 0.010 0.010
88
+ WindsController#feeds.GET.atom: 1 0.019 0.000 0.019 0.019
89
+ WindsController#feeds.GET.json: 1 0.004 0.000 0.004 0.004
90
+ WindsController#feeds.GET.rss: 1 0.002 0.000 0.002 0.002
91
+ WindsController#show.GET: 1 0.001 0.000 0.001 0.001
92
+
93
+ Slowest Total DB Times:
94
+ ScamsController#show.GET took 57.834s
95
+ ScamsController#show.GET took 49.243s
96
+ ScamsController#show.GET took 47.576s
97
+ ScamsController#show.GET took 38.159s
98
+ ScamsController#show.GET took 32.935s
99
+ ScamsController#show.GET took 30.456s
100
+ ScamsController#show.GET took 30.270s
101
+ ScamsController#show.GET took 29.203s
102
+ ScamsController#show.GET took 27.959s
103
+ ScamsController#show.GET took 27.697s
104
+
105
+ ------------------------------------------------------------------------
106
+
107
+ Render Times Summary: Count Avg Std Dev Min Max
108
+ ALL REQUESTS: 16515 0.016 0.102 0.000 3.096
109
+
110
+ Api::V1::SleepwalkersController#update.PUT.xml: 6249 0.001 0.005 0.000 0.153
111
+ Api::V1::SleepwalkersController#update.PUT.csv: 6245 0.001 0.006 0.000 0.147
112
+ HealthController#pulse.GET: 791 0.001 0.005 0.000 0.128
113
+ Api::V1::SleepwalkersController#show.GET: 509 0.001 0.009 0.000 0.149
114
+ Api::V1::SleepwalkersController#show.GET.json: 496 0.039 0.047 0.014 0.340
115
+ Api::V1::SleepwalkersController#show.GET.xml: 491 0.001 0.001 0.000 0.003
116
+ Api::V1::SleepwalkersController#show.GET.csv: 474 0.000 0.006 0.000 0.128
117
+ AccomplicesController#history.GET.csv: 470 0.001 0.009 0.000 0.159
118
+ WindsController#feeds.GET: 237 0.124 0.063 0.073 0.605
119
+ ScamsController#show.GET: 236 0.579 0.407 0.021 2.787
120
+ ScamsController#index.GET: 147 0.457 0.288 0.066 3.096
121
+ ScamsController#outputs.GET: 114 0.016 0.029 0.008 0.152
122
+ Api::V1::SleepwalkersController#update.PUT: 9 0.000 0.000 0.000 0.001
123
+ ScamsController#index.GET.atom: 9 0.176 0.067 0.124 0.282
124
+ ScamsController#index.GET.rss: 9 0.118 0.056 0.084 0.231
125
+ Api::V1::SleepwalkersController#create.POST: 3 0.000 0.000 0.000 0.001
126
+ Api::V1::SleepwalkersController#destroy.DELETE: 3 0.000 0.000 0.000 0.001
127
+ Api::V1::MisinterpretationsController#show.GET: 2 0.007 0.002 0.005 0.008
128
+ Api::V1::AccomplicesController#show.GET.xml: 2 0.001 0.001 0.000 0.001
129
+ Api::V1::SleepwalkersController#index.GET: 2 0.001 0.000 0.001 0.001
130
+ ScamsController#map.GET: 2 1.025 0.944 0.081 1.969
131
+ ScamsController#tag.GET.atom: 2 0.186 0.058 0.128 0.244
132
+ Api::V1::MisinterpretationsController#create.POST: 1 0.000 0.000 0.000 0.000
133
+ Api::V1::MisinterpretationsController#update.PUT: 1 0.000 0.000 0.000 0.000
134
+ Api::V1::AccomplicesController#create.POST.xml: 1 0.001 0.000 0.001 0.001
135
+ Api::V1::AccomplicesController#destroy.DELETE.xml: 1 0.001 0.000 0.001 0.001
136
+ Api::V1::AccomplicesController#update.PUT.xml: 1 0.000 0.000 0.000 0.000
137
+ Api::V1::SleepwalkersController#index.GET.json: 1 0.020 0.000 0.020 0.020
138
+ Api::V1::SleepwalkersController#index.GET.xml: 1 0.001 0.000 0.001 0.001
139
+ ScamsController#tag.GET.rss: 1 0.092 0.000 0.092 0.092
140
+ WindsController#favourites.GET.json: 1 0.002 0.000 0.002 0.002
141
+ WindsController#feeds.GET.atom: 1 0.034 0.000 0.034 0.034
142
+ WindsController#feeds.GET.json: 1 0.003 0.000 0.003 0.003
143
+ WindsController#feeds.GET.rss: 1 0.029 0.000 0.029 0.029
144
+ WindsController#show.GET: 1 1.983 0.000 1.983 1.983
145
+
146
+ Slowest Total Render Times:
147
+ ScamsController#index.GET took 3.096s
148
+ ScamsController#show.GET took 2.787s
149
+ ScamsController#show.GET took 2.770s
150
+ ScamsController#show.GET took 2.358s
151
+ ScamsController#index.GET took 2.319s
152
+ ScamsController#show.GET took 2.105s
153
+ ScamsController#show.GET took 2.024s
154
+ WindsController#show.GET took 1.983s
155
+ ScamsController#map.GET took 1.969s
156
+ ScamsController#show.GET took 1.698s
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nbogie-production_log_analyzer
3
3
  version: !ruby/object:Gem::Version
4
- hash: 119
4
+ hash: 117
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
8
  - 5
9
9
  - 1
10
- - 2
11
- version: 1.5.1.2
10
+ - 3
11
+ version: 1.5.1.3
12
12
  platform: ruby
13
13
  authors:
14
14
  - Eric Hodel
@@ -63,6 +63,7 @@ executables:
63
63
  - action_errors
64
64
  - action_grep
65
65
  - pl_analyze
66
+ - pl_analyze_diff
66
67
  extensions: []
67
68
 
68
69
  extra_rdoc_files:
@@ -71,26 +72,35 @@ extra_rdoc_files:
71
72
  - Manifest.txt
72
73
  - README.txt
73
74
  files:
74
- - History.txt
75
- - LICENSE.txt
76
- - Manifest.txt
77
- - README.txt
78
- - Rakefile
75
+ - .autotest
79
76
  - bin/action_errors
80
77
  - bin/action_grep
81
78
  - bin/pl_analyze
79
+ - bin/pl_analyze_diff
80
+ - History.txt
82
81
  - lib/production_log/action_grep.rb
83
82
  - lib/production_log/analyzer.rb
84
83
  - lib/production_log/parser.rb
85
- - test/test.syslog.0.14.x.log
86
- - test/test.syslog.1.2.shortname.log
87
- - test/test.syslog.empty.log
88
- - test/test.syslog.log
84
+ - lib/report/report_differ.rb
85
+ - lib/report/report_parser.rb
86
+ - LICENSE.txt
87
+ - Manifest.txt
88
+ - Rakefile
89
+ - README.txt
90
+ - test/example_data/actual_diff.txt
91
+ - test/example_data/example.txt
92
+ - test/example_data/expected_diff.txt
93
+ - test/example_data/report_a.txt
94
+ - test/example_data/report_b.txt
89
95
  - test/test_action_grep.rb
90
96
  - test/test_analyzer.rb
91
97
  - test/test_parser.rb
92
98
  - test/test_report_differ.rb
93
99
  - test/test_report_parser.rb
100
+ - test/test.syslog.0.14.x.log
101
+ - test/test.syslog.1.2.shortname.log
102
+ - test/test.syslog.empty.log
103
+ - test/test.syslog.log
94
104
  - .gemtest
95
105
  homepage: http://seattlerb.rubyforge.org/production_log_analyzer
96
106
  licenses: []