request-log-analyzer 1.13.1 → 1.13.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (115) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/bin/console +17 -0
  4. data/lib/cli/command_line_arguments.rb +29 -36
  5. data/lib/cli/database_console.rb +1 -3
  6. data/lib/cli/database_console_init.rb +11 -11
  7. data/lib/cli/progressbar.rb +30 -32
  8. data/lib/cli/tools.rb +20 -23
  9. data/lib/request_log_analyzer.rb +8 -8
  10. data/lib/request_log_analyzer/aggregator.rb +4 -7
  11. data/lib/request_log_analyzer/aggregator/database_inserter.rb +10 -13
  12. data/lib/request_log_analyzer/aggregator/echo.rb +5 -7
  13. data/lib/request_log_analyzer/aggregator/summarizer.rb +15 -18
  14. data/lib/request_log_analyzer/class_level_inheritable_attributes.rb +23 -0
  15. data/lib/request_log_analyzer/controller.rb +36 -42
  16. data/lib/request_log_analyzer/database.rb +4 -6
  17. data/lib/request_log_analyzer/database/base.rb +39 -41
  18. data/lib/request_log_analyzer/database/connection.rb +8 -10
  19. data/lib/request_log_analyzer/database/request.rb +1 -3
  20. data/lib/request_log_analyzer/database/source.rb +0 -2
  21. data/lib/request_log_analyzer/database/warning.rb +4 -6
  22. data/lib/request_log_analyzer/file_format.rb +46 -49
  23. data/lib/request_log_analyzer/file_format/amazon_s3.rb +15 -19
  24. data/lib/request_log_analyzer/file_format/apache.rb +42 -45
  25. data/lib/request_log_analyzer/file_format/delayed_job.rb +13 -15
  26. data/lib/request_log_analyzer/file_format/delayed_job2.rb +9 -11
  27. data/lib/request_log_analyzer/file_format/delayed_job21.rb +9 -11
  28. data/lib/request_log_analyzer/file_format/delayed_job3.rb +5 -8
  29. data/lib/request_log_analyzer/file_format/delayed_job4.rb +5 -8
  30. data/lib/request_log_analyzer/file_format/haproxy.rb +44 -48
  31. data/lib/request_log_analyzer/file_format/merb.rb +13 -17
  32. data/lib/request_log_analyzer/file_format/mysql.rb +21 -25
  33. data/lib/request_log_analyzer/file_format/nginx.rb +0 -2
  34. data/lib/request_log_analyzer/file_format/oink.rb +30 -31
  35. data/lib/request_log_analyzer/file_format/postgresql.rb +11 -15
  36. data/lib/request_log_analyzer/file_format/rack.rb +0 -2
  37. data/lib/request_log_analyzer/file_format/rails.rb +100 -104
  38. data/lib/request_log_analyzer/file_format/rails3.rb +19 -23
  39. data/lib/request_log_analyzer/file_format/rails_development.rb +0 -1
  40. data/lib/request_log_analyzer/file_format/w3c.rb +16 -18
  41. data/lib/request_log_analyzer/filter.rb +0 -2
  42. data/lib/request_log_analyzer/filter/anonymize.rb +4 -7
  43. data/lib/request_log_analyzer/filter/field.rb +3 -6
  44. data/lib/request_log_analyzer/filter/timespan.rb +2 -6
  45. data/lib/request_log_analyzer/line_definition.rb +16 -19
  46. data/lib/request_log_analyzer/log_processor.rb +10 -14
  47. data/lib/request_log_analyzer/mailer.rb +9 -12
  48. data/lib/request_log_analyzer/output.rb +12 -14
  49. data/lib/request_log_analyzer/output/fixed_width.rb +21 -28
  50. data/lib/request_log_analyzer/output/html.rb +11 -14
  51. data/lib/request_log_analyzer/request.rb +53 -33
  52. data/lib/request_log_analyzer/source.rb +2 -5
  53. data/lib/request_log_analyzer/source/log_parser.rb +9 -16
  54. data/lib/request_log_analyzer/tracker.rb +10 -12
  55. data/lib/request_log_analyzer/tracker/duration.rb +4 -6
  56. data/lib/request_log_analyzer/tracker/frequency.rb +9 -11
  57. data/lib/request_log_analyzer/tracker/hourly_spread.rb +8 -11
  58. data/lib/request_log_analyzer/tracker/numeric_value.rb +40 -44
  59. data/lib/request_log_analyzer/tracker/timespan.rb +5 -8
  60. data/lib/request_log_analyzer/tracker/traffic.rb +8 -10
  61. data/lib/request_log_analyzer/version.rb +1 -1
  62. data/request-log-analyzer.gemspec +6 -6
  63. data/spec/integration/command_line_usage_spec.rb +33 -33
  64. data/spec/integration/mailer_spec.rb +181 -185
  65. data/spec/integration/munin_plugins_rails_spec.rb +20 -20
  66. data/spec/integration/scout_spec.rb +40 -41
  67. data/spec/lib/helpers.rb +8 -9
  68. data/spec/lib/macros.rb +2 -4
  69. data/spec/lib/matchers.rb +20 -25
  70. data/spec/lib/mocks.rb +10 -11
  71. data/spec/lib/testing_format.rb +8 -10
  72. data/spec/spec_helper.rb +5 -1
  73. data/spec/unit/aggregator/database_inserter_spec.rb +23 -23
  74. data/spec/unit/aggregator/summarizer_spec.rb +7 -7
  75. data/spec/unit/controller/controller_spec.rb +14 -14
  76. data/spec/unit/controller/log_processor_spec.rb +3 -3
  77. data/spec/unit/database/base_class_spec.rb +36 -37
  78. data/spec/unit/database/connection_spec.rb +10 -10
  79. data/spec/unit/database/database_spec.rb +11 -11
  80. data/spec/unit/file_format/amazon_s3_format_spec.rb +66 -62
  81. data/spec/unit/file_format/apache_format_spec.rb +57 -52
  82. data/spec/unit/file_format/common_regular_expressions_spec.rb +18 -21
  83. data/spec/unit/file_format/delayed_job21_format_spec.rb +22 -16
  84. data/spec/unit/file_format/delayed_job2_format_spec.rb +22 -16
  85. data/spec/unit/file_format/delayed_job3_format_spec.rb +14 -10
  86. data/spec/unit/file_format/delayed_job4_format_spec.rb +14 -10
  87. data/spec/unit/file_format/delayed_job_format_spec.rb +12 -12
  88. data/spec/unit/file_format/file_format_api_spec.rb +19 -19
  89. data/spec/unit/file_format/format_autodetection_spec.rb +7 -7
  90. data/spec/unit/file_format/haproxy_format_spec.rb +53 -49
  91. data/spec/unit/file_format/inheritance_spec.rb +13 -0
  92. data/spec/unit/file_format/line_definition_spec.rb +35 -33
  93. data/spec/unit/file_format/merb_format_spec.rb +13 -11
  94. data/spec/unit/file_format/mysql_format_spec.rb +24 -24
  95. data/spec/unit/file_format/oink_format_spec.rb +29 -29
  96. data/spec/unit/file_format/postgresql_format_spec.rb +9 -9
  97. data/spec/unit/file_format/rack_format_spec.rb +36 -31
  98. data/spec/unit/file_format/rails3_format_spec.rb +46 -46
  99. data/spec/unit/file_format/rails_format_spec.rb +52 -53
  100. data/spec/unit/file_format/w3c_format_spec.rb +27 -24
  101. data/spec/unit/filter/anonymize_filter_spec.rb +7 -7
  102. data/spec/unit/filter/field_filter_spec.rb +26 -26
  103. data/spec/unit/filter/filter_spec.rb +4 -4
  104. data/spec/unit/filter/timespan_filter_spec.rb +22 -22
  105. data/spec/unit/mailer_spec.rb +21 -21
  106. data/spec/unit/request_spec.rb +29 -29
  107. data/spec/unit/source/log_parser_spec.rb +5 -5
  108. data/spec/unit/tracker/duration_tracker_spec.rb +23 -23
  109. data/spec/unit/tracker/frequency_tracker_spec.rb +29 -30
  110. data/spec/unit/tracker/hourly_spread_spec.rb +35 -35
  111. data/spec/unit/tracker/numeric_value_tracker_spec.rb +71 -72
  112. data/spec/unit/tracker/timespan_tracker_spec.rb +31 -31
  113. data/spec/unit/tracker/tracker_api_spec.rb +43 -44
  114. data/spec/unit/tracker/traffic_tracker_spec.rb +7 -7
  115. metadata +38 -35
@@ -4,46 +4,45 @@ describe RequestLogAnalyzer::Tracker::Frequency do
4
4
 
5
5
  context 'static category' do
6
6
  before(:each) do
7
- @tracker = RequestLogAnalyzer::Tracker::Frequency.new(:category => :category)
7
+ @tracker = RequestLogAnalyzer::Tracker::Frequency.new(category: :category)
8
8
  @tracker.prepare
9
9
  end
10
10
 
11
- it "should register a request in the right category" do
12
- @tracker.update(request(:category => 'a', :blah => 0.2))
11
+ it 'should register a request in the right category' do
12
+ @tracker.update(request(category: 'a', blah: 0.2))
13
13
  @tracker.categories.should include('a')
14
14
  end
15
15
 
16
- it "should register a request in the right category" do
17
- @tracker.update(request(:category => 'a', :blah => 0.2))
18
- @tracker.update(request(:category => 'b', :blah => 0.2))
19
- @tracker.update(request(:category => 'b', :blah => 0.2))
16
+ it 'should register a request in the right category' do
17
+ @tracker.update(request(category: 'a', blah: 0.2))
18
+ @tracker.update(request(category: 'b', blah: 0.2))
19
+ @tracker.update(request(category: 'b', blah: 0.2))
20
20
 
21
21
  @tracker.frequency('a').should == 1
22
22
  @tracker.frequency('b').should == 2
23
23
  @tracker.overall_frequency.should == 3
24
24
  end
25
25
 
26
- it "should sort correctly by frequency" do
27
- @tracker.update(request(:category => 'a', :blah => 0.2))
28
- @tracker.update(request(:category => 'b', :blah => 0.2))
29
- @tracker.update(request(:category => 'b', :blah => 0.2))
26
+ it 'should sort correctly by frequency' do
27
+ @tracker.update(request(category: 'a', blah: 0.2))
28
+ @tracker.update(request(category: 'b', blah: 0.2))
29
+ @tracker.update(request(category: 'b', blah: 0.2))
30
30
 
31
31
  @tracker.sorted_by_frequency.should == [['b', 2], ['a', 1]]
32
32
  end
33
33
  end
34
-
35
34
 
36
35
  context 'dynamic category' do
37
36
  before(:each) do
38
- @categorizer = Proc.new { |request| request[:duration] > 0.2 ? 'slow' : 'fast' }
39
- @tracker = RequestLogAnalyzer::Tracker::Frequency.new(:category => @categorizer)
37
+ @categorizer = proc { |request| request[:duration] > 0.2 ? 'slow' : 'fast' }
38
+ @tracker = RequestLogAnalyzer::Tracker::Frequency.new(category: @categorizer)
40
39
  @tracker.prepare
41
40
  end
42
41
 
43
- it "should use the categorizer to determine the right category" do
44
- @tracker.update(request(:category => 'a', :duration => 0.2))
45
- @tracker.update(request(:category => 'b', :duration => 0.3))
46
- @tracker.update(request(:category => 'b', :duration => 0.4))
42
+ it 'should use the categorizer to determine the right category' do
43
+ @tracker.update(request(category: 'a', duration: 0.2))
44
+ @tracker.update(request(category: 'b', duration: 0.3))
45
+ @tracker.update(request(category: 'b', duration: 0.4))
47
46
 
48
47
  @tracker.frequency('fast').should == 1
49
48
  @tracker.frequency('slow').should == 2
@@ -53,36 +52,36 @@ describe RequestLogAnalyzer::Tracker::Frequency do
53
52
 
54
53
  describe '#report' do
55
54
  before(:each) do
56
- @tracker = RequestLogAnalyzer::Tracker::Frequency.new(:category => :category)
55
+ @tracker = RequestLogAnalyzer::Tracker::Frequency.new(category: :category)
57
56
  @tracker.prepare
58
57
  end
59
58
 
60
- it "should generate a report without errors when one category is present" do
61
- @tracker.update(request(:category => 'a', :blah => 0.2))
59
+ it 'should generate a report without errors when one category is present' do
60
+ @tracker.update(request(category: 'a', blah: 0.2))
62
61
  lambda { @tracker.report(mock_output) }.should_not raise_error
63
62
  end
64
63
 
65
- it "should generate a report without errors when no category is present" do
64
+ it 'should generate a report without errors when no category is present' do
66
65
  lambda { @tracker.report(mock_output) }.should_not raise_error
67
66
  end
68
67
 
69
- it "should generate a report without errors when multiple categories are present" do
70
- @tracker.update(request(:category => 'a', :blah => 0.2))
71
- @tracker.update(request(:category => 'b', :blah => 0.2))
68
+ it 'should generate a report without errors when multiple categories are present' do
69
+ @tracker.update(request(category: 'a', blah: 0.2))
70
+ @tracker.update(request(category: 'b', blah: 0.2))
72
71
  lambda { @tracker.report(mock_output) }.should_not raise_error
73
72
  end
74
73
  end
75
74
 
76
75
  describe '#to_yaml_object' do
77
76
  before(:each) do
78
- @tracker = RequestLogAnalyzer::Tracker::Frequency.new(:category => :category)
77
+ @tracker = RequestLogAnalyzer::Tracker::Frequency.new(category: :category)
79
78
  @tracker.prepare
80
79
  end
81
80
 
82
- it "should generate a YAML output" do
83
- @tracker.update(request(:category => 'a', :blah => 0.2))
84
- @tracker.update(request(:category => 'b', :blah => 0.2))
85
- @tracker.to_yaml_object.should == { "a" => 1, "b" => 1 }
81
+ it 'should generate a YAML output' do
82
+ @tracker.update(request(category: 'a', blah: 0.2))
83
+ @tracker.update(request(category: 'b', blah: 0.2))
84
+ @tracker.to_yaml_object.should == { 'a' => 1, 'b' => 1 }
86
85
  end
87
86
  end
88
87
  end
@@ -7,43 +7,43 @@ describe RequestLogAnalyzer::Tracker::HourlySpread do
7
7
  @tracker.prepare
8
8
  end
9
9
 
10
- it "should store timestamps correctly" do
11
- @tracker.update(request(:timestamp => 20090102000000))
12
- @tracker.update(request(:timestamp => 20090101000000))
13
- @tracker.update(request(:timestamp => 20090103000000))
10
+ it 'should store timestamps correctly' do
11
+ @tracker.update(request(timestamp: 20_090_102_000_000))
12
+ @tracker.update(request(timestamp: 20_090_101_000_000))
13
+ @tracker.update(request(timestamp: 20_090_103_000_000))
14
14
 
15
15
  @tracker.hour_frequencies[0].should eql(3)
16
16
  end
17
17
 
18
- it "should count the number of timestamps correctly" do
19
- @tracker.update(request(:timestamp => 20090102000000))
20
- @tracker.update(request(:timestamp => 20090101000000))
21
- @tracker.update(request(:timestamp => 20090103000000))
22
- @tracker.update(request(:timestamp => 20090103010000))
18
+ it 'should count the number of timestamps correctly' do
19
+ @tracker.update(request(timestamp: 20_090_102_000_000))
20
+ @tracker.update(request(timestamp: 20_090_101_000_000))
21
+ @tracker.update(request(timestamp: 20_090_103_000_000))
22
+ @tracker.update(request(timestamp: 20_090_103_010_000))
23
23
 
24
24
  @tracker.total_requests.should eql(4)
25
25
  end
26
26
 
27
- it "should set the first request timestamp correctly" do
28
- @tracker.update(request(:timestamp => 20090102000000))
29
- @tracker.update(request(:timestamp => 20090101000000))
30
- @tracker.update(request(:timestamp => 20090103000000))
27
+ it 'should set the first request timestamp correctly' do
28
+ @tracker.update(request(timestamp: 20_090_102_000_000))
29
+ @tracker.update(request(timestamp: 20_090_101_000_000))
30
+ @tracker.update(request(timestamp: 20_090_103_000_000))
31
31
 
32
32
  @tracker.first_timestamp.should == DateTime.parse('Januari 1, 2009 00:00:00')
33
33
  end
34
34
 
35
- it "should set the last request timestamp correctly" do
36
- @tracker.update(request(:timestamp => 20090102000000))
37
- @tracker.update(request(:timestamp => 20090101000000))
38
- @tracker.update(request(:timestamp => 20090103000000))
35
+ it 'should set the last request timestamp correctly' do
36
+ @tracker.update(request(timestamp: 20_090_102_000_000))
37
+ @tracker.update(request(timestamp: 20_090_101_000_000))
38
+ @tracker.update(request(timestamp: 20_090_103_000_000))
39
39
 
40
40
  @tracker.last_timestamp.should == DateTime.parse('Januari 3, 2009 00:00:00')
41
41
  end
42
42
 
43
- it "should return the correct timespan in days when multiple requests are given" do
44
- @tracker.update(request(:timestamp => 20090102000000))
45
- @tracker.update(request(:timestamp => 20090101000000))
46
- @tracker.update(request(:timestamp => 20090103000000))
43
+ it 'should return the correct timespan in days when multiple requests are given' do
44
+ @tracker.update(request(timestamp: 20_090_102_000_000))
45
+ @tracker.update(request(timestamp: 20_090_101_000_000))
46
+ @tracker.update(request(timestamp: 20_090_103_000_000))
47
47
 
48
48
  @tracker.timespan.should == 2
49
49
  end
@@ -57,23 +57,23 @@ describe RequestLogAnalyzer::Tracker::HourlySpread, 'reporting' do
57
57
  @tracker.prepare
58
58
  end
59
59
 
60
- it "should generate a report without errors when no request was tracked" do
60
+ it 'should generate a report without errors when no request was tracked' do
61
61
  lambda { @tracker.report(mock_output) }.should_not raise_error
62
62
  end
63
63
 
64
- it "should generate a report without errors when multiple requests were tracked" do
65
- @tracker.update(request(:timestamp => 20090102000000))
66
- @tracker.update(request(:timestamp => 20090101000000))
67
- @tracker.update(request(:timestamp => 20090103000000))
68
- @tracker.update(request(:timestamp => 20090103010000))
64
+ it 'should generate a report without errors when multiple requests were tracked' do
65
+ @tracker.update(request(timestamp: 20_090_102_000_000))
66
+ @tracker.update(request(timestamp: 20_090_101_000_000))
67
+ @tracker.update(request(timestamp: 20_090_103_000_000))
68
+ @tracker.update(request(timestamp: 20_090_103_010_000))
69
69
  lambda { @tracker.report(mock_output) }.should_not raise_error
70
70
  end
71
-
72
- it "should generate a YAML output" do
73
- @tracker.update(request(:timestamp => 20090102000000))
74
- @tracker.update(request(:timestamp => 20090101000000))
75
- @tracker.update(request(:timestamp => 20090103000000))
76
- @tracker.update(request(:timestamp => 20090103010000))
77
- @tracker.to_yaml_object.should == {"22:00 - 23:00"=>0, "9:00 - 10:00"=>0, "7:00 - 8:00"=>0, "2:00 - 3:00"=>0, "12:00 - 13:00"=>0, "11:00 - 12:00"=>0, "16:00 - 17:00"=>0, "15:00 - 16:00"=>0, "19:00 - 20:00"=>0, "3:00 - 4:00"=>0, "21:00 - 22:00"=>0, "20:00 - 21:00"=>0, "14:00 - 15:00"=>0, "13:00 - 14:00"=>0, "4:00 - 5:00"=>0, "10:00 - 11:00"=>0, "18:00 - 19:00"=>0, "17:00 - 18:00"=>0, "8:00 - 9:00"=>0, "6:00 - 7:00"=>0, "5:00 - 6:00"=>0, "1:00 - 2:00"=>1, "0:00 - 1:00"=>3, "23:00 - 24:00"=>0}
71
+
72
+ it 'should generate a YAML output' do
73
+ @tracker.update(request(timestamp: 20_090_102_000_000))
74
+ @tracker.update(request(timestamp: 20_090_101_000_000))
75
+ @tracker.update(request(timestamp: 20_090_103_000_000))
76
+ @tracker.update(request(timestamp: 20_090_103_010_000))
77
+ @tracker.to_yaml_object.should == { '22:00 - 23:00' => 0, '9:00 - 10:00' => 0, '7:00 - 8:00' => 0, '2:00 - 3:00' => 0, '12:00 - 13:00' => 0, '11:00 - 12:00' => 0, '16:00 - 17:00' => 0, '15:00 - 16:00' => 0, '19:00 - 20:00' => 0, '3:00 - 4:00' => 0, '21:00 - 22:00' => 0, '20:00 - 21:00' => 0, '14:00 - 15:00' => 0, '13:00 - 14:00' => 0, '4:00 - 5:00' => 0, '10:00 - 11:00' => 0, '18:00 - 19:00' => 0, '17:00 - 18:00' => 0, '8:00 - 9:00' => 0, '6:00 - 7:00' => 0, '5:00 - 6:00' => 0, '1:00 - 2:00' => 1, '0:00 - 1:00' => 3, '23:00 - 24:00' => 0 }
78
78
  end
79
- end
79
+ end
@@ -4,37 +4,36 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
4
4
 
5
5
  context 'static category' do
6
6
  before(:each) do
7
- @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(:category => :category, :value => :blah)
7
+ @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(category: :category, value: :blah)
8
8
  @tracker.prepare
9
9
  end
10
10
 
11
- it "should register a request in the right category" do
12
- @tracker.update(request(:category => 'a', :blah => 2))
11
+ it 'should register a request in the right category' do
12
+ @tracker.update(request(category: 'a', blah: 2))
13
13
  @tracker.categories.should include('a')
14
14
  end
15
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))
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
20
 
21
21
  @tracker.categories['a'][:sum].should == 2
22
22
  @tracker.categories['b'][:sum].should == 4
23
23
  end
24
24
  end
25
25
 
26
-
27
26
  context 'dynamic category' do
28
27
  before(:each) do
29
- @categorizer = Proc.new { |request| request[:duration] > 0.2 ? 'slow' : 'fast' }
30
- @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(:category => @categorizer, :value => :blah)
28
+ @categorizer = proc { |request| request[:duration] > 0.2 ? 'slow' : 'fast' }
29
+ @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(category: @categorizer, value: :blah)
31
30
  @tracker.prepare
32
31
  end
33
32
 
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))
33
+ it 'should use the categorizer to determine the right category' do
34
+ @tracker.update(request(category: 'a', duration: 0.2, blah: 2))
35
+ @tracker.update(request(category: 'b', duration: 0.3, blah: 2))
36
+ @tracker.update(request(category: 'b', duration: 0.4, blah: 2))
38
37
 
39
38
  @tracker.categories['fast'][:sum].should == 2
40
39
  @tracker.categories['slow'][:sum].should == 4
@@ -43,57 +42,57 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
43
42
 
44
43
  describe '#update' do
45
44
  before(:each) do
46
- @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(:value => :duration, :category => :category,
47
- :min_bucket_value => 0.0001, :max_bucket_value => 1000)
45
+ @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(value: :duration, category: :category,
46
+ min_bucket_value: 0.0001, max_bucket_value: 1000)
48
47
 
49
48
  @tracker.prepare
50
49
 
51
- @tracker.update(request(:category => 'a', :duration => 0.4))
52
- @tracker.update(request(:category => 'a', :duration => 0.2))
53
- @tracker.update(request(:category => 'a', :duration => 0.3))
50
+ @tracker.update(request(category: 'a', duration: 0.4))
51
+ @tracker.update(request(category: 'a', duration: 0.2))
52
+ @tracker.update(request(category: 'a', duration: 0.3))
54
53
  end
55
54
 
56
- it "should sum of the durations for a category correctly" do
55
+ it 'should sum of the durations for a category correctly' do
57
56
  @tracker.sum('a').should be_within(0.000001).of(0.9)
58
57
  end
59
58
 
60
- it "should overall sum of the durations correctly" do
59
+ it 'should overall sum of the durations correctly' do
61
60
  @tracker.sum_overall.should be_within(0.000001).of(0.9)
62
61
  end
63
62
 
64
- it "should keep track of the minimum and maximum duration" do
63
+ it 'should keep track of the minimum and maximum duration' do
65
64
  @tracker.min('a').should == 0.2
66
65
  @tracker.max('a').should == 0.4
67
66
  end
68
67
 
69
- it "should calculate the mean duration correctly" do
68
+ it 'should calculate the mean duration correctly' do
70
69
  @tracker.mean('a').should be_within(0.000001).of(0.3)
71
70
  end
72
71
 
73
- it "should calculate the overall mean duration correctly" do
72
+ it 'should calculate the overall mean duration correctly' do
74
73
  @tracker.mean_overall.should be_within(0.000001).of(0.3)
75
74
  end
76
75
 
77
- it "should calculate the duration variance correctly" do
76
+ it 'should calculate the duration variance correctly' do
78
77
  @tracker.variance('a').should be_within(0.000001).of(0.01)
79
78
  end
80
79
 
81
- it "should calculate the duration standard deviation correctly" do
80
+ it 'should calculate the duration standard deviation correctly' do
82
81
  @tracker.stddev('a').should be_within(0.000001).of(0.1)
83
82
  end
84
83
 
85
- it "should calculate the bucket spread correctly" do
86
- @tracker.update(request(:category => 'a', :duration => 0.3))
87
- @tracker.update(request(:category => 'a', :duration => 0.3))
88
- @tracker.update(request(:category => 'a', :duration => 0.3))
89
- @tracker.update(request(:category => 'a', :duration => 0.3))
90
- @tracker.update(request(:category => 'a', :duration => 0.3))
91
- @tracker.update(request(:category => 'a', :duration => 0.3))
92
- @tracker.update(request(:category => 'a', :duration => 0.3))
84
+ it 'should calculate the bucket spread correctly' do
85
+ @tracker.update(request(category: 'a', duration: 0.3))
86
+ @tracker.update(request(category: 'a', duration: 0.3))
87
+ @tracker.update(request(category: 'a', duration: 0.3))
88
+ @tracker.update(request(category: 'a', duration: 0.3))
89
+ @tracker.update(request(category: 'a', duration: 0.3))
90
+ @tracker.update(request(category: 'a', duration: 0.3))
91
+ @tracker.update(request(category: 'a', duration: 0.3))
93
92
  # 0.2, 0.3 and 0.4 are already there, so, 10 values in total
94
-
93
+
95
94
  @tracker.median('a').should be_within(0.01).of(0.3)
96
-
95
+
97
96
  @tracker.percentile_interval('a', 80).begin.should be_within(0.01).of(0.3)
98
97
  @tracker.percentile_interval('a', 80).end.should be_within(0.01).of(0.3)
99
98
  @tracker.percentile_interval('a', 90).begin.should be_within(0.01).of(0.2)
@@ -103,85 +102,85 @@ describe RequestLogAnalyzer::Tracker::NumericValue do
103
102
 
104
103
  describe '#report' do
105
104
  before(:each) do
106
- @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(:category => :category, :value => :blah)
105
+ @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(category: :category, value: :blah)
107
106
  @tracker.prepare
108
107
  end
109
108
 
110
- it "should generate a report without errors when one category is present" do
111
- @tracker.update(request(:category => 'a', :blah => 2))
109
+ it 'should generate a report without errors when one category is present' do
110
+ @tracker.update(request(category: 'a', blah: 2))
112
111
  lambda { @tracker.report(mock_output) }.should_not raise_error
113
112
  end
114
113
 
115
- it "should generate a report without errors when no category is present" do
114
+ it 'should generate a report without errors when no category is present' do
116
115
  lambda { @tracker.report(mock_output) }.should_not raise_error
117
116
  end
118
117
 
119
- it "should generate a report without errors when multiple categories are present" do
120
- @tracker.update(request(:category => 'a', :blah => 2))
121
- @tracker.update(request(:category => 'b', :blah => 2))
118
+ it 'should generate a report without errors when multiple categories are present' do
119
+ @tracker.update(request(category: 'a', blah: 2))
120
+ @tracker.update(request(category: 'b', blah: 2))
122
121
  lambda { @tracker.report(mock_output) }.should_not raise_error
123
122
  end
124
123
  end
125
124
 
126
125
  describe '#to_yaml_object' do
127
126
  before(:each) do
128
- @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(:category => :category, :value => :blah)
127
+ @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(category: :category, value: :blah)
129
128
  @tracker.prepare
130
129
  end
131
130
 
132
- it "should generate a YAML output" do
133
- @tracker.update(request(:category => 'a', :blah => 2))
134
- @tracker.update(request(:category => 'b', :blah => 3))
135
- @tracker.to_yaml_object.keys.should =~ ['a', 'b']
136
-
137
- @tracker.to_yaml_object['a'].should include(:min => 2, :hits => 1, :max => 2, :mean => 2.0, :sum => 2, :sum_of_squares => 0.0)
131
+ it 'should generate a YAML output' do
132
+ @tracker.update(request(category: 'a', blah: 2))
133
+ @tracker.update(request(category: 'b', blah: 3))
134
+ @tracker.to_yaml_object.keys.should =~ %w(a b)
135
+
136
+ @tracker.to_yaml_object['a'].should include(min: 2, hits: 1, max: 2, mean: 2.0, sum: 2, sum_of_squares: 0.0)
138
137
  @tracker.to_yaml_object['a'][:interval_95_percent].should be_member(2)
139
-
140
- @tracker.to_yaml_object['b'].should include(:min => 3, :hits => 1, :max => 3, :mean => 3.0, :sum => 3, :sum_of_squares => 0.0)
138
+
139
+ @tracker.to_yaml_object['b'].should include(min: 3, hits: 1, max: 3, mean: 3.0, sum: 3, sum_of_squares: 0.0)
141
140
  @tracker.to_yaml_object['b'][:interval_95_percent].should be_member(3)
142
141
  end
143
142
  end
144
143
 
145
144
  describe '#display_value' do
146
145
  before(:each) do
147
- @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(:category => :category, :value => :blah)
146
+ @tracker = RequestLogAnalyzer::Tracker::NumericValue.new(category: :category, value: :blah)
148
147
  @tracker.prepare
149
148
  end
150
149
 
151
- it "should not crash on nil" do
150
+ it 'should not crash on nil' do
152
151
  lambda { @tracker.display_value(nil) }.should_not raise_error
153
152
  @tracker.display_value(nil).should_not be_nil
154
- @tracker.display_value(nil).should_not eql("")
153
+ @tracker.display_value(nil).should_not eql('')
155
154
  end
156
155
 
157
- it "should not touch thousands" do
156
+ it 'should not touch thousands' do
158
157
  @tracker.display_value(1000).should eql('1000 ')
159
158
  @tracker.display_value(5000).should eql('5000 ')
160
159
  @tracker.display_value(9001).should eql('9001 ')
161
160
  end
162
161
 
163
- it "should reduce milions to thousands (k)" do
164
- @tracker.display_value(1000_000).should eql('1000k')
165
- @tracker.display_value(5000_000).should eql('5000k')
166
- @tracker.display_value(9000_001).should eql('9000k')
162
+ it 'should reduce milions to thousands (k)' do
163
+ @tracker.display_value(1_000_000).should eql('1000k')
164
+ @tracker.display_value(5_000_000).should eql('5000k')
165
+ @tracker.display_value(9_000_001).should eql('9000k')
167
166
  end
168
167
 
169
- it "should reduce giga to millons (M)" do
170
- @tracker.display_value(1000_000_000).should eql('1000M')
171
- @tracker.display_value(5000_000_000).should eql('5000M')
172
- @tracker.display_value(9000_000_001).should eql('9000M')
168
+ it 'should reduce giga to millons (M)' do
169
+ @tracker.display_value(1_000_000_000).should eql('1000M')
170
+ @tracker.display_value(5_000_000_000).should eql('5000M')
171
+ @tracker.display_value(9_000_000_001).should eql('9000M')
173
172
  end
174
173
 
175
- it "should reduce teras to gigas (G)" do
176
- @tracker.display_value(1000_000_000_000).should eql('1000G')
177
- @tracker.display_value(5000_000_000_000).should eql('5000G')
178
- @tracker.display_value(9000_000_001_001).should eql('9000G')
174
+ it 'should reduce teras to gigas (G)' do
175
+ @tracker.display_value(1_000_000_000_000).should eql('1000G')
176
+ @tracker.display_value(5_000_000_000_000).should eql('5000G')
177
+ @tracker.display_value(9_000_000_001_001).should eql('9000G')
179
178
  end
180
179
 
181
- it "should reduce petas to teras (T)" do
182
- @tracker.display_value(1000_000_000_000_000).should eql('1000T')
183
- @tracker.display_value(5000_000_000_000_000).should eql('5000T')
184
- @tracker.display_value(9000_000_001_001_000).should eql('9000T')
180
+ it 'should reduce petas to teras (T)' do
181
+ @tracker.display_value(1_000_000_000_000_000).should eql('1000T')
182
+ @tracker.display_value(5_000_000_000_000_000).should eql('5000T')
183
+ @tracker.display_value(9_000_000_001_001_000).should eql('9000T')
185
184
  end
186
185
  end
187
186
  end