forked from wvanbergen/request-log-analyzer
-
Notifications
You must be signed in to change notification settings - Fork 1
/
command_line_usage_spec.rb
95 lines (75 loc) · 3.53 KB
/
command_line_usage_spec.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
require 'spec_helper'
describe RequestLogAnalyzer, 'running from command line' do
before(:each) do
cleanup_temp_files!
end
after(:each) do
cleanup_temp_files!
end
it "should find 4 requests in default mode" do
output = run("#{log_fixture(:rails_1x)}")
output.any? { |line| /^Parsed requests\:\s*4\s/ =~ line }.should be_true
end
it "should find 2 requests when parsing a compressed file" do
output = run("#{log_fixture(:decompression, :tgz)}")
output.any? { |line| /^Parsed requests\:\s*2\s/ =~ line }.should be_true
end
it "should skip 1 requests with a --select option" do
output = run("#{log_fixture(:rails_1x)} --select controller PeopleController")
output.any? { |line| /^Skipped requests\:\s*1\s/ =~ line }.should be_true
end
it "should skip 3 requests with a --reject option" do
output = run("#{log_fixture(:rails_1x)} --reject controller PeopleController")
output.any? { |line| /^Skipped requests\:\s*3\s/ =~ line }.should be_true
end
it "should not write output with the --silent option" do
output = run("#{log_fixture(:rails_1x)} --silent --file #{temp_output_file(:report)}")
output.should be_empty
File.exist?(temp_output_file(:report)).should be_true
end
it "should write output to a file with the --file option" do
run("#{log_fixture(:rails_1x)} --file #{temp_output_file(:report)}")
File.exist?(temp_output_file(:report)).should be_true
end
it "should write only ASCII characters to a file with the --file option" do
run("#{log_fixture(:rails_1x)} --file #{temp_output_file(:report)}")
/^[\x00-\x7F]*$/.match(File.read(temp_output_file(:report))).should_not be_nil
end
it "should write HTML if --output HTML is provided" do
output = run("#{log_fixture(:rails_1x)} --output HTML")
output.any? { |line| /<html[^>]*>/ =~ line}.should be_true
end
it "should run with the --database option" do
run("#{log_fixture(:rails_1x)} --database #{temp_output_file(:database)}")
File.exist?(temp_output_file(:database)).should be_true
end
it "should use no colors in the report with the --boring option" do
output = run("#{log_fixture(:rails_1x)} --boring --format rails")
output.any? { |line| /\e/ =~ line }.should be_false
end
it "should use only ASCII characters in the report with the --boring option" do
output = run("#{log_fixture(:rails_1x)} --boring")
output.all? { |line| /^[\x00-\x7F]*$/ =~ line }.should be_true
end
it "should parse a Merb file if --format merb is set" do
output = run("#{log_fixture(:merb)} --format merb")
output.any? { |line| /Parsed requests\:\s*11/ =~ line }.should be_true
end
it "should parse a Apache access log file if --apache-format is set" do
output = run("#{log_fixture(:apache_combined)} --apache-format combined")
output.any? { |line| /Parsed requests\:\s*5/ =~ line }.should be_true
end
it "should dump the results to a YAML file" do
run("#{log_fixture(:rails_1x)} --yaml #{temp_output_file(:yaml)}")
File.exist?(temp_output_file(:yaml)).should be_true
YAML.load(File.read(temp_output_file(:yaml))).should have_at_least(1).item
end
it "should parse 4 requests from the standard input" do
output = run("--format rails - < #{log_fixture(:rails_1x)}")
output.any? { |line| /^Parsed requests\:\s*4\s/ =~ line }.should be_true
end
it "should accept a directory as a commandline option" do
output = run("#{log_directory_fixture("s3_logs")} --format amazon_s3")
output.any? { |line| /^Parsed requests:\s*8\s/ =~ line }.should be_true
end
end