request-log-analyzer 1.3.6 → 1.3.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,7 @@ module RequestLogAnalyzer
11
11
 
12
12
  # The current version of request-log-analyzer.
13
13
  # This will be diplayed in output reports etc.
14
- VERSION = "1.3.6"
14
+ VERSION = "1.3.7"
15
15
 
16
16
  # Loads constants in the RequestLogAnalyzer namespace using self.load_default_class_file(base, const)
17
17
  # <tt>const</tt>:: The constant that is not yet loaded in the RequestLogAnalyzer namespace. This should be passed as a string or symbol.
@@ -8,7 +8,7 @@ module RequestLogAnalyzer::FileFormat
8
8
  # ~ Started request handling: Fri Aug 29 11:10:23 +0200 2008
9
9
  line_definition :started do |line|
10
10
  line.header = true
11
- # line.teaser = /Started/
11
+ line.teaser = /Started request handling\:/
12
12
  line.regexp = /Started request handling\:\ (.+)/
13
13
  line.captures << { :name => :timestamp, :type => :timestamp }
14
14
  end
@@ -16,7 +16,7 @@ module RequestLogAnalyzer::FileFormat
16
16
  # ~ Params: {"action"=>"create", "controller"=>"session"}
17
17
  # ~ Params: {"_method"=>"delete", "authenticity_token"=>"[FILTERED]", "action"=>"d}
18
18
  line_definition :params do |line|
19
- # line.teaser = /Params/
19
+ line.teaser = /Params\:\ /
20
20
  line.regexp = /Params\:\ (\{.+\})/
21
21
  line.captures << { :name => :params, :type => :eval, :provides => {
22
22
  :namespace => :string, :controller => :string, :action => :string, :format => :string, :method => :string } }
@@ -25,6 +25,7 @@ module RequestLogAnalyzer::FileFormat
25
25
  # ~ {:dispatch_time=>0.006117, :after_filters_time=>6.1e-05, :before_filters_time=>0.000712, :action_time=>0.005833}
26
26
  line_definition :completed do |line|
27
27
  line.footer = true
28
+ # line.teaser = Regexp.new(Regexp.quote('~ {:'))
28
29
  line.regexp = /(\{.*\:dispatch_time\s*=>\s*\d+\.\d+.*\})/
29
30
  line.captures << { :name => :times_hash, :type => :eval, :provides => {
30
31
  :dispatch_time => :duration, :after_filters_time => :duration,
@@ -5,7 +5,7 @@ module RequestLogAnalyzer::FileFormat
5
5
  # Processing EmployeeController#index (for 123.123.123.123 at 2008-07-13 06:00:00) [GET]
6
6
  line_definition :processing do |line|
7
7
  line.header = true # this line is the first log line for a request
8
- # line.teaser = /Processing /
8
+ line.teaser = /Processing /
9
9
  line.regexp = /Processing ((?:\w+::)?\w+)#(\w+)(?: to (\w+))? \(for (\d+\.\d+\.\d+\.\d+) at (\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d)\) \[([A-Z]+)\]/
10
10
  line.captures << { :name => :controller, :type => :string } \
11
11
  << { :name => :action, :type => :string } \
@@ -15,9 +15,9 @@ module RequestLogAnalyzer::FileFormat
15
15
  << { :name => :method, :type => :string }
16
16
  end
17
17
 
18
- # Filter chain halted as [#<ActionController::Caching::Actions::ActionCacheFilter:0x2a999ad620 @check=nil, @options={:store_options=>{}, :layout=>nil, :cache_path=>#<Proc:0x0000002a999b8890@/app/controllers/cached_controller.rb:8>}>] rendered_or_redirected.
18
+ # Filter chain halted as [#<ActionController::Caching::Actions::ActionCacheFilter:0x2a999ad620 @check=nil, @options={:store_options=>{}, :layout=>nil, :cache_path=>#<Proc:0x0000002a999b8890@/app/controllers/cached_controller.rb:8>}>] rendered_or_redirected.
19
19
  line_definition :cache_hit do |line|
20
- line.regexp = /Filter chain halted as \[\#<ActionController::Caching::Actions::ActionCacheFilter:.+>\] rendered_or_redirected/
20
+ line.regexp = /Filter chain halted as \[\#<ActionController::Caching::Actions::ActionCacheFilter/
21
21
  end
22
22
 
23
23
  # RuntimeError (Cannot destroy employee): /app/models/employee.rb:198:in `before_destroy'
@@ -46,7 +46,7 @@ module RequestLogAnalyzer::FileFormat
46
46
  line_definition :completed do |line|
47
47
 
48
48
  line.footer = true
49
- # line.teaser = /Completed in /
49
+ line.teaser = /Completed in /
50
50
  line.regexp = Regexp.new("(?:#{RAILS_21_COMPLETED}|#{RAILS_22_COMPLETED})")
51
51
 
52
52
  line.captures << { :name => :duration, :type => :duration, :unit => :sec } \
@@ -91,7 +91,7 @@ module RequestLogAnalyzer::FileFormat
91
91
 
92
92
  # Do not use DateTime.parse
93
93
  def convert_timestamp(value, definition)
94
- value.gsub(/[^0-9]/, '')[0...14].to_i unless value.nil?
94
+ value.gsub(/[^0-9]/, '')[0...14].to_i
95
95
  end
96
96
  end
97
97
 
@@ -9,10 +9,6 @@ module RequestLogAnalyzer
9
9
  # Request#every(field_name) returns all values corresponding to the given field name as array.
10
10
  class Request
11
11
 
12
- def self.inherited(klass)
13
- # klass.send(:include, Converters)
14
- end
15
-
16
12
  module Converters
17
13
 
18
14
  # Default converter function, which converts the parsed strings to a native Ruby type
@@ -94,21 +94,26 @@ module RequestLogAnalyzer::Source
94
94
  # <tt>options</tt>:: A Hash of options that will be pased to parse_io.
95
95
  def parse_file(file, options = {}, &block)
96
96
 
97
- @progress_handler = @dormant_progress_handler
98
97
  @current_source = File.expand_path(file)
99
- @progress_handler.call(:started, file) if @progress_handler
100
98
  @source_changes_handler.call(:started, @current_source) if @source_changes_handler
101
99
 
102
100
  if decompress_file?(file).empty?
101
+
102
+ @progress_handler = @dormant_progress_handler
103
+ @progress_handler.call(:started, file) if @progress_handler
104
+
103
105
  File.open(file, 'r') { |f| parse_io(f, options, &block) }
106
+
107
+ @progress_handler.call(:finished, file) if @progress_handler
108
+ @progress_handler = nil
104
109
  else
105
110
  IO.popen(decompress_file?(file), 'r') { |f| parse_io(f, options, &block) }
106
111
  end
107
112
 
108
113
  @source_changes_handler.call(:finished, @current_source) if @source_changes_handler
109
- @progress_handler.call(:finished, file) if @progress_handler
114
+
110
115
  @current_source = nil
111
- @progress_handler = nil
116
+
112
117
  end
113
118
 
114
119
  # Parses an IO stream. It will simply call parse_io. This function does not support progress updates
@@ -134,7 +139,7 @@ module RequestLogAnalyzer::Source
134
139
  def parse_io(io, options = {}, &block) # :yields: request
135
140
  @current_lineno = 1
136
141
  while line = io.gets
137
- @progress_handler.call(:progress, io.pos) if @progress_handler && (@current_lineno & 255 == 0)
142
+ @progress_handler.call(:progress, io.pos) if @progress_handler && @current_lineno % 255 == 0
138
143
 
139
144
  if request_data = file_format.parse_line(line) { |wt, message| warn(wt, message) }
140
145
  @parsed_lines += 1
@@ -1,7 +1,7 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "request-log-analyzer"
3
- s.version = "1.3.6"
4
- s.date = "2009-09-20"
3
+ s.version = "1.3.7"
4
+ s.date = "2009-09-22"
5
5
 
6
6
  s.rubyforge_project = 'r-l-a'
7
7
 
@@ -15,6 +15,12 @@ describe RequestLogAnalyzer, 'running from command line' do
15
15
  output.any? { |line| /^Parsed requests\:\s*4\s/ =~ line }.should be_true
16
16
  end
17
17
 
18
+ it "should find 2 requests when parsing a compressed file" do
19
+ output = run("#{log_fixture(:decompression, :tgz)}")
20
+ output.any? { |line| /^Parsed requests\:\s*2\s/ =~ line }.should be_true
21
+ end
22
+
23
+
18
24
  it "should skip 1 requests with a --select option" do
19
25
  output = run("#{log_fixture(:rails_1x)} --select controller PeopleController")
20
26
  output.any? { |line| /^Skipped requests\:\s*1\s/ =~ line }.should be_true
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: request-log-analyzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 1.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willem van Bergen
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2009-09-20 00:00:00 +02:00
13
+ date: 2009-09-22 00:00:00 +02:00
14
14
  default_executable: request-log-analyzer
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency