wvanbergen-request-log-analyzer 1.0.0 → 1.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/DESIGN +14 -0
- data/HACKING +7 -0
- data/README.textile +9 -98
- data/Rakefile +2 -2
- data/bin/request-log-analyzer +1 -1
- data/lib/cli/bashcolorizer.rb +60 -0
- data/lib/cli/command_line_arguments.rb +301 -0
- data/lib/cli/progressbar.rb +236 -0
- data/lib/request_log_analyzer/aggregator/base.rb +51 -0
- data/lib/request_log_analyzer/aggregator/database.rb +97 -0
- data/lib/request_log_analyzer/aggregator/echo.rb +25 -0
- data/lib/request_log_analyzer/aggregator/summarizer.rb +116 -0
- data/lib/request_log_analyzer/controller.rb +206 -0
- data/lib/request_log_analyzer/file_format/merb.rb +33 -0
- data/lib/request_log_analyzer/file_format/rails.rb +119 -0
- data/lib/request_log_analyzer/file_format.rb +77 -0
- data/lib/request_log_analyzer/filter/base.rb +29 -0
- data/lib/request_log_analyzer/filter/field.rb +36 -0
- data/lib/request_log_analyzer/filter/timespan.rb +32 -0
- data/lib/request_log_analyzer/line_definition.rb +159 -0
- data/lib/request_log_analyzer/log_parser.rb +183 -0
- data/lib/request_log_analyzer/log_processor.rb +121 -0
- data/lib/request_log_analyzer/request.rb +115 -0
- data/lib/request_log_analyzer/source/base.rb +42 -0
- data/lib/request_log_analyzer/source/log_file.rb +180 -0
- data/lib/request_log_analyzer/tracker/base.rb +54 -0
- data/lib/request_log_analyzer/tracker/category.rb +71 -0
- data/lib/request_log_analyzer/tracker/duration.rb +81 -0
- data/lib/request_log_analyzer/tracker/hourly_spread.rb +80 -0
- data/lib/request_log_analyzer/tracker/timespan.rb +54 -0
- data/spec/file_format_spec.rb +78 -0
- data/spec/file_formats/spec_format.rb +26 -0
- data/spec/filter_spec.rb +137 -0
- data/spec/log_processor_spec.rb +57 -0
- data/tasks/rspec.rake +6 -0
- metadata +53 -55
- data/TODO +0 -58
- data/bin/request-log-database +0 -81
- data/lib/base/log_parser.rb +0 -78
- data/lib/base/record_inserter.rb +0 -139
- data/lib/command_line/arguments.rb +0 -129
- data/lib/command_line/flag.rb +0 -51
- data/lib/merb_analyzer/log_parser.rb +0 -26
- data/lib/rails_analyzer/log_parser.rb +0 -35
- data/lib/rails_analyzer/record_inserter.rb +0 -39
- data/tasks/test.rake +0 -8
- data/test/log_fragments/fragment_1.log +0 -59
- data/test/log_fragments/fragment_2.log +0 -5
- data/test/log_fragments/fragment_3.log +0 -12
- data/test/log_fragments/fragment_4.log +0 -10
- data/test/log_fragments/fragment_5.log +0 -24
- data/test/log_fragments/merb_1.log +0 -84
- data/test/merb_log_parser_test.rb +0 -39
- data/test/rails_log_parser_test.rb +0 -94
- data/test/record_inserter_test.rb +0 -45
@@ -1,94 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require "#{File.dirname(__FILE__)}/../lib/request_log_analyzer"
|
4
|
-
|
5
|
-
class RailsLogParserTest < Test::Unit::TestCase
|
6
|
-
|
7
|
-
def fragment_file(number)
|
8
|
-
"#{File.dirname(__FILE__)}/log_fragments/fragment_#{number}.log"
|
9
|
-
end
|
10
|
-
|
11
|
-
|
12
|
-
def test_rails_22_log_format
|
13
|
-
count = 0
|
14
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(3)).each(:completed) do |request|
|
15
|
-
count += 1
|
16
|
-
assert_equal 0.614, request[:duration] # should be 0.614
|
17
|
-
end
|
18
|
-
assert_equal 1, count
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_progress_messages
|
22
|
-
log_file = fragment_file(1)
|
23
|
-
|
24
|
-
finished_encountered = false
|
25
|
-
file_size = File.size(log_file)
|
26
|
-
|
27
|
-
previous_pos = -1
|
28
|
-
parser = RailsAnalyzer::LogParser.new(log_file)
|
29
|
-
parser.progress do |pos, total|
|
30
|
-
assert_equal file_size, total
|
31
|
-
if pos == :finished
|
32
|
-
finished_encountered = true
|
33
|
-
else
|
34
|
-
assert pos <= total
|
35
|
-
assert pos > previous_pos
|
36
|
-
previous_pos = pos
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# now parse the file
|
41
|
-
parser.each(:started) { }
|
42
|
-
|
43
|
-
assert finished_encountered, "A finished event should have been fired"
|
44
|
-
end
|
45
|
-
|
46
|
-
def test_parse_mongrel_log_fragment
|
47
|
-
count = 0
|
48
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(1)).each(:started) { count += 1 }
|
49
|
-
assert_equal 4, count
|
50
|
-
|
51
|
-
count = 0
|
52
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(1)).each(:completed) { count += 1 }
|
53
|
-
assert_equal 4, count
|
54
|
-
|
55
|
-
count = 0
|
56
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(1)).each(:started, :completed) { count += 1 }
|
57
|
-
assert_equal 8, count
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_parse_syslog_fragment
|
61
|
-
count = 0
|
62
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(2)).each(:started) { count += 1 }
|
63
|
-
assert_equal 1, count
|
64
|
-
|
65
|
-
count = 0
|
66
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(2)).each(:completed) { count += 1 }
|
67
|
-
assert_equal 1, count
|
68
|
-
|
69
|
-
count = 0
|
70
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(2)).each(:started, :completed) { count += 1 }
|
71
|
-
assert_equal 2, count
|
72
|
-
end
|
73
|
-
|
74
|
-
def test_parse_syslog_fragment_content
|
75
|
-
# this test only works because there is only one requests in the fragment
|
76
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(2)).each(:started) do |request|
|
77
|
-
assert_equal "EmployeeController", request[:controller]
|
78
|
-
assert_equal "index", request[:action]
|
79
|
-
assert_equal "GET", request[:method]
|
80
|
-
assert_equal '10.1.1.33', request[:ip]
|
81
|
-
assert_equal '2008-07-13 06:25:58', request[:timestamp]
|
82
|
-
end
|
83
|
-
|
84
|
-
parser = RailsAnalyzer::LogParser.new(fragment_file(2)).each(:completed) do |request|
|
85
|
-
assert_equal "http://example.com/employee.xml", request[:url]
|
86
|
-
assert_equal 200, request[:status]
|
87
|
-
assert_equal 0.21665, request[:duration]
|
88
|
-
assert_equal 0.00926, request[:rendering]
|
89
|
-
assert_equal 0.0, request[:db]
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|
93
|
-
|
94
|
-
end
|
@@ -1,45 +0,0 @@
|
|
1
|
-
require 'test/unit'
|
2
|
-
|
3
|
-
require "#{File.dirname(__FILE__)}/../lib/base/log_parser"
|
4
|
-
require "#{File.dirname(__FILE__)}/../lib/base/record_inserter"
|
5
|
-
|
6
|
-
require "#{File.dirname(__FILE__)}/../lib/rails_analyzer/log_parser"
|
7
|
-
require "#{File.dirname(__FILE__)}/../lib/rails_analyzer/record_inserter"
|
8
|
-
|
9
|
-
class RecordInserterTest < Test::Unit::TestCase
|
10
|
-
|
11
|
-
def fragment_file(number)
|
12
|
-
"#{File.dirname(__FILE__)}/log_fragments/fragment_#{number}.log"
|
13
|
-
end
|
14
|
-
|
15
|
-
def setup
|
16
|
-
File.delete('_tmp.db') if File.exist?('_tmp.db')
|
17
|
-
end
|
18
|
-
|
19
|
-
def teardown
|
20
|
-
File.delete('_tmp.db') if File.exist?('_tmp.db')
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_insert_log_fragment
|
24
|
-
|
25
|
-
db = RailsAnalyzer::RecordInserter.insert_batch_into('_tmp.db') do |batch|
|
26
|
-
RailsAnalyzer::LogParser.new(fragment_file(1)).each { |request| batch.insert(request) }
|
27
|
-
end
|
28
|
-
|
29
|
-
assert_equal 4, db.database.get_first_value("SELECT COUNT(*) FROM started_requests").to_i
|
30
|
-
assert_equal 4, db.database.get_first_value("SELECT COUNT(*) FROM completed_requests").to_i
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_insert_multiple_fragments
|
34
|
-
RailsAnalyzer::RecordInserter.insert_batch_into('_tmp.db') do |batch|
|
35
|
-
RailsAnalyzer::LogParser.new(fragment_file(1)).each { |request| batch.insert(request) }
|
36
|
-
end
|
37
|
-
|
38
|
-
db = RailsAnalyzer::RecordInserter.insert_batch_into('_tmp.db') do |batch|
|
39
|
-
RailsAnalyzer::LogParser.new(fragment_file(2)).each { |request| batch.insert(request) }
|
40
|
-
end
|
41
|
-
assert_equal 5, db.database.get_first_value("SELECT COUNT(*) FROM started_requests").to_i
|
42
|
-
assert_equal 5, db.database.get_first_value("SELECT COUNT(*) FROM completed_requests").to_i
|
43
|
-
end
|
44
|
-
|
45
|
-
end
|