spec/unit/source/log_parser_spec.rb in request-log-analyzer-1.11.0 vs spec/unit/source/log_parser_spec.rb in request-log-analyzer-1.11.1
- old
+ new
@@ -1,119 +1,125 @@
require 'spec_helper'
-describe RequestLogAnalyzer::Source::LogParser, :requests do
+describe RequestLogAnalyzer::Source::LogParser do
+ describe 'parsing request' do
+ before(:each) do
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(testing_format)
+ end
- before(:each) do
- @log_parser = RequestLogAnalyzer::Source::LogParser.new(testing_format)
- end
+ it "should have multiple line definitions" do
+ @log_parser.file_format.line_definitions.length.should >= 2
+ end
- it "should have multiple line definitions" do
- @log_parser.file_format.line_definitions.length.should >= 2
- end
+ it "should have a valid language" do
+ @log_parser.file_format.should be_well_formed
+ end
- it "should have a valid language" do
- @log_parser.file_format.should be_well_formed
- end
+ it "should set the :source for every parsed line" do
+ @log_parser.parse_file(log_fixture(:rails_22)) do |request|
+ request.lines.all? { |line| line[:source] == log_fixture(:rails_22) }.should be_true
+ end
+ end
- it "should set the :source for every parsed line" do
- @log_parser.parse_file(log_fixture(:rails_22)) do |request|
- request.lines.all? { |line| line[:source] == log_fixture(:rails_22) }.should be_true
+ it "should set the :lineno for every parsed line" do
+ @log_parser.parse_file(log_fixture(:rails_22)) do |request|
+ request.lines.all? { |line| line.has_key?(:lineno) }.should be_true
+ end
end
- end
- it "should set the :lineno for every parsed line" do
- @log_parser.parse_file(log_fixture(:rails_22)) do |request|
- request.lines.all? { |line| line.has_key?(:lineno) }.should be_true
+ it "should parse more lines than requests" do
+ @log_parser.should_receive(:handle_request).with(an_instance_of(TestingFormat::Request)).twice
+ @log_parser.parse_file(log_fixture(:test_language_combined))
+ @log_parser.parsed_lines.should > 2
end
- end
- it "should parse more lines than requests" do
- @log_parser.should_receive(:handle_request).with(an_instance_of(TestingFormat::Request)).twice
- @log_parser.parse_file(log_fixture(:test_language_combined))
- @log_parser.parsed_lines.should > 2
- end
+ it "should parse requests spanned over multiple files" do
+ @log_parser.should_receive(:handle_request).with(an_instance_of(TestingFormat::Request)).once
+ @log_parser.parse_files([log_fixture(:multiple_files_1), log_fixture(:multiple_files_2)])
+ end
- it "should parse requests spanned over multiple files" do
- @log_parser.should_receive(:handle_request).with(an_instance_of(TestingFormat::Request)).once
- @log_parser.parse_files([log_fixture(:multiple_files_1), log_fixture(:multiple_files_2)])
- end
+ it "should parse all request values when spanned over multiple files" do
+ @log_parser.parse_files([log_fixture(:multiple_files_1), log_fixture(:multiple_files_2)]) do |request|
+ request.lines.should have(4).items
+ request[:request_no].should == 1
+ request[:test_capture].should == "Testing is amazing" # Note the custom converter
+ end
+ end
- it "should parse all request values when spanned over multiple files" do
- @log_parser.parse_files([log_fixture(:multiple_files_1), log_fixture(:multiple_files_2)]) do |request|
- request.lines.should have(4).items
- request[:request_no].should == 1
- request[:test_capture].should == "Testing is amazing" # Note the custom converter
+ it "should parse a stream and find valid requests" do
+ io = File.new(log_fixture(:test_file_format), 'rb')
+ @log_parser.parse_io(io) do |request|
+ request.should be_kind_of(RequestLogAnalyzer::Request)
+ request.should =~ :test
+ request[:test_capture].should_not be_nil
+ end
+ io.close
end
- end
- it "should parse a stream and find valid requests" do
- io = File.new(log_fixture(:test_file_format), 'rb')
- @log_parser.parse_io(io) do |request|
- request.should be_kind_of(RequestLogAnalyzer::Request)
- request.should =~ :test
- request[:test_capture].should_not be_nil
+ it "should parse a request that only consists of one line" do
+ @log_parser.parse_file(log_fixture(:header_and_footer))
+ @log_parser.parsed_requests.should == 2
end
- io.close
end
- it "should parse a request that only consists of one line" do
- @log_parser.parse_file(log_fixture(:header_and_footer))
- @log_parser.parsed_requests.should == 2
- end
-end
+ describe 'parse warnings' do
-describe RequestLogAnalyzer::Source::LogParser, :warnings do
+ before(:each) do
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(testing_format, :parse_strategy => 'cautious')
+ end
- before(:each) do
- @log_parser = RequestLogAnalyzer::Source::LogParser.new(testing_format, :parse_strategy => 'cautious')
- end
+ it "should warn about teaser matching problems" do
+ @log_parser.should_receive(:warn).with(:teaser_check_failed, anything).exactly(5).times
+ @log_parser.parse_file(log_fixture(:test_file_format))
+ end
- it "should warn about teaser matching problems" do
- @log_parser.should_receive(:warn).with(:teaser_check_failed, anything).exactly(5).times
- @log_parser.parse_file(log_fixture(:test_file_format))
+ it "should warn about unmatching request headers and footers" do
+ @log_parser.should_receive(:warn).with(:unclosed_request, anything).at_least(1).times
+ @log_parser.should_receive(:warn).with(:no_current_request, anything).at_least(1).times
+ @log_parser.should_not_receive(:handle_request)
+ @log_parser.parse_file(log_fixture(:test_order))
+ end
end
- it "should warn about unmatching request headers and footers" do
- @log_parser.should_receive(:warn).with(:unclosed_request, anything).at_least(1).times
- @log_parser.should_receive(:warn).with(:no_current_request, anything).at_least(1).times
- @log_parser.should_not_receive(:handle_request)
- @log_parser.parse_file(log_fixture(:test_order))
- end
-end
+ describe 'log file decompression' do
-describe RequestLogAnalyzer::Source::LogParser, :decompression do
+ before(:each) do
+ @log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat::Rails.create)
+ end
- before(:each) do
- @log_parser = RequestLogAnalyzer::Source::LogParser.new(RequestLogAnalyzer::FileFormat::Rails.create)
- end
+ if `which gunzip` != ""
+ it "should parse a rails gzipped log file" do
+ @log_parser.should_receive(:handle_request).once
+ @log_parser.parse_file(log_fixture(:decompression, "log.gz"))
+ @log_parser.parsed_lines.should > 0
+ end
- it "should parse a rails gzipped log file" do
- @log_parser.should_receive(:handle_request).once
- @log_parser.parse_file(log_fixture(:decompression, "log.gz"))
- @log_parser.parsed_lines.should > 0
- end
+ it "should parse a rails tar gzipped log folder" do
+ @log_parser.should_receive(:handle_request).twice
+ @log_parser.parse_file(log_fixture(:decompression, "tar.gz"))
+ @log_parser.parsed_lines.should > 1
+ end
+ end
- it "should parse a rails tar gzipped log folder" do
- @log_parser.should_receive(:handle_request).twice
- @log_parser.parse_file(log_fixture(:decompression, "tar.gz"))
- @log_parser.parsed_lines.should > 1
- end
+ if `which bunzip2` != ""
+ it "should parse a rails tar gzipped log folder" do
+ @log_parser.should_receive(:handle_request).twice
+ @log_parser.parse_file(log_fixture(:decompression, "tgz"))
+ @log_parser.parsed_lines.should > 1
+ end
- it "should parse a rails tar gzipped log folder" do
- @log_parser.should_receive(:handle_request).twice
- @log_parser.parse_file(log_fixture(:decompression, "tgz"))
- @log_parser.parsed_lines.should > 1
+ it "should parse a rails bz2 zipped log file" do
+ @log_parser.should_receive(:handle_request).once
+ @log_parser.parse_file(log_fixture(:decompression, "log.bz2"))
+ @log_parser.parsed_lines.should > 0
+ end
+ end
+
+ if `which unzip` != ""
+ it "should parse a rails zipped log file" do
+ @log_parser.should_receive(:handle_request).once
+ @log_parser.parse_file(log_fixture(:decompression, "log.zip"))
+ @log_parser.parsed_lines.should > 0
+ end
+ end
end
-
- it "should parse a rails bz2 zipped log file" do
- @log_parser.should_receive(:handle_request).once
- @log_parser.parse_file(log_fixture(:decompression, "log.bz2"))
- @log_parser.parsed_lines.should > 0
- end
-
- it "should parse a rails zipped log file" do
- @log_parser.should_receive(:handle_request).once
- @log_parser.parse_file(log_fixture(:decompression, "log.zip"))
- @log_parser.parsed_lines.should > 0
- end
-
end
\ No newline at end of file