request-log-analyzer 1.4.2 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,35 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe RequestLogAnalyzer::FileFormat do
4
+
5
+ describe '.autodetect' do
6
+ it "should autodetect a Merb log" do
7
+ file_format = RequestLogAnalyzer::FileFormat.autodetect(log_fixture(:merb))
8
+ file_format.should be_kind_of(RequestLogAnalyzer::FileFormat::Merb)
9
+ end
10
+
11
+ it "should autodetect a MySQL slow query log" do
12
+ file_format = RequestLogAnalyzer::FileFormat.autodetect(log_fixture(:mysql_slow_query))
13
+ file_format.should be_kind_of(RequestLogAnalyzer::FileFormat::Mysql)
14
+ end
15
+
16
+ it "should autodetect a Rails 1.x log" do
17
+ file_format = RequestLogAnalyzer::FileFormat.autodetect(log_fixture(:rails_1x))
18
+ file_format.should be_kind_of(RequestLogAnalyzer::FileFormat::Rails)
19
+ end
20
+
21
+ it "should autodetect a Rails 2.x log" do
22
+ file_format = RequestLogAnalyzer::FileFormat.autodetect(log_fixture(:rails_22))
23
+ file_format.should be_kind_of(RequestLogAnalyzer::FileFormat::Rails)
24
+ end
25
+
26
+ it "should autodetect an Apache access log" do
27
+ file_format = RequestLogAnalyzer::FileFormat.autodetect(log_fixture(:apache_common))
28
+ file_format.should be_kind_of(RequestLogAnalyzer::FileFormat::Apache)
29
+ end
30
+
31
+ it "should not find any file format with a bogus file" do
32
+ RequestLogAnalyzer::FileFormat.autodetect(log_fixture(:test_order)).should be_nil
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,155 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe RequestLogAnalyzer::FileFormat::Mysql do
4
+
5
+ it "should be a valid file format" do
6
+ RequestLogAnalyzer::FileFormat.load(:mysql).should be_valid
7
+ end
8
+
9
+ describe '#parse_line' do
10
+ before(:each) do
11
+ @file_format = RequestLogAnalyzer::FileFormat.load(:mysql)
12
+ end
13
+
14
+ it "should parse a :time line correctly" do
15
+ line = '# Time: 091112 8:13:56'
16
+ line = '# Time: 091112 8:13:56'
17
+ @file_format.should parse_line(line).as(:time).and_capture(:timestamp => 20091112081356)
18
+ end
19
+
20
+ it "should parse a :user_host line correctly with IP present" do
21
+ line = '# User@Host: admin[admin] @ db1 [10.0.0.1]'
22
+ @file_format.should parse_line(line).as(:user_host).and_capture(:user => "admin", :host => 'db1', :ip => '10.0.0.1')
23
+ end
24
+
25
+ it "should parse a :user_host line correctly without a host" do
26
+ line = '# User@Host: admin[admin] @ [10.0.0.1]'
27
+ @file_format.should parse_line(line).as(:user_host).and_capture(:user => "admin", :host => '', :ip => '10.0.0.1')
28
+ end
29
+
30
+ it "should parse a :user_host line correctly with IP absent" do
31
+ line = '# User@Host: root[root] @ localhost []'
32
+ @file_format.should parse_line(line).as(:user_host).and_capture(:user => "root", :host => 'localhost', :ip => "")
33
+ end
34
+
35
+ it "should parse a :query_statistics line" do
36
+ line = '# Query_time: 10 Lock_time: 0 Rows_sent: 1191307 Rows_examined: 1191307'
37
+ @file_format.should parse_line(line).as(:query_statistics).and_capture(:query_time => 10.0,
38
+ :lock_time => 0.0, :rows_sent => 1191307, :rows_examined => 1191307)
39
+ end
40
+
41
+ it "should parse a :query_statistics line with floating point durations" do
42
+ line = '# Query_time: 10.00000 Lock_time: 0.00000 Rows_sent: 1191307 Rows_examined: 1191307'
43
+ @file_format.should parse_line(line).as(:query_statistics).and_capture(:query_time => 10.0,
44
+ :lock_time => 0.0, :rows_sent => 1191307, :rows_examined => 1191307)
45
+ end
46
+
47
+ it "should parse a :query_part line" do
48
+ line = ' AND clients.index > 0'
49
+ @file_format.should parse_line(line).as(:query_part).and_capture(:query_fragment => line)
50
+ end
51
+
52
+ it "should parse a final :query line" do
53
+ line = 'SELECT /*!40001 SQL_NO_CACHE */ * FROM `events`; '
54
+ @file_format.should parse_line(line).as(:query).and_capture(:query =>
55
+ 'SELECT /*!:int SQL_NO_CACHE */ * FROM events')
56
+ end
57
+
58
+ it "should parse a :use_database line" do
59
+ line = 'use db;'
60
+ @file_format.should parse_line(line).as(:use_database).and_capture(:database => 'db')
61
+ end
62
+
63
+ it "should not parse a SET timestamp line" do
64
+ line = 'SET timestamp=1250651725;'
65
+ @file_format.should_not parse_line(line)
66
+ end
67
+
68
+ it "should not parse a SET insert_id line" do
69
+ line = 'SET insert_id=1250651725;'
70
+ @file_format.should_not parse_line(line)
71
+ end
72
+
73
+ it "should not parse a SET timestamp, insert_id line" do
74
+ line = 'SET timestamp=1250651725, insert_id=45674;'
75
+ @file_format.should_not parse_line(line)
76
+ end
77
+
78
+
79
+ end
80
+
81
+ describe '#parse_io' do
82
+ before(:each) do
83
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat.load(:mysql))
84
+ end
85
+
86
+ it "should parse a single line query entry correctly" do
87
+ fixture = <<EOS
88
+ # Time: 091112 18:13:56
89
+ # User@Host: admin[admin] @ db1 [10.0.0.1]
90
+ # Query_time: 10 Lock_time: 0 Rows_sent: 1191307 Rows_examined: 1191307
91
+ SELECT /*!40001 SQL_NO_CACHE */ * FROM `events`;
92
+ EOS
93
+ @log_parser.parse_io(StringIO.new(fixture)) do |request|
94
+ request.should be_kind_of(RequestLogAnalyzer::FileFormat::Mysql::Request)
95
+ request[:query].should == 'SELECT /*!:int SQL_NO_CACHE */ * FROM events'
96
+ end
97
+ end
98
+
99
+ it "should parse a multiline query entry correctly" do
100
+ fixture = <<EOS
101
+ # Time: 091112 18:13:56
102
+ # User@Host: admin[admin] @ db1 [10.0.0.1]
103
+ # Query_time: 10 Lock_time: 0 Rows_sent: 1191307 Rows_examined: 1191307
104
+ SELECT * FROM `clients` WHERE (1=1
105
+ AND clients.valid_from < '2009-12-05' AND (clients.valid_to IS NULL or clients.valid_to > '2009-11-20')
106
+ AND clients.index > 0
107
+ ) AND (clients.deleted_at IS NULL);
108
+ EOS
109
+ @log_parser.parse_io(StringIO.new(fixture)) do |request|
110
+ request.should be_kind_of(RequestLogAnalyzer::FileFormat::Mysql::Request)
111
+ request[:query].should == "SELECT * FROM clients WHERE (:int=:int AND clients.valid_from < :date AND (clients.valid_to IS NULL or clients.valid_to > :date) AND clients.index > :int ) AND (clients.deleted_at IS NULL)"
112
+ end
113
+ end
114
+
115
+ it "should parse a request without timestamp correctly" do
116
+ fixture = <<EOS
117
+ # User@Host: admin[admin] @ db1 [10.0.0.1]
118
+ # Query_time: 10 Lock_time: 0 Rows_sent: 1191307 Rows_examined: 1191307
119
+ SELECT /*!40001 SQL_NO_CACHE */ * FROM `events`;
120
+ EOS
121
+ request_counter.should_receive(:hit!).once
122
+ @log_parser.should_not_receive(:warn)
123
+
124
+ @log_parser.parse_io(StringIO.new(fixture)) do |request|
125
+ request_counter.hit! if request.kind_of?(RequestLogAnalyzer::FileFormat::Mysql::Request) && request.completed?
126
+ end
127
+ end
128
+
129
+ it "should parse a query with context information correctly" do
130
+ fixture = <<EOS
131
+ # Time: 091112 18:13:56
132
+ # User@Host: admin[admin] @ db1 [10.0.0.1]
133
+ # Query_time: 10 Lock_time: 0 Rows_sent: 1191307 Rows_examined: 1191307
134
+ use database_name;
135
+ SET timestamp=4324342342423, insert_id = 224253443;
136
+ SELECT /*!40001 SQL_NO_CACHE */ * FROM `events`;
137
+ EOS
138
+
139
+ request_counter.should_receive(:hit!).once
140
+ @log_parser.should_not_receive(:warn)
141
+
142
+ @log_parser.parse_io(StringIO.new(fixture)) do |request|
143
+ request_counter.hit! if request.kind_of?(RequestLogAnalyzer::FileFormat::Mysql::Request) && request.completed?
144
+ request[:query].should == 'SELECT /*!:int SQL_NO_CACHE */ * FROM events'
145
+ end
146
+
147
+ end
148
+
149
+
150
+ it "should find 26 completed sloq query entries" do
151
+ @log_parser.should_receive(:handle_request).exactly(26).times
152
+ @log_parser.parse_file(log_fixture(:mysql_slow_query))
153
+ end
154
+ end
155
+ end
@@ -2,6 +2,18 @@ require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
3
  describe RequestLogAnalyzer::Mailer, 'mailer' do
4
4
 
5
+ it "should initialize correctly" do
6
+ @mailer = RequestLogAnalyzer::Mailer.new('alfa@beta.com', 'localhost', :debug => true)
7
+ @mailer.host.should eql("localhost")
8
+ @mailer.port.should eql(25)
9
+ end
10
+
11
+ it "should allow alternate port settings" do
12
+ @mailer = RequestLogAnalyzer::Mailer.new('alfa@beta.com', 'localhost:2525', :debug => true)
13
+ @mailer.host.should eql("localhost")
14
+ @mailer.port.should eql("2525")
15
+ end
16
+
5
17
  it "should store printed data" do
6
18
  @mailer = RequestLogAnalyzer::Mailer.new('alfa@beta.com', 'localhost', :debug => true)
7
19
 
@@ -0,0 +1,123 @@
1
+ require File.dirname(__FILE__) + '/../../spec_helper'
2
+
3
+ describe RequestLogAnalyzer::Tracker::Count do
4
+
5
+ context 'static category' do
6
+ before(:each) do
7
+ @tracker = RequestLogAnalyzer::Tracker::Count.new(:category => :category, :field => :blah)
8
+ @tracker.prepare
9
+ end
10
+
11
+ it "should register a request in the right category" do
12
+ @tracker.update(request(:category => 'a', :blah => 2))
13
+ @tracker.categories.should include('a')
14
+ end
15
+
16
+ it "should register requests in the right category" do
17
+ @tracker.update(request(:category => 'a', :blah => 2))
18
+ @tracker.update(request(:category => 'b', :blah => 2))
19
+ @tracker.update(request(:category => 'b', :blah => 2))
20
+
21
+ @tracker.categories['a'][:sum].should == 2
22
+ @tracker.categories['b'][:sum].should == 4
23
+ end
24
+ end
25
+
26
+
27
+ context 'dynamic category' do
28
+ before(:each) do
29
+ @categorizer = Proc.new { |request| request[:duration] > 0.2 ? 'slow' : 'fast' }
30
+ @tracker = RequestLogAnalyzer::Tracker::Count.new(:category => @categorizer, :field => :blah)
31
+ @tracker.prepare
32
+ end
33
+
34
+ it "should use the categorizer to determine the right category" do
35
+ @tracker.update(request(:category => 'a', :duration => 0.2, :blah => 2))
36
+ @tracker.update(request(:category => 'b', :duration => 0.3, :blah => 2))
37
+ @tracker.update(request(:category => 'b', :duration => 0.4, :blah => 2))
38
+
39
+ @tracker.categories['fast'][:sum].should == 2
40
+ @tracker.categories['slow'][:sum].should == 4
41
+ end
42
+ end
43
+
44
+ describe '#report' do
45
+ before(:each) do
46
+ @tracker = RequestLogAnalyzer::Tracker::Count.new(:category => :category, :field => :blah)
47
+ @tracker.prepare
48
+ end
49
+
50
+ it "should generate a report without errors when one category is present" do
51
+ @tracker.update(request(:category => 'a', :blah => 2))
52
+ lambda { @tracker.report(mock_output) }.should_not raise_error
53
+ end
54
+
55
+ it "should generate a report without errors when no category is present" do
56
+ lambda { @tracker.report(mock_output) }.should_not raise_error
57
+ end
58
+
59
+ it "should generate a report without errors when multiple categories are present" do
60
+ @tracker.update(request(:category => 'a', :blah => 2))
61
+ @tracker.update(request(:category => 'b', :blah => 2))
62
+ lambda { @tracker.report(mock_output) }.should_not raise_error
63
+ end
64
+ end
65
+
66
+ describe '#to_yaml_object' do
67
+ before(:each) do
68
+ @tracker = RequestLogAnalyzer::Tracker::Count.new(:category => :category, :field => :blah)
69
+ @tracker.prepare
70
+ end
71
+
72
+ it "should generate a YAML output" do
73
+ @tracker.update(request(:category => 'a', :blah => 2))
74
+ @tracker.update(request(:category => 'b', :blah => 3))
75
+ @tracker.to_yaml_object.should == {"a"=>{:min=>2, :hits=>1, :max=>2, :mean=>2.0, :sum=>2, :sum_of_squares=>0.0}, "b"=>{:min=>3, :hits=>1, :max=>3, :mean=>3.0, :sum=>3, :sum_of_squares=>0.0}}
76
+ end
77
+ end
78
+
79
+ describe '#display_value' do
80
+ before(:each) do
81
+ @tracker = RequestLogAnalyzer::Tracker::Count.new(:category => :category, :field => :blah)
82
+ @tracker.prepare
83
+ end
84
+
85
+ it "should not crash on nil" do
86
+ lambda { @tracker.display_value(nil) }.should_not raise_error
87
+ @tracker.display_value(nil).should_not be_nil
88
+ @tracker.display_value(nil).should_not eql("")
89
+ end
90
+
91
+ it "should not touch thousands" do
92
+ @tracker.display_value(1000).should eql('1000 ')
93
+ @tracker.display_value(5000).should eql('5000 ')
94
+ @tracker.display_value(9001).should eql('9001 ')
95
+ end
96
+
97
+ it "should reduce milions to thousands (k)" do
98
+ @tracker.display_value(1000_000).should eql('1000k')
99
+ @tracker.display_value(5000_000).should eql('5000k')
100
+ @tracker.display_value(9000_001).should eql('9000k')
101
+ end
102
+
103
+ it "should reduce giga to millons (M)" do
104
+ @tracker.display_value(1000_000_000).should eql('1000M')
105
+ @tracker.display_value(5000_000_000).should eql('5000M')
106
+ @tracker.display_value(9000_000_001).should eql('9000M')
107
+ end
108
+
109
+ it "should reduce teras to gigas (G)" do
110
+ @tracker.display_value(1000_000_000_000).should eql('1000G')
111
+ @tracker.display_value(5000_000_000_000).should eql('5000G')
112
+ @tracker.display_value(9000_000_001_001).should eql('9000G')
113
+ end
114
+
115
+ it "should reduce petas to teras (T)" do
116
+ @tracker.display_value(1000_000_000_000_000).should eql('1000T')
117
+ @tracker.display_value(5000_000_000_000_000).should eql('5000T')
118
+ @tracker.display_value(9000_000_001_001_000).should eql('9000T')
119
+ end
120
+ end
121
+
122
+
123
+ 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.4.2
4
+ version: 1.5.0
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-10-09 00:00:00 +02:00
13
+ date: 2009-11-18 00:00:00 +01:00
14
14
  default_executable: request-log-analyzer
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -44,117 +44,124 @@ extensions: []
44
44
  extra_rdoc_files:
45
45
  - README.rdoc
46
46
  files:
47
- - spec/unit/filter/anonymize_filter_spec.rb
48
- - spec/fixtures/rails_22_cached.log
49
- - lib/request_log_analyzer/line_definition.rb
50
47
  - lib/request_log_analyzer/output/html.rb
51
- - lib/request_log_analyzer/controller.rb
52
- - spec/lib/macros.rb
48
+ - spec/unit/tracker/hourly_spread_spec.rb
49
+ - DESIGN.rdoc
50
+ - spec/fixtures/rails_unordered.log
51
+ - spec/fixtures/multiple_files_1.log
52
+ - lib/request_log_analyzer/database/source.rb
53
+ - README.rdoc
54
+ - spec/unit/file_format/amazon_s3_format_spec.rb
53
55
  - lib/request_log_analyzer/file_format/rails_development.rb
54
- - spec/fixtures/apache_combined.log
55
- - spec/fixtures/apache_common.log
56
- - spec/fixtures/merb_prefixed.log
57
- - lib/request_log_analyzer/file_format/amazon_s3.rb
58
- - tasks/request_log_analyzer.rake
59
- - spec/unit/file_format/file_format_api_spec.rb
60
- - spec/unit/file_format/apache_format_spec.rb
61
- - spec/integration/command_line_usage_spec.rb
62
- - lib/request_log_analyzer/database.rb
56
+ - spec/fixtures/rails_22.log
57
+ - spec/fixtures/test_order.log
58
+ - spec/unit/database/base_class_spec.rb
59
+ - lib/request_log_analyzer/database/connection.rb
60
+ - lib/request_log_analyzer/aggregator.rb
61
+ - spec/fixtures/decompression.log
62
+ - lib/request_log_analyzer/file_format/apache.rb
63
+ - spec/fixtures/decompression.log.gz
64
+ - lib/request_log_analyzer/tracker/frequency.rb
65
+ - lib/request_log_analyzer/tracker/duration.rb
66
+ - tasks/github-gem.rake
67
+ - .gitignore
68
+ - spec/unit/filter/filter_spec.rb
69
+ - spec/lib/macros.rb
70
+ - spec/spec_helper.rb
71
+ - spec/unit/tracker/count_tracker_spec.rb
63
72
  - spec/fixtures/decompression.log.bz2
64
- - spec/fixtures/rails_unordered.log
65
- - lib/request_log_analyzer/log_processor.rb
66
- - lib/request_log_analyzer/tracker.rb
73
+ - spec/unit/database/connection_spec.rb
67
74
  - lib/request_log_analyzer/filter.rb
68
- - bin/request-log-analyzer
69
- - request-log-analyzer.gemspec
70
- - DESIGN.rdoc
75
+ - spec/integration/scout_spec.rb
76
+ - spec/fixtures/test_file_format.log
77
+ - lib/request_log_analyzer/tracker/traffic.rb
78
+ - spec/unit/file_format/merb_format_spec.rb
79
+ - spec/unit/file_format/format_autodetection_spec.rb
71
80
  - spec/unit/filter/timespan_filter_spec.rb
72
- - spec/unit/aggregator/database_inserter_spec.rb
73
- - spec/lib/matchers.rb
81
+ - spec/unit/file_format/file_format_api_spec.rb
74
82
  - lib/request_log_analyzer/filter/field.rb
75
- - lib/request_log_analyzer/tracker/frequency.rb
76
- - spec/fixtures/decompression.log.gz
77
- - spec/fixtures/decompression.log
78
- - spec/lib/testing_format.rb
79
- - spec/fixtures/test_order.log
83
+ - lib/request_log_analyzer/file_format/merb.rb
84
+ - lib/request_log_analyzer/filter/anonymize.rb
85
+ - lib/request_log_analyzer/file_format/amazon_s3.rb
86
+ - lib/cli/database_console.rb
87
+ - spec/integration/mailer_spec.rb
88
+ - lib/request_log_analyzer/line_definition.rb
89
+ - spec/unit/tracker/frequency_tracker_spec.rb
90
+ - spec/fixtures/multiple_files_2.log
91
+ - spec/lib/mocks.rb
92
+ - spec/unit/file_format/apache_format_spec.rb
93
+ - spec/fixtures/syslog_1x.log
94
+ - spec/integration/munin_plugins_rails_spec.rb
95
+ - spec/lib/helpers.rb
80
96
  - spec/fixtures/rails.db
97
+ - spec/unit/source/log_parser_spec.rb
98
+ - lib/request_log_analyzer/aggregator/database_inserter.rb
99
+ - spec/fixtures/header_and_footer.log
100
+ - spec/lib/testing_format.rb
101
+ - lib/request_log_analyzer/database.rb
102
+ - spec/unit/file_format/rails_format_spec.rb
103
+ - lib/request_log_analyzer/request.rb
81
104
  - lib/request_log_analyzer/output/fixed_width.rb
82
- - lib/request_log_analyzer/filter/anonymize.rb
83
- - lib/request_log_analyzer/tracker/timespan.rb
84
- - lib/request_log_analyzer/database/base.rb
85
- - lib/request_log_analyzer/aggregator.rb
105
+ - spec/integration/command_line_usage_spec.rb
106
+ - lib/request_log_analyzer/file_format/rack.rb
107
+ - spec/fixtures/test_language_combined.log
108
+ - lib/cli/command_line_arguments.rb
109
+ - lib/request_log_analyzer.rb
110
+ - spec/database.yml
86
111
  - spec/unit/request_spec.rb
112
+ - lib/request_log_analyzer/database/base.rb
113
+ - spec/unit/aggregator/database_inserter_spec.rb
114
+ - lib/request_log_analyzer/database/request.rb
115
+ - lib/cli/database_console_init.rb
87
116
  - lib/cli/progressbar.rb
88
- - lib/request_log_analyzer/mailer.rb
89
- - README.rdoc
90
117
  - lib/request_log_analyzer/database/warning.rb
91
- - spec/fixtures/merb.log
92
- - lib/request_log_analyzer/tracker/hourly_spread.rb
93
- - .gitignore
94
- - spec/unit/tracker/tracker_api_spec.rb
95
- - spec/unit/tracker/duration_tracker_spec.rb
96
- - spec/unit/file_format/amazon_s3_format_spec.rb
97
- - spec/integration/scout_spec.rb
98
- - lib/request_log_analyzer/aggregator/echo.rb
99
- - spec/unit/mailer_spec.rb
100
- - spec/unit/controller/log_processor_spec.rb
101
- - spec/spec_helper.rb
102
- - lib/request_log_analyzer.rb
103
- - spec/database.yml
104
- - Rakefile
105
- - lib/request_log_analyzer/database/connection.rb
106
- - spec/unit/filter/filter_spec.rb
107
- - spec/fixtures/test_language_combined.log
108
- - lib/request_log_analyzer/aggregator/database_inserter.rb
118
+ - spec/unit/filter/anonymize_filter_spec.rb
119
+ - spec/fixtures/apache_combined.log
120
+ - spec/fixtures/rails_22_cached.log
109
121
  - lib/request_log_analyzer/aggregator/summarizer.rb
110
- - lib/request_log_analyzer/file_format/rack.rb
111
- - lib/request_log_analyzer/database/source.rb
122
+ - spec/unit/tracker/duration_tracker_spec.rb
123
+ - spec/fixtures/rails_1x.log
124
+ - lib/request_log_analyzer/tracker/count.rb
125
+ - lib/request_log_analyzer/output.rb
126
+ - spec/unit/file_format/line_definition_spec.rb
127
+ - lib/request_log_analyzer/file_format/mysql.rb
128
+ - spec/unit/file_format/mysql_format_spec.rb
129
+ - request-log-analyzer.gemspec
130
+ - spec/fixtures/apache_common.log
112
131
  - lib/request_log_analyzer/file_format/rails.rb
113
- - spec/fixtures/decompression.tar.gz
132
+ - Rakefile
133
+ - spec/unit/mailer_spec.rb
134
+ - lib/request_log_analyzer/tracker/hourly_spread.rb
135
+ - spec/unit/aggregator/summarizer_spec.rb
114
136
  - spec/unit/tracker/traffic_tracker_spec.rb
137
+ - lib/request_log_analyzer/tracker/timespan.rb
138
+ - spec/unit/controller/log_processor_spec.rb
115
139
  - spec/unit/filter/field_filter_spec.rb
116
- - spec/unit/database/base_class_spec.rb
140
+ - spec/fixtures/merb_prefixed.log
141
+ - lib/request_log_analyzer/log_processor.rb
117
142
  - lib/request_log_analyzer/filter/timespan.rb
118
- - lib/request_log_analyzer/source/log_parser.rb
119
- - spec/fixtures/decompression.tgz
120
- - spec/unit/tracker/timespan_tracker_spec.rb
121
- - spec/unit/tracker/hourly_spread_spec.rb
122
- - spec/fixtures/header_and_footer.log
123
- - lib/cli/tools.rb
124
- - lib/request_log_analyzer/file_format/merb.rb
125
- - spec/fixtures/multiple_files_1.log
126
- - spec/unit/file_format/merb_format_spec.rb
127
- - spec/unit/file_format/line_definition_spec.rb
128
- - lib/request_log_analyzer/source.rb
129
- - lib/request_log_analyzer/request.rb
130
- - lib/cli/database_console.rb
131
- - spec/unit/database/connection_spec.rb
132
143
  - spec/unit/controller/controller_spec.rb
133
- - spec/lib/mocks.rb
134
- - spec/lib/helpers.rb
135
- - spec/fixtures/rails_1x.log
136
- - lib/cli/database_console_init.rb
137
- - lib/request_log_analyzer/output.rb
138
- - lib/request_log_analyzer/file_format/apache.rb
139
- - spec/fixtures/decompression.log.zip
140
- - spec/unit/source/log_parser_spec.rb
141
- - spec/fixtures/test_file_format.log
142
- - tasks/github-gem.rake
143
- - spec/unit/database/database_spec.rb
144
- - spec/integration/munin_plugins_rails_spec.rb
145
- - lib/request_log_analyzer/tracker/duration.rb
146
- - lib/request_log_analyzer/tracker/traffic.rb
147
- - lib/request_log_analyzer/file_format.rb
148
- - spec/unit/aggregator/summarizer_spec.rb
149
- - spec/fixtures/syslog_1x.log
150
- - spec/fixtures/rails_22.log
151
- - lib/request_log_analyzer/database/request.rb
152
- - spec/fixtures/multiple_files_2.log
153
- - LICENSE
144
+ - lib/request_log_analyzer/mailer.rb
145
+ - lib/cli/tools.rb
146
+ - spec/fixtures/decompression.tar.gz
147
+ - spec/unit/tracker/timespan_tracker_spec.rb
148
+ - spec/lib/matchers.rb
149
+ - lib/request_log_analyzer/controller.rb
150
+ - spec/unit/tracker/tracker_api_spec.rb
154
151
  - lib/request_log_analyzer/source/database_loader.rb
155
- - spec/unit/tracker/frequency_tracker_spec.rb
156
- - spec/unit/file_format/rails_format_spec.rb
157
- - lib/cli/command_line_arguments.rb
152
+ - spec/fixtures/merb.log
153
+ - LICENSE
154
+ - lib/request_log_analyzer/file_format.rb
155
+ - tasks/request_log_analyzer.rake
156
+ - spec/unit/database/database_spec.rb
157
+ - spec/fixtures/decompression.log.zip
158
+ - spec/fixtures/decompression.tgz
159
+ - bin/request-log-analyzer
160
+ - lib/request_log_analyzer/tracker.rb
161
+ - lib/request_log_analyzer/source.rb
162
+ - spec/fixtures/mysql_slow_query.log
163
+ - lib/request_log_analyzer/source/log_parser.rb
164
+ - lib/request_log_analyzer/aggregator/echo.rb
158
165
  has_rdoc: true
159
166
  homepage: http://railsdoctors.com
160
167
  licenses: []
@@ -184,37 +191,41 @@ required_rubygems_version: !ruby/object:Gem::Requirement
184
191
  requirements:
185
192
  - To use the database inserter, ActiveRecord and an appropriate database adapter are required.
186
193
  rubyforge_project: r-l-a
187
- rubygems_version: 1.3.4
194
+ rubygems_version: 1.3.5
188
195
  signing_key:
189
196
  specification_version: 3
190
197
  summary: A command line tool to analyze request logs for Apache, Rails, Merb and other web application servers
191
198
  test_files:
192
- - spec/unit/filter/anonymize_filter_spec.rb
199
+ - spec/unit/tracker/hourly_spread_spec.rb
200
+ - spec/unit/file_format/amazon_s3_format_spec.rb
201
+ - spec/unit/database/base_class_spec.rb
202
+ - spec/unit/filter/filter_spec.rb
203
+ - spec/unit/tracker/count_tracker_spec.rb
204
+ - spec/unit/database/connection_spec.rb
205
+ - spec/integration/scout_spec.rb
206
+ - spec/unit/file_format/merb_format_spec.rb
207
+ - spec/unit/file_format/format_autodetection_spec.rb
208
+ - spec/unit/filter/timespan_filter_spec.rb
193
209
  - spec/unit/file_format/file_format_api_spec.rb
210
+ - spec/integration/mailer_spec.rb
211
+ - spec/unit/tracker/frequency_tracker_spec.rb
194
212
  - spec/unit/file_format/apache_format_spec.rb
213
+ - spec/integration/munin_plugins_rails_spec.rb
214
+ - spec/unit/source/log_parser_spec.rb
215
+ - spec/unit/file_format/rails_format_spec.rb
195
216
  - spec/integration/command_line_usage_spec.rb
196
- - spec/unit/filter/timespan_filter_spec.rb
197
- - spec/unit/aggregator/database_inserter_spec.rb
198
217
  - spec/unit/request_spec.rb
199
- - spec/unit/tracker/tracker_api_spec.rb
218
+ - spec/unit/aggregator/database_inserter_spec.rb
219
+ - spec/unit/filter/anonymize_filter_spec.rb
200
220
  - spec/unit/tracker/duration_tracker_spec.rb
201
- - spec/unit/file_format/amazon_s3_format_spec.rb
202
- - spec/integration/scout_spec.rb
221
+ - spec/unit/file_format/line_definition_spec.rb
222
+ - spec/unit/file_format/mysql_format_spec.rb
203
223
  - spec/unit/mailer_spec.rb
204
- - spec/unit/controller/log_processor_spec.rb
205
- - spec/unit/filter/filter_spec.rb
224
+ - spec/unit/aggregator/summarizer_spec.rb
206
225
  - spec/unit/tracker/traffic_tracker_spec.rb
226
+ - spec/unit/controller/log_processor_spec.rb
207
227
  - spec/unit/filter/field_filter_spec.rb
208
- - spec/unit/database/base_class_spec.rb
209
- - spec/unit/tracker/timespan_tracker_spec.rb
210
- - spec/unit/tracker/hourly_spread_spec.rb
211
- - spec/unit/file_format/merb_format_spec.rb
212
- - spec/unit/file_format/line_definition_spec.rb
213
- - spec/unit/database/connection_spec.rb
214
228
  - spec/unit/controller/controller_spec.rb
215
- - spec/unit/source/log_parser_spec.rb
229
+ - spec/unit/tracker/timespan_tracker_spec.rb
230
+ - spec/unit/tracker/tracker_api_spec.rb
216
231
  - spec/unit/database/database_spec.rb
217
- - spec/integration/munin_plugins_rails_spec.rb
218
- - spec/unit/aggregator/summarizer_spec.rb
219
- - spec/unit/tracker/frequency_tracker_spec.rb
220
- - spec/unit/file_format/rails_format_spec.rb