request-log-analyzer 1.2.0 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. data/{DESIGN → DESIGN.rdoc} +13 -10
  2. data/README.rdoc +7 -5
  3. data/RELEASE_NOTES.rdoc +10 -0
  4. data/bin/request-log-analyzer +7 -3
  5. data/lib/cli/tools.rb +2 -2
  6. data/lib/request_log_analyzer/aggregator/summarizer.rb +51 -2
  7. data/lib/request_log_analyzer/controller.rb +4 -0
  8. data/lib/request_log_analyzer/output/fixed_width.rb +36 -1
  9. data/lib/request_log_analyzer/output/html.rb +20 -2
  10. data/lib/request_log_analyzer/output.rb +36 -1
  11. data/lib/request_log_analyzer/request.rb +2 -2
  12. data/lib/request_log_analyzer/source/database.rb +19 -4
  13. data/lib/request_log_analyzer/source/log_parser.rb +26 -3
  14. data/lib/request_log_analyzer/tracker/duration.rb +49 -8
  15. data/lib/request_log_analyzer/tracker/frequency.rb +30 -7
  16. data/lib/request_log_analyzer/tracker/hourly_spread.rb +41 -15
  17. data/lib/request_log_analyzer/tracker/timespan.rb +22 -2
  18. data/lib/request_log_analyzer/tracker.rb +38 -1
  19. data/lib/request_log_analyzer.rb +2 -4
  20. data/spec/fixtures/decompression.log +12 -0
  21. data/spec/fixtures/decompression.log.bz2 +0 -0
  22. data/spec/fixtures/decompression.log.gz +0 -0
  23. data/spec/fixtures/decompression.log.zip +0 -0
  24. data/spec/fixtures/decompression.tar.gz +0 -0
  25. data/spec/fixtures/decompression.tgz +0 -0
  26. data/spec/integration/command_line_usage_spec.rb +14 -14
  27. data/spec/lib/helper.rb +19 -3
  28. data/spec/lib/testing_format.rb +1 -0
  29. data/spec/spec_helper.rb +2 -0
  30. data/spec/unit/aggregator/summarizer_spec.rb +1 -1
  31. data/spec/unit/source/log_parser_spec.rb +39 -0
  32. data/spec/unit/tracker/{tracker_api_test.rb → tracker_api_spec.rb} +7 -1
  33. data/tasks/github-gem.rake +1 -2
  34. data/tasks/request_log_analyzer.rake +23 -7
  35. metadata +16 -29
  36. data/HACKING +0 -7
data/spec/lib/helper.rb CHANGED
@@ -2,15 +2,17 @@ module RequestLogAnalyzer::Spec::Helper
2
2
 
3
3
  include RequestLogAnalyzer::Spec::Mocks
4
4
 
5
-
5
+ # Create or return a new TestingFormat
6
6
  def testing_format
7
7
  @testing_format ||= TestingFormat.new
8
8
  end
9
9
 
10
- def log_fixture(name)
11
- File.dirname(__FILE__) + "/../fixtures/#{name}.log"
10
+ # Load a log file from the fixture folder
11
+ def log_fixture(name, extention = "log")
12
+ File.dirname(__FILE__) + "/../fixtures/#{name}.#{extention}"
12
13
  end
13
14
 
15
+ # Request loopback
14
16
  def request(fields, format = testing_format)
15
17
  if fields.kind_of?(Array)
16
18
  format.request(*fields)
@@ -19,6 +21,8 @@ module RequestLogAnalyzer::Spec::Helper
19
21
  end
20
22
  end
21
23
 
24
+ # Run a specific command
25
+ # Used to call request-log-analyzer through binary
22
26
  def run(arguments)
23
27
  binary = "#{File.dirname(__FILE__)}/../../bin/request-log-analyzer"
24
28
  arguments = arguments.join(' ') if arguments.kind_of?(Array)
@@ -30,4 +34,16 @@ module RequestLogAnalyzer::Spec::Helper
30
34
  $?.exitstatus.should == 0
31
35
  output
32
36
  end
37
+
38
+ # Cleanup all temporary files generated by specs
39
+ def cleanup_temp_files!
40
+ Dir["#{File.dirname(__FILE__)}/../../tmp/spec.*tmp"].each do |file|
41
+ File.unlink(file)
42
+ end
43
+ end
44
+
45
+ # Return a filename that can be used as temporary file in specs
46
+ def temp_output_file(file_type)
47
+ "#{File.dirname(__FILE__)}/../../tmp/spec.#{file_type}.tmp"
48
+ end
33
49
  end
@@ -1,3 +1,4 @@
1
+ # Simple log file specification, used to test log parser.
1
2
  class TestingFormat < RequestLogAnalyzer::FileFormat::Base
2
3
 
3
4
  format_definition.first do |line|
data/spec/spec_helper.rb CHANGED
@@ -11,3 +11,5 @@ end
11
11
  require File.dirname(__FILE__) + '/lib/testing_format'
12
12
  require File.dirname(__FILE__) + '/lib/mocks'
13
13
  require File.dirname(__FILE__) + '/lib/helper'
14
+
15
+ Dir.mkdir("#{File.dirname(__FILE__)}/../tmp") unless File.exist?("#{File.dirname(__FILE__)}/../tmp")
@@ -24,5 +24,5 @@ describe RequestLogAnalyzer::Aggregator::Summarizer do
24
24
  it "not raise exception when creating a report after aggregating no requests" do
25
25
  lambda { @summarizer.report(mock_output) }.should_not raise_error
26
26
  end
27
-
27
+
28
28
  end
@@ -64,4 +64,43 @@ describe RequestLogAnalyzer::Source::LogParser, :warnings do
64
64
  @log_parser.should_not_receive(:handle_request)
65
65
  @log_parser.parse_file(log_fixture(:test_order))
66
66
  end
67
+ end
68
+
69
+ describe RequestLogAnalyzer::Source::LogParser, :decompression do
70
+ include RequestLogAnalyzer::Spec::Helper
71
+
72
+ before(:each) do
73
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat::Rails.new)
74
+ end
75
+
76
+ it "should parse a rails gzipped log file" do
77
+ @log_parser.should_receive(:handle_request).once
78
+ @log_parser.parse_file(log_fixture(:decompression, "log.gz"))
79
+ @log_parser.parsed_lines.should > 0
80
+ end
81
+
82
+ it "should parse a rails tar gzipped log folder" do
83
+ @log_parser.should_receive(:handle_request).twice
84
+ @log_parser.parse_file(log_fixture(:decompression, "tar.gz"))
85
+ @log_parser.parsed_lines.should > 1
86
+ end
87
+
88
+ it "should parse a rails tar gzipped log folder" do
89
+ @log_parser.should_receive(:handle_request).twice
90
+ @log_parser.parse_file(log_fixture(:decompression, "tgz"))
91
+ @log_parser.parsed_lines.should > 1
92
+ end
93
+
94
+ it "should parse a rails bz2 zipped log file" do
95
+ @log_parser.should_receive(:handle_request).once
96
+ @log_parser.parse_file(log_fixture(:decompression, "log.bz2"))
97
+ @log_parser.parsed_lines.should > 0
98
+ end
99
+
100
+ it "should parse a rails zipped log file" do
101
+ @log_parser.should_receive(:handle_request).once
102
+ @log_parser.parse_file(log_fixture(:decompression, "log.zip"))
103
+ @log_parser.parsed_lines.should > 0
104
+ end
105
+
67
106
  end
@@ -10,7 +10,7 @@ describe RequestLogAnalyzer::Tracker::Base, "API test" do
10
10
  @summarizer = RequestLogAnalyzer::Aggregator::Summarizer.new(mock_source)
11
11
  @summarizer.trackers << @tracker
12
12
  end
13
-
13
+
14
14
  it "should receive :prepare when the summarizer is preparing" do
15
15
  @tracker.should_receive(:prepare).once
16
16
  @summarizer.prepare
@@ -42,4 +42,10 @@ describe RequestLogAnalyzer::Tracker::Base, "API test" do
42
42
  @summarizer.report(mock_output)
43
43
  end
44
44
 
45
+ it "should receive :to_yaml object when finalizing" do
46
+ @summarizer.options[:dump] = temp_output_file(:dump)
47
+ @tracker.should_receive(:to_yaml_object).once
48
+ @summarizer.to_yaml
49
+ end
50
+
45
51
  end
@@ -14,8 +14,7 @@ module Rake
14
14
  def self.define_tasks!
15
15
  gem_task_builder = Rake::GithubGem.new
16
16
  gem_task_builder.register_all_tasks!
17
- end
18
-
17
+ end
19
18
 
20
19
  def initialize
21
20
  reload_gemspec!
@@ -1,10 +1,26 @@
1
- namespace :log do
2
- desc "Analyze the Rails log file using the request-log-analyzer gem."
3
- task :analyze => :environment do
1
+ namespace :rla do
2
+ desc "Analyze the Rails log file using the request-log-analyzer gem."
3
+ task :report => :environment do
4
+ puts "Analyzing the Rails log file using the request-log-analyzer gem."
5
+ puts " Environment: #{RAILS_ENV}"
6
+ puts " Logfile: #{Rails.configuration.log_path}"
7
+ puts ""
8
+ IO.popen("request-log-analyzer #{Rails.configuration.log_path}") { |io| $stdout << io.read }
9
+
10
+ end
11
+
12
+ namespace :report do
13
+ desc "Analyze the Rails log file using the request-log-analyzer gem and output an HTML file."
14
+ task :html => :environment do
15
+ output_file = Rails.configuration.log_path + ".html"
16
+
4
17
  puts "Analyzing the Rails log file using the request-log-analyzer gem."
5
- puts "Environment: #{RAILS_ENV}"
6
- puts "Logfile: #{Rails.configuration.log_path}"
18
+ puts " Environment: #{RAILS_ENV}"
19
+ puts " Logfile: #{Rails.configuration.log_path}"
20
+ puts " Output: #{output_file}"
7
21
  puts ""
8
- `request-log-analyzer #{Rails.configuration.log_path} -z`
22
+ IO.popen("request-log-analyzer #{Rails.configuration.log_path} --output HTML --file #{output_file}") { |io| $stdout << io.read }
23
+ end
9
24
  end
10
- end
25
+
26
+ 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.0
4
+ version: 1.2.1
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-06-12 00:00:00 +02:00
13
+ date: 2009-07-15 00:00:00 +02:00
14
14
  default_executable: request-log-analyzer
15
15
  dependencies: []
16
16
 
@@ -23,55 +23,49 @@ extensions: []
23
23
  extra_rdoc_files:
24
24
  - README.rdoc
25
25
  files:
26
- - DESIGN
27
- - HACKING
26
+ - DESIGN.rdoc
28
27
  - LICENSE
29
28
  - README.rdoc
29
+ - RELEASE_NOTES.rdoc
30
30
  - Rakefile
31
- - bin
32
31
  - bin/request-log-analyzer
33
- - lib
34
- - lib/cli
35
32
  - lib/cli/command_line_arguments.rb
36
33
  - lib/cli/progressbar.rb
37
34
  - lib/cli/tools.rb
38
- - lib/request_log_analyzer
39
35
  - lib/request_log_analyzer.rb
40
- - lib/request_log_analyzer/aggregator
41
36
  - lib/request_log_analyzer/aggregator.rb
42
37
  - lib/request_log_analyzer/aggregator/database.rb
43
38
  - lib/request_log_analyzer/aggregator/echo.rb
44
39
  - lib/request_log_analyzer/aggregator/summarizer.rb
45
40
  - lib/request_log_analyzer/controller.rb
46
- - lib/request_log_analyzer/file_format
47
41
  - lib/request_log_analyzer/file_format.rb
48
42
  - lib/request_log_analyzer/file_format/merb.rb
49
43
  - lib/request_log_analyzer/file_format/rails.rb
50
44
  - lib/request_log_analyzer/file_format/rails_development.rb
51
- - lib/request_log_analyzer/filter
52
45
  - lib/request_log_analyzer/filter.rb
53
46
  - lib/request_log_analyzer/filter/anonymize.rb
54
47
  - lib/request_log_analyzer/filter/field.rb
55
48
  - lib/request_log_analyzer/filter/timespan.rb
56
49
  - lib/request_log_analyzer/line_definition.rb
57
50
  - lib/request_log_analyzer/log_processor.rb
58
- - lib/request_log_analyzer/output
59
51
  - lib/request_log_analyzer/output.rb
60
52
  - lib/request_log_analyzer/output/fixed_width.rb
61
53
  - lib/request_log_analyzer/output/html.rb
62
54
  - lib/request_log_analyzer/request.rb
63
- - lib/request_log_analyzer/source
64
55
  - lib/request_log_analyzer/source.rb
65
56
  - lib/request_log_analyzer/source/database.rb
66
57
  - lib/request_log_analyzer/source/log_parser.rb
67
- - lib/request_log_analyzer/tracker
68
58
  - lib/request_log_analyzer/tracker.rb
69
59
  - lib/request_log_analyzer/tracker/duration.rb
70
60
  - lib/request_log_analyzer/tracker/frequency.rb
71
61
  - lib/request_log_analyzer/tracker/hourly_spread.rb
72
62
  - lib/request_log_analyzer/tracker/timespan.rb
73
- - spec
74
- - spec/fixtures
63
+ - spec/fixtures/decompression.log
64
+ - spec/fixtures/decompression.log.bz2
65
+ - spec/fixtures/decompression.log.gz
66
+ - spec/fixtures/decompression.log.zip
67
+ - spec/fixtures/decompression.tar.gz
68
+ - spec/fixtures/decompression.tgz
75
69
  - spec/fixtures/merb.log
76
70
  - spec/fixtures/multiple_files_1.log
77
71
  - spec/fixtures/multiple_files_2.log
@@ -83,44 +77,36 @@ files:
83
77
  - spec/fixtures/test_file_format.log
84
78
  - spec/fixtures/test_language_combined.log
85
79
  - spec/fixtures/test_order.log
86
- - spec/integration
87
80
  - spec/integration/command_line_usage_spec.rb
88
- - spec/lib
89
81
  - spec/lib/helper.rb
90
82
  - spec/lib/mocks.rb
91
83
  - spec/lib/testing_format.rb
92
84
  - spec/spec_helper.rb
93
- - spec/unit
94
- - spec/unit/aggregator
95
85
  - spec/unit/aggregator/database_inserter_spec.rb
96
86
  - spec/unit/aggregator/summarizer_spec.rb
97
- - spec/unit/controller
98
87
  - spec/unit/controller/controller_spec.rb
99
88
  - spec/unit/controller/log_processor_spec.rb
100
- - spec/unit/file_format
101
89
  - spec/unit/file_format/file_format_api_spec.rb
102
90
  - spec/unit/file_format/line_definition_spec.rb
103
91
  - spec/unit/file_format/merb_format_spec.rb
104
92
  - spec/unit/file_format/rails_format_spec.rb
105
- - spec/unit/filter
106
93
  - spec/unit/filter/anonymize_filter_spec.rb
107
94
  - spec/unit/filter/field_filter_spec.rb
108
95
  - spec/unit/filter/timespan_filter_spec.rb
109
- - spec/unit/source
110
96
  - spec/unit/source/log_parser_spec.rb
111
97
  - spec/unit/source/request_spec.rb
112
- - spec/unit/tracker
113
98
  - spec/unit/tracker/duration_tracker_spec.rb
114
99
  - spec/unit/tracker/frequency_tracker_spec.rb
115
100
  - spec/unit/tracker/hourly_spread_spec.rb
116
101
  - spec/unit/tracker/timespan_tracker_spec.rb
117
- - spec/unit/tracker/tracker_api_test.rb
118
- - tasks
102
+ - spec/unit/tracker/tracker_api_spec.rb
119
103
  - tasks/github-gem.rake
120
104
  - tasks/request_log_analyzer.rake
121
105
  - tasks/rspec.rake
122
106
  has_rdoc: true
123
107
  homepage: http://github.com/wvanbergen/request-log-analyzer/wikis
108
+ licenses: []
109
+
124
110
  post_install_message:
125
111
  rdoc_options:
126
112
  - --title
@@ -146,9 +132,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
146
132
  requirements: []
147
133
 
148
134
  rubyforge_project: r-l-a
149
- rubygems_version: 1.2.0
135
+ rubygems_version: 1.3.2
150
136
  signing_key:
151
- specification_version: 2
137
+ specification_version: 3
152
138
  summary: A command line tool to analyze Rails logs
153
139
  test_files:
154
140
  - spec/integration/command_line_usage_spec.rb
@@ -169,3 +155,4 @@ test_files:
169
155
  - spec/unit/tracker/frequency_tracker_spec.rb
170
156
  - spec/unit/tracker/hourly_spread_spec.rb
171
157
  - spec/unit/tracker/timespan_tracker_spec.rb
158
+ - spec/unit/tracker/tracker_api_spec.rb
data/HACKING DELETED
@@ -1,7 +0,0 @@
1
- HACKING on request-log-analyzer
2
- -------------------------------
3
-
4
- - See DESIGN for the basic internal design of request-log-analyzer
5
- - See http://wiki.github.com/wvanbergen/request-log-analyzer/development for
6
- more information about developing
7
- - Contact me at my GitHub account for any questions: http://github.com/wvanbergen