request-log-analyzer 1.13.1 → 1.13.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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