request-log-analyzer 1.9.8 → 1.9.9
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.
data/lib/request_log_analyzer.rb
CHANGED
@@ -13,7 +13,7 @@ module RequestLogAnalyzer
|
|
13
13
|
|
14
14
|
# The current version of request-log-analyzer.
|
15
15
|
# Do not change the value by hand; it will be updated automatically by the gem release script.
|
16
|
-
VERSION = "1.9.
|
16
|
+
VERSION = "1.9.9"
|
17
17
|
|
18
18
|
|
19
19
|
autoload :Controller, 'request_log_analyzer/controller'
|
@@ -26,6 +26,12 @@ class RequestLogAnalyzer::FileFormat::Oink < RequestLogAnalyzer::FileFormat::Rai
|
|
26
26
|
line.capture(:pid).as(:integer)
|
27
27
|
line.capture(:memory).as(:traffic)
|
28
28
|
end
|
29
|
+
|
30
|
+
line_definition :instance_type_counter do |line|
|
31
|
+
line.regexp = /\[(\d+)\]: Instantiation Breakdown: (.*)$/
|
32
|
+
line.capture(:pid).as(:integer)
|
33
|
+
line.capture(:instance_counts).as(:pipe_separated_counts)
|
34
|
+
end
|
29
35
|
|
30
36
|
report(:append) do |analyze|
|
31
37
|
analyze.traffic :memory_diff, :category => REQUEST_CATEGORIZER, :title => "Largest Memory Increases", :line_type => :memory_usage
|
@@ -35,7 +41,7 @@ class RequestLogAnalyzer::FileFormat::Oink < RequestLogAnalyzer::FileFormat::Rai
|
|
35
41
|
def pids
|
36
42
|
@pids ||= {}
|
37
43
|
end
|
38
|
-
|
44
|
+
|
39
45
|
class Request < RequestLogAnalyzer::FileFormat::Rails::Request
|
40
46
|
# Overrides the #validate method to handle PID updating.
|
41
47
|
def validate
|
@@ -74,5 +80,17 @@ class RequestLogAnalyzer::FileFormat::Oink < RequestLogAnalyzer::FileFormat::Rai
|
|
74
80
|
end # if mem_line
|
75
81
|
return true
|
76
82
|
end # def update_pids
|
83
|
+
|
84
|
+
def convert_pipe_separated_counts(value, capture_definition)
|
85
|
+
count_strings = value.split(' | ')
|
86
|
+
count_arrays = count_strings.map do |count_string|
|
87
|
+
if count_string =~ /^(\w+): (\d+)/
|
88
|
+
[$1, $2.to_i]
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
Hash[count_arrays]
|
93
|
+
end
|
94
|
+
|
77
95
|
end # class Request
|
78
|
-
end
|
96
|
+
end
|
@@ -2,8 +2,8 @@ Gem::Specification.new do |s|
|
|
2
2
|
s.name = "request-log-analyzer"
|
3
3
|
|
4
4
|
# Do not set the version and date field manually, this is done by the release script
|
5
|
-
s.version = "1.9.
|
6
|
-
s.date = "2010-12-
|
5
|
+
s.version = "1.9.9"
|
6
|
+
s.date = "2010-12-17"
|
7
7
|
|
8
8
|
s.rubyforge_project = 'r-l-a'
|
9
9
|
|
@@ -30,6 +30,13 @@ describe RequestLogAnalyzer::FileFormat::Oink do
|
|
30
30
|
line = 'Aug 14 21:16:30 derek rails[67783]: Processing PeopleController#index (for 1.1.1.1 at 2008-08-14 21:16:30) [GET]'
|
31
31
|
@oink.should parse_line(line).as(:processing).and_capture(:pid => 67783, :controller => 'PeopleController', :action => 'index', :timestamp => 20080814211630, :method => 'GET', :ip => '1.1.1.1')
|
32
32
|
end
|
33
|
+
|
34
|
+
it "should parse a :instance_type_counter correctly" do
|
35
|
+
|
36
|
+
line = "Dec 13 12:00:44 storenvy rails[26364]: Instantiation Breakdown: Total: 732 | User: 376 | Post: 323 | Comment: 32 | Blog: 1"
|
37
|
+
|
38
|
+
@oink.should parse_line(line).as(:instance_type_counter).and_capture(:pid => 26364, :instance_counts => {'Total' => 732, 'User' => 376, 'Post' => 323, 'Comment' => 32, 'Blog' => 1})
|
39
|
+
end
|
33
40
|
end
|
34
41
|
|
35
42
|
describe '#parse_io' do
|
@@ -54,11 +54,11 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it "should sum of the durations for a category correctly" do
|
57
|
-
@tracker.sum('a').should
|
57
|
+
@tracker.sum('a').should be_within(0.000001).of(0.9)
|
58
58
|
end
|
59
59
|
|
60
60
|
it "should overall sum of the durations correctly" do
|
61
|
-
@tracker.sum_overall.should
|
61
|
+
@tracker.sum_overall.should be_within(0.000001).of(0.9)
|
62
62
|
end
|
63
63
|
|
64
64
|
it "should keep track of the minimum and maximum duration" do
|
@@ -67,19 +67,19 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
|
|
67
67
|
end
|
68
68
|
|
69
69
|
it "should calculate the mean duration correctly" do
|
70
|
-
@tracker.mean('a').should
|
70
|
+
@tracker.mean('a').should be_within(0.000001).of(0.3)
|
71
71
|
end
|
72
72
|
|
73
73
|
it "should calculate the overall mean duration correctly" do
|
74
|
-
@tracker.mean_overall.should
|
74
|
+
@tracker.mean_overall.should be_within(0.000001).of(0.3)
|
75
75
|
end
|
76
76
|
|
77
77
|
it "should calculate the duration variance correctly" do
|
78
|
-
@tracker.variance('a').should
|
78
|
+
@tracker.variance('a').should be_within(0.000001).of(0.01)
|
79
79
|
end
|
80
80
|
|
81
81
|
it "should calculate the duration standard deviation correctly" do
|
82
|
-
@tracker.stddev('a').should
|
82
|
+
@tracker.stddev('a').should be_within(0.000001).of(0.1)
|
83
83
|
end
|
84
84
|
|
85
85
|
it "should calculate the bucket spread correctly" do
|
@@ -92,12 +92,12 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
|
|
92
92
|
@tracker.update(request(:category => 'a', :duration => 0.3))
|
93
93
|
# 0.2, 0.3 and 0.4 are already there, so, 10 values in total
|
94
94
|
|
95
|
-
@tracker.median('a').should
|
95
|
+
@tracker.median('a').should be_within(0.01).of(0.3)
|
96
96
|
|
97
|
-
@tracker.percentile_interval('a', 80).begin.should
|
98
|
-
@tracker.percentile_interval('a', 80).end.should
|
99
|
-
@tracker.percentile_interval('a', 90).begin.should
|
100
|
-
@tracker.percentile_interval('a', 90).end.should
|
97
|
+
@tracker.percentile_interval('a', 80).begin.should be_within(0.01).of(0.3)
|
98
|
+
@tracker.percentile_interval('a', 80).end.should be_within(0.01).of(0.3)
|
99
|
+
@tracker.percentile_interval('a', 90).begin.should be_within(0.01).of(0.2)
|
100
|
+
@tracker.percentile_interval('a', 90).end.should be_within(0.01).of(0.4)
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -135,9 +135,10 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
|
|
135
135
|
@tracker.to_yaml_object.keys.should =~ ['a', 'b']
|
136
136
|
|
137
137
|
@tracker.to_yaml_object['a'].should include(:min => 2, :hits => 1, :max => 2, :mean => 2.0, :sum => 2, :sum_of_squares => 0.0)
|
138
|
-
@tracker.to_yaml_object['a'][:interval_95_percent].
|
138
|
+
@tracker.to_yaml_object['a'][:interval_95_percent].should be_member(2)
|
139
|
+
|
139
140
|
@tracker.to_yaml_object['b'].should include(:min => 3, :hits => 1, :max => 3, :mean => 3.0, :sum => 3, :sum_of_squares => 0.0)
|
140
|
-
@tracker.to_yaml_object['b'][:interval_95_percent].should
|
141
|
+
@tracker.to_yaml_object['b'][:interval_95_percent].should be_member(3)
|
141
142
|
end
|
142
143
|
end
|
143
144
|
|
data/tasks/github-gem.rake
CHANGED
@@ -220,7 +220,7 @@ module GithubGem
|
|
220
220
|
|
221
221
|
def check_version_task
|
222
222
|
raise "#{ENV['VERSION']} is not a valid version number!" if ENV['VERSION'] && !Gem::Version.correct?(ENV['VERSION'])
|
223
|
-
proposed_version = Gem::Version.new(ENV['VERSION']
|
223
|
+
proposed_version = Gem::Version.new((ENV['VERSION'] || gemspec.version).dup)
|
224
224
|
raise "This version (#{proposed_version}) is not higher than the highest tagged version (#{newest_version})" if newest_version >= proposed_version
|
225
225
|
end
|
226
226
|
|
@@ -339,22 +339,26 @@ module GithubGem
|
|
339
339
|
|
340
340
|
# Updates the tasks file using the latest file found on Github
|
341
341
|
def update_tasks_task
|
342
|
-
require 'net/
|
343
|
-
|
344
|
-
|
345
|
-
|
342
|
+
require 'net/https'
|
343
|
+
require 'uri'
|
344
|
+
|
345
|
+
uri = URI.parse('https://github.com/wvanbergen/github-gem/raw/master/tasks/github-gem.rake')
|
346
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
347
|
+
http.use_ssl = true
|
348
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
349
|
+
response = http.request(Net::HTTP::Get.new(uri.path))
|
346
350
|
|
347
|
-
Net::
|
348
|
-
response = http.get(path)
|
351
|
+
if Net::HTTPSuccess === response
|
349
352
|
open(__FILE__, "w") { |file| file.write(response.body) }
|
350
|
-
|
351
|
-
|
352
|
-
|
353
|
-
|
354
|
-
|
355
|
-
|
353
|
+
relative_file = File.expand_path(__FILE__).sub(%r[^#{@root_dir}/], '')
|
354
|
+
if `#{git} ls-files -m #{relative_file}`.split("\n").any?
|
355
|
+
sh git, 'add', relative_file
|
356
|
+
sh git, 'commit', '-m', "Updated to latest gem release management tasks."
|
357
|
+
else
|
358
|
+
puts "Release managament tasks already are at the latest version."
|
359
|
+
end
|
356
360
|
else
|
357
|
-
|
361
|
+
raise "Download failed with HTTP status #{response.code}!"
|
358
362
|
end
|
359
363
|
end
|
360
364
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 1
|
7
7
|
- 9
|
8
|
-
-
|
9
|
-
version: 1.9.
|
8
|
+
- 9
|
9
|
+
version: 1.9.9
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Willem van Bergen
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-12-
|
18
|
+
date: 2010-12-17 00:00:00 -05:00
|
19
19
|
default_executable: request-log-analyzer
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|