request-log-analyzer 1.4.2 → 1.5.0

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,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