request-log-analyzer 1.2.8 → 1.2.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.
@@ -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.2.8"
14
+ VERSION = "1.2.9"
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.
@@ -16,11 +16,20 @@ module RequestLogAnalyzer::FileFormat
16
16
 
17
17
  # A hash that defines how the log format directives should be parsed.
18
18
  LOG_DIRECTIVES = {
19
- 'h' => { :regexp => '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', :captures => [{:name => :ip_address, :type => :string}] },
19
+ 'h' => { :regexp => '([A-Za-z0-9-]+(?:\.[A-Za-z0-9-]+)+)', :captures => [{:name => :remote_host, :type => :string}] },
20
+ 'a' => { :regexp => '(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})', :captures => [{:name => :remote_ip, :type => :string}] },
21
+ 'b' => { :regexp => '(\d+|-)', :captures => [{:name => :bytes_sent, :type => :integer}] },
22
+ 'c' => { :regexp => '(\+|\-|\X)', :captures => [{:name => :connection_status, :type => :integer}] },
23
+ 'l' => { :regexp => '([\w-]+)', :captures => [{:name => :remote_logname, :type => :nillable_string}] },
24
+ 'T' => { :regexp => '((?:\d+(?:\.\d+)?)|-)', :captures => [{:name => :duration, :type => :duration, :unit => :sec}] },
20
25
  't' => { :regexp => '\[([^\]]{26})\]', :captures => [{:name => :timestamp, :type => :timestamp}] },
21
26
  's' => { :regexp => '(\d{3})', :captures => [{:name => :http_status, :type => :integer}] },
27
+ 'u' => { :regexp => '(\w+|-)', :captures => [{:name => :user, :type => :nillable_string}] },
22
28
  'r' => { :regexp => '([A-Z]+) ([^\s]+) HTTP\/(\d+(?:\.\d+)*)', :captures => [{:name => :http_method, :type => :string},
23
- {:name => :path, :type => :string}, {:name => :http_version, :type => :string}]}
29
+ {:name => :path, :type => :string}, {:name => :http_version, :type => :string}]},
30
+ 'i' => { 'Referer' => { :regexp => '([^\s]+)', :captures => [{:name => :referer, :type => :nillable_string}] },
31
+ 'User-agent' => { :regexp => '(.*)', :captures => [{:name => :user_agent, :type => :user_agent}] }
32
+ }
24
33
  }
25
34
 
26
35
  # Creates the Apache log format language based on a Apache log format string.
@@ -41,9 +50,13 @@ module RequestLogAnalyzer::FileFormat
41
50
  format_string.scan(/([^%]*)(?:%(?:\{([^\}]+)\})?>?([A-Za-z]))?/) do |literal, arg, variable|
42
51
 
43
52
  line_regexp << Regexp.quote(literal) # Make sure to parse the literal before the directive
53
+
44
54
  if variable
45
55
  # Check if we recognize the log directive
46
- if directive = LOG_DIRECTIVES[variable]
56
+ directive = LOG_DIRECTIVES[variable]
57
+ directive = directive[arg] if directive && arg
58
+
59
+ if directive
47
60
  line_regexp << directive[:regexp] # Parse the value of the directive
48
61
  captures += directive[:captures] # Add the directive's information to the captures
49
62
  else
@@ -68,6 +81,13 @@ module RequestLogAnalyzer::FileFormat
68
81
  analyze.frequency :category => :http_status, :amount => 20, :title => "HTTP statuses" if line_definition.captures?(:http_status)
69
82
  analyze.frequency :category => :path, :amount => 20, :title => "Most popular URIs" if line_definition.captures?(:path)
70
83
 
84
+ analyze.frequency :category => :user_agent, :amount => 20, :title => "User agents" if line_definition.captures?(:user_agent)
85
+ analyze.frequency :category => :referer, :amount => 20, :title => "Referers" if line_definition.captures?(:referer)
86
+
87
+ if line_definition.captures?(:path) && line_definition.captures?(:duration)
88
+ analyze.duration :duration => :duration, :category => :path , :title => 'Request duration'
89
+ end
90
+
71
91
  return analyze.trackers
72
92
  end
73
93
 
@@ -82,6 +102,14 @@ module RequestLogAnalyzer::FileFormat
82
102
  d = /^(\d{2})\/(\w{3})\/(\d{4}):(\d{2}):(\d{2}):(\d{2})/.match(value).captures
83
103
  "#{d[2]}#{MONTHS[d[1]]}#{d[0]}#{d[3]}#{d[4]}#{d[5]}".to_i
84
104
  end
105
+
106
+ def convert_user_agent(value, definition)
107
+ value # TODO
108
+ end
109
+
110
+ def convert_nillable_string(value, definition)
111
+ value == '-' ? nil : value
112
+ end
85
113
  end
86
114
  end
87
115
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'request-log-analyzer'
3
- s.version = "1.2.8"
3
+ s.version = "1.2.9"
4
4
  s.date = "2009-09-08"
5
5
 
6
6
  s.rubyforge_project = 'r-l-a'
@@ -31,6 +31,6 @@ Gem::Specification.new do |s|
31
31
  s.email = ['willem@railsdoctors.com', 'bart@railsdoctors.com']
32
32
  s.homepage = 'http://railsdoctors.com'
33
33
 
34
- s.files = %w(spec/unit/filter/anonymize_filter_spec.rb lib/request_log_analyzer/line_definition.rb lib/request_log_analyzer/output/html.rb lib/request_log_analyzer/controller.rb spec/fixtures/rails_22_cached.log lib/request_log_analyzer/file_format/rails_development.rb spec/lib/macros.rb spec/fixtures/merb_prefixed.log tasks/request_log_analyzer.rake spec/unit/file_format/file_format_api_spec.rb spec/unit/file_format/apache_format_spec.rb spec/integration/command_line_usage_spec.rb spec/fixtures/decompression.log.bz2 lib/request_log_analyzer/log_processor.rb lib/request_log_analyzer/tracker.rb lib/request_log_analyzer/filter.rb spec/fixtures/rails_unordered.log bin/request-log-analyzer request-log-analyzer.gemspec DESIGN.rdoc spec/unit/filter/timespan_filter_spec.rb lib/request_log_analyzer/filter/field.rb lib/request_log_analyzer/tracker/frequency.rb spec/fixtures/decompression.log.gz spec/fixtures/decompression.log spec/lib/matchers.rb spec/fixtures/test_order.log lib/request_log_analyzer/output/fixed_width.rb lib/request_log_analyzer/filter/anonymize.rb spec/lib/testing_format.rb lib/request_log_analyzer/tracker/timespan.rb lib/request_log_analyzer/aggregator.rb lib/cli/progressbar.rb README.rdoc spec/fixtures/merb.log lib/request_log_analyzer/tracker/hourly_spread.rb .gitignore spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb lib/request_log_analyzer/aggregator/echo.rb spec/unit/controller/log_processor_spec.rb spec/spec_helper.rb lib/request_log_analyzer.rb Rakefile spec/unit/filter/filter_spec.rb lib/request_log_analyzer/aggregator/summarizer.rb lib/request_log_analyzer/file_format/rails.rb spec/fixtures/test_language_combined.log spec/fixtures/decompression.tar.gz spec/unit/filter/field_filter_spec.rb spec/spec.opts lib/request_log_analyzer/aggregator/database.rb lib/request_log_analyzer/filter/timespan.rb lib/request_log_analyzer/source/log_parser.rb spec/fixtures/decompression.tgz spec/unit/tracker/timespan_tracker_spec.rb spec/unit/tracker/hourly_spread_spec.rb spec/fixtures/apache.log spec/fixtures/header_and_footer.log lib/cli/tools.rb lib/request_log_analyzer/file_format/merb.rb spec/fixtures/multiple_files_1.log spec/unit/file_format/merb_format_spec.rb spec/unit/file_format/line_definition_spec.rb lib/request_log_analyzer/source.rb lib/request_log_analyzer/request.rb spec/unit/controller/controller_spec.rb lib/request_log_analyzer/output.rb lib/request_log_analyzer/file_format/apache.rb spec/lib/helpers.rb spec/fixtures/rails_1x.log spec/lib/mocks.rb spec/fixtures/decompression.log.zip spec/unit/source/request_spec.rb spec/unit/source/log_parser_spec.rb spec/unit/aggregator/database_spec.rb spec/fixtures/test_file_format.log lib/request_log_analyzer/source/database.rb tasks/github-gem.rake lib/request_log_analyzer/tracker/duration.rb lib/request_log_analyzer/file_format.rb spec/unit/aggregator/summarizer_spec.rb spec/fixtures/rails_22.log spec/fixtures/multiple_files_2.log spec/fixtures/syslog_1x.log LICENSE spec/unit/tracker/frequency_tracker_spec.rb spec/unit/file_format/rails_format_spec.rb lib/cli/command_line_arguments.rb)
34
+ s.files = %w(spec/unit/filter/anonymize_filter_spec.rb lib/request_log_analyzer/line_definition.rb lib/request_log_analyzer/output/html.rb lib/request_log_analyzer/controller.rb spec/fixtures/rails_22_cached.log lib/request_log_analyzer/file_format/rails_development.rb spec/lib/macros.rb spec/fixtures/apache_combined.log spec/fixtures/apache_common.log spec/fixtures/merb_prefixed.log tasks/request_log_analyzer.rake spec/unit/file_format/file_format_api_spec.rb spec/unit/file_format/apache_format_spec.rb spec/integration/command_line_usage_spec.rb spec/fixtures/decompression.log.bz2 lib/request_log_analyzer/log_processor.rb lib/request_log_analyzer/tracker.rb lib/request_log_analyzer/filter.rb spec/fixtures/rails_unordered.log bin/request-log-analyzer request-log-analyzer.gemspec DESIGN.rdoc spec/unit/filter/timespan_filter_spec.rb lib/request_log_analyzer/filter/field.rb lib/request_log_analyzer/tracker/frequency.rb spec/fixtures/decompression.log.gz spec/fixtures/decompression.log spec/lib/matchers.rb spec/fixtures/test_order.log lib/request_log_analyzer/output/fixed_width.rb lib/request_log_analyzer/filter/anonymize.rb spec/lib/testing_format.rb lib/request_log_analyzer/tracker/timespan.rb lib/request_log_analyzer/aggregator.rb lib/cli/progressbar.rb README.rdoc spec/fixtures/merb.log lib/request_log_analyzer/tracker/hourly_spread.rb .gitignore spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb lib/request_log_analyzer/aggregator/echo.rb spec/unit/controller/log_processor_spec.rb spec/spec_helper.rb lib/request_log_analyzer.rb Rakefile spec/unit/filter/filter_spec.rb lib/request_log_analyzer/aggregator/summarizer.rb lib/request_log_analyzer/file_format/rails.rb spec/fixtures/test_language_combined.log spec/fixtures/decompression.tar.gz spec/unit/filter/field_filter_spec.rb spec/spec.opts lib/request_log_analyzer/aggregator/database.rb lib/request_log_analyzer/filter/timespan.rb lib/request_log_analyzer/source/log_parser.rb spec/fixtures/decompression.tgz spec/unit/tracker/timespan_tracker_spec.rb spec/unit/tracker/hourly_spread_spec.rb spec/fixtures/header_and_footer.log lib/cli/tools.rb lib/request_log_analyzer/file_format/merb.rb spec/fixtures/multiple_files_1.log spec/unit/file_format/merb_format_spec.rb spec/unit/file_format/line_definition_spec.rb lib/request_log_analyzer/source.rb lib/request_log_analyzer/request.rb spec/unit/controller/controller_spec.rb lib/request_log_analyzer/output.rb lib/request_log_analyzer/file_format/apache.rb spec/lib/helpers.rb spec/fixtures/rails_1x.log spec/lib/mocks.rb spec/fixtures/decompression.log.zip spec/unit/source/request_spec.rb spec/unit/source/log_parser_spec.rb spec/unit/aggregator/database_spec.rb spec/fixtures/test_file_format.log lib/request_log_analyzer/source/database.rb tasks/github-gem.rake lib/request_log_analyzer/tracker/duration.rb lib/request_log_analyzer/file_format.rb spec/unit/aggregator/summarizer_spec.rb spec/fixtures/rails_22.log spec/fixtures/multiple_files_2.log spec/fixtures/syslog_1x.log LICENSE spec/unit/tracker/frequency_tracker_spec.rb spec/unit/file_format/rails_format_spec.rb lib/cli/command_line_arguments.rb)
35
35
  s.test_files = %w(spec/unit/filter/anonymize_filter_spec.rb spec/unit/file_format/file_format_api_spec.rb spec/unit/file_format/apache_format_spec.rb spec/integration/command_line_usage_spec.rb spec/unit/filter/timespan_filter_spec.rb spec/unit/tracker/tracker_api_spec.rb spec/unit/tracker/duration_tracker_spec.rb spec/unit/controller/log_processor_spec.rb spec/unit/filter/filter_spec.rb spec/unit/filter/field_filter_spec.rb spec/unit/tracker/timespan_tracker_spec.rb spec/unit/tracker/hourly_spread_spec.rb spec/unit/file_format/merb_format_spec.rb spec/unit/file_format/line_definition_spec.rb spec/unit/controller/controller_spec.rb spec/unit/source/request_spec.rb spec/unit/source/log_parser_spec.rb spec/unit/aggregator/database_spec.rb spec/unit/aggregator/summarizer_spec.rb spec/unit/tracker/frequency_tracker_spec.rb spec/unit/file_format/rails_format_spec.rb)
36
36
  end
@@ -0,0 +1,10 @@
1
+ 1.56.136.157 - - [08/Sep/2009:07:54:07 -0400] "GET /form_configurations/show.flashxml HTTP/1.1" 304 -
2
+ 1.72.56.31 - - [08/Sep/2009:07:54:07 -0400] "GET /users/M17286/projects.xml?per_page=8000 HTTP/1.1" 404 1
3
+ 1.82.235.29 - - [08/Sep/2009:07:54:05 -0400] "GET /gallery/fresh?page=23&per_page=16 HTTP/1.1" 200 23414
4
+ 1.56.136.157 - - [08/Sep/2009:07:54:08 -0400] "GET /designs/20110457.flashxml HTTP/1.1" 304 -
5
+ 1.56.136.157 - - [08/Sep/2009:07:54:08 -0400] "GET /object_libraries/1.flashxml HTTP/1.1" 304 -
6
+ 1.249.68.72 - - [08/Sep/2009:07:54:09 -0400] "GET /projects/18182835-my-first-project HTTP/1.1" 200 10435
7
+ 1.108.106.20 - - [08/Sep/2009:07:54:09 -0400] "GET /login HTTP/1.1" 200 9522
8
+ 1.129.119.13 - - [08/Sep/2009:07:54:09 -0400] "GET /profile/18543424 HTTP/1.0" 200 8223
9
+ 1.158.151.25 - - [08/Sep/2009:07:54:09 -0400] "GET /projects/18236114-home/floors/18252888-/designs/19406560-home-1 HTTP/1.1" 200 10434
10
+ 1.29.137.1 - - [08/Sep/2009:07:54:10 -0400] "GET /assets/custom/blah/images/print_logo.jpg HTTP/1.1" 200 10604
@@ -55,13 +55,13 @@ describe RequestLogAnalyzer, 'running from command line' do
55
55
  output.all? { |line| /^[\x00-\x7F]*$/ =~ line }.should be_true
56
56
  end
57
57
 
58
- it "should parse a Merb file if --apache-format is set" do
58
+ it "should parse a Merb file if --format merb is set" do
59
59
  output = run("#{log_fixture(:merb)} --format merb")
60
60
  output.detect { |line| /Parsed requests\:\s*11/ =~ line }.should_not be_nil
61
61
  end
62
62
 
63
- it "should parse a Apache access log file if --format merb is set" do
64
- output = run("#{log_fixture(:apache)} --apache-format combined")
63
+ it "should parse a Apache access log file if --apache-format is set" do
64
+ output = run("#{log_fixture(:apache_combined)} --apache-format combined")
65
65
  output.detect { |line| /Parsed requests\:\s*5/ =~ line }.should_not be_nil
66
66
  end
67
67
 
@@ -4,7 +4,7 @@ describe RequestLogAnalyzer::FileFormat::Apache do
4
4
 
5
5
  describe '.access_line_definition' do
6
6
  before(:each) do
7
- @format_string = '%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i"'
7
+ @format_string = '%h %l %u %t "%r" %>s %b "%{Referer}i" "%{User-agent}i" %T'
8
8
  @line_definition = RequestLogAnalyzer::FileFormat::Apache.access_line_definition(@format_string)
9
9
  end
10
10
 
@@ -13,7 +13,7 @@ describe RequestLogAnalyzer::FileFormat::Apache do
13
13
  end
14
14
 
15
15
  it "should create a list of captures for the values in the lines" do
16
- @line_definition.captures.should be_kind_of(Array)
16
+ @line_definition.captures.should have(12).items
17
17
  end
18
18
 
19
19
  it "should make it a header line" do
@@ -23,6 +23,10 @@ describe RequestLogAnalyzer::FileFormat::Apache do
23
23
  it "should make it a footer line" do
24
24
  @line_definition.should be_footer
25
25
  end
26
+
27
+ it "should capture :duration" do
28
+ @line_definition.captures?(:duration).should be_true
29
+ end
26
30
  end
27
31
 
28
32
  describe '.create' do
@@ -33,7 +37,7 @@ describe RequestLogAnalyzer::FileFormat::Apache do
33
37
  end
34
38
 
35
39
  it "should create the :access line definition" do
36
- @format.should have_line_definition(:access).capturing(:timestamp, :ip_address, :http_method, :path, :http_version, :http_status)
40
+ @format.should have_line_definition(:access).capturing(:timestamp, :remote_host, :bytes_sent, :http_method, :path, :http_version, :http_status)
37
41
  end
38
42
 
39
43
  it "should be a valid file format" do
@@ -45,12 +49,64 @@ describe RequestLogAnalyzer::FileFormat::Apache do
45
49
  end
46
50
  end
47
51
 
48
- context 'log parsing' do
52
+ context '"Common" access log parsing' do
53
+ before(:all) do
54
+ @file_format = RequestLogAnalyzer::FileFormat.load(:apache, :common)
55
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(@file_format)
56
+ @sample_1 = '1.129.119.13 - - [08/Sep/2009:07:54:09 -0400] "GET /profile/18543424 HTTP/1.0" 200 8223'
57
+ @sample_2 = '1.82.235.29 - - [08/Sep/2009:07:54:05 -0400] "GET /gallery/fresh?page=23&per_page=16 HTTP/1.1" 200 23414'
58
+ end
49
59
 
50
- before(:each) do
51
- @file_format = RequestLogAnalyzer::FileFormat.load(:apache)
60
+ it "should have a valid language definitions" do
61
+ @file_format.should be_valid
62
+ end
63
+
64
+ it "should parse a valid access log line" do
65
+ @file_format.line_definitions[:access].matches(@sample_1).should be_kind_of(Hash)
66
+ end
67
+
68
+ it "should not parse a valid access log line" do
69
+ @file_format.line_definitions[:access].matches('addasdsasadadssadasd').should be_false
70
+ end
71
+
72
+ it "should read the correct values from a valid HTTP/1.0 access log line" do
73
+ @log_parser.parse_io(@sample_1) do |request|
74
+ request[:remote_host].should == '1.129.119.13'
75
+ request[:timestamp].should == 20090908075409
76
+ request[:http_status].should == 200
77
+ request[:http_method].should == 'GET'
78
+ request[:http_version].should == '1.0'
79
+ request[:bytes_sent].should == 8223
80
+ request[:user].should == nil
81
+ end
82
+ end
83
+
84
+ it "should read the correct values from a valid 200 access log line" do
85
+ @log_parser.parse_io(@sample_2) do |request|
86
+ request[:remote_host].should == '1.82.235.29'
87
+ request[:timestamp].should == 20090908075405
88
+ request[:http_status].should == 200
89
+ request[:http_method].should == 'GET'
90
+ request[:http_version].should == '1.1'
91
+ request[:bytes_sent].should == 23414
92
+ request[:user].should == nil
93
+ end
94
+ end
95
+
96
+ it "should parse 10 request from fixture access log" do
97
+ counter = mock('counter')
98
+ counter.should_receive(:hit!).exactly(10).times
99
+ @log_parser.parse_file(log_fixture(:apache_common)) { counter.hit! }
100
+ end
101
+ end
102
+
103
+ context '"Combined" access log parsing' do
104
+
105
+ before(:all) do
106
+ @file_format = RequestLogAnalyzer::FileFormat.load(:apache, :combined)
52
107
  @log_parser = RequestLogAnalyzer::Source::LogParser.new(@file_format)
53
- @sample = '69.41.0.45 - - [02/Sep/2009:12:02:40 +0200] "GET //phpMyAdmin/ HTTP/1.1" 404 209 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"'
108
+ @sample_1 = '69.41.0.45 - - [02/Sep/2009:12:02:40 +0200] "GET //phpMyAdmin/ HTTP/1.1" 404 209 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)"'
109
+ @sample_2 = '10.0.1.1 - - [02/Sep/2009:05:08:33 +0200] "GET / HTTP/1.1" 200 30 "-" "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9"'
54
110
  end
55
111
 
56
112
  it "should have a valid language definitions" do
@@ -58,23 +114,45 @@ describe RequestLogAnalyzer::FileFormat::Apache do
58
114
  end
59
115
 
60
116
  it "should parse a valid access log line" do
61
- @file_format.line_definitions[:access].matches(@sample).should be_kind_of(Hash)
117
+ @file_format.line_definitions[:access].matches(@sample_1).should be_kind_of(Hash)
118
+ end
119
+
120
+ it "should not parse a valid access log line" do
121
+ @file_format.line_definitions[:access].matches('addasdsasadadssadasd').should be_false
62
122
  end
63
123
 
64
- it "should read the correct values from a valid access log line" do
65
- @log_parser.parse_io(@sample) do |request|
66
- request[:ip_address].should == '69.41.0.45'
124
+ it "should read the correct values from a valid 404 access log line" do
125
+ @log_parser.parse_io(@sample_1) do |request|
126
+ request[:remote_host].should == '69.41.0.45'
67
127
  request[:timestamp].should == 20090902120240
68
128
  request[:http_status].should == 404
69
129
  request[:http_method].should == 'GET'
70
130
  request[:http_version].should == '1.1'
131
+ request[:bytes_sent].should == 209
132
+ request[:referer].should == nil
133
+ request[:user].should == nil
134
+ request[:user_agent].should == 'Mozilla/4.0 (compatible; MSIE 6.0; Windows 98)'
71
135
  end
72
136
  end
137
+
138
+ it "should read the correct values from a valid 200 access log line" do
139
+ @log_parser.parse_io(@sample_2) do |request|
140
+ request[:remote_host].should == '10.0.1.1'
141
+ request[:timestamp].should == 20090902050833
142
+ request[:http_status].should == 200
143
+ request[:http_method].should == 'GET'
144
+ request[:http_version].should == '1.1'
145
+ request[:bytes_sent].should == 30
146
+ request[:referer].should == nil
147
+ request[:user].should == nil
148
+ request[:user_agent].should == 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9'
149
+ end
150
+ end
73
151
 
74
152
  it "should parse 5 request from fixture access log" do
75
153
  counter = mock('counter')
76
154
  counter.should_receive(:hit!).exactly(5).times
77
- @log_parser.parse_file(log_fixture(:apache)) { counter.hit! }
155
+ @log_parser.parse_file(log_fixture(:apache_combined)) { counter.hit! }
78
156
  end
79
157
  end
80
158
  end
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.2.8
4
+ version: 1.2.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Willem van Bergen
@@ -51,6 +51,8 @@ files:
51
51
  - spec/fixtures/rails_22_cached.log
52
52
  - lib/request_log_analyzer/file_format/rails_development.rb
53
53
  - spec/lib/macros.rb
54
+ - spec/fixtures/apache_combined.log
55
+ - spec/fixtures/apache_common.log
54
56
  - spec/fixtures/merb_prefixed.log
55
57
  - tasks/request_log_analyzer.rake
56
58
  - spec/unit/file_format/file_format_api_spec.rb
@@ -101,7 +103,6 @@ files:
101
103
  - spec/fixtures/decompression.tgz
102
104
  - spec/unit/tracker/timespan_tracker_spec.rb
103
105
  - spec/unit/tracker/hourly_spread_spec.rb
104
- - spec/fixtures/apache.log
105
106
  - spec/fixtures/header_and_footer.log
106
107
  - lib/cli/tools.rb
107
108
  - lib/request_log_analyzer/file_format/merb.rb