@@ -4,45 +4,83 @@ class TestInvocation < Test::Unit::TestCase
44 def test_success
55 service = FakeService . new
66
7- CC ::Service ::Invocation . new ( service ) . invoke
7+ CC ::Service ::Invocation . new ( service )
88
99 assert_equal 1 , service . receive_count
1010 end
1111
12- def test_failure
12+ def test_retries
1313 service = FakeService . new
1414 service . raise_on_receive = true
15+ error_occurred = false
1516
16- CC ::Service ::Invocation . new ( service ) . invoke
17+ begin
18+ CC ::Service ::Invocation . new ( service ) do |i |
19+ i . with :retries , 3
20+ end
21+ rescue
22+ error_occurred = true
23+ end
1724
18- # First call + N retries
19- expected_count = 1 + CC ::Service ::Invocation ::RETRIES
20- assert_equal expected_count , service . receive_count
25+ assert error_occurred
26+ assert_equal 1 + 3 , service . receive_count
2127 end
2228
23- def test_success_metrics
29+ def test_metrics
2430 statsd = FakeStatsd . new
25- logger = FakeLogger . new
26- service = FakeService . new
2731
28- CC ::Service ::Invocation . new ( service , statsd , logger ) . invoke
32+ CC ::Service ::Invocation . new ( FakeService . new ) do |i |
33+ i . with :metrics , statsd , "a_prefix"
34+ end
2935
3036 assert_equal 1 , statsd . incremented_keys . length
31- assert_match /services\. invocations/ , statsd . incremented_keys . first
32- assert_empty logger . logged_errors
37+ assert_equal "services.invocations.a_prefix" , statsd . incremented_keys . first
3338 end
3439
35- def test_failure_metrics
40+ def test_metrics_on_errors
3641 statsd = FakeStatsd . new
42+ service = FakeService . new
43+ service . raise_on_receive = true
44+ error_occurred = false
45+
46+ begin
47+ CC ::Service ::Invocation . new ( service ) do |i |
48+ i . with :metrics , statsd , "a_prefix"
49+ end
50+ rescue
51+ error_occurred = true
52+ end
53+
54+ assert error_occurred
55+ assert_equal 1 , statsd . incremented_keys . length
56+ assert_match /^services\. errors\. a_prefix/ , statsd . incremented_keys . first
57+ end
58+
59+ def test_error_handling
3760 logger = FakeLogger . new
3861 service = FakeService . new
3962 service . raise_on_receive = true
4063
41- CC ::Service ::Invocation . new ( service , statsd , logger ) . invoke
64+ CC ::Service ::Invocation . new ( service ) do |i |
65+ i . with :error_handling , logger , "a_prefix"
66+ end
67+
68+ assert_equal 1 , logger . logged_errors . length
69+ assert_match /^Exception invoking service: \[ a_prefix\] / , logger . logged_errors . first
70+ end
71+
72+ def test_multiple_middleware
73+ service = FakeService . new
74+ service . raise_on_receive = true
75+ logger = FakeLogger . new
76+
77+ CC ::Service ::Invocation . new ( service ) do |i |
78+ i . with :retries , 3
79+ i . with :error_handling , logger
80+ end
4281
43- refute_empty statsd . incremented_keys
44- refute_empty logger . logged_errors
45- assert_match /services\. errors/ , statsd . incremented_keys . first
82+ assert_equal 1 + 3 , service . receive_count
83+ assert_equal 1 , logger . logged_errors . length
4684 end
4785
4886 private
@@ -51,10 +89,6 @@ class FakeService
5189 attr_reader :receive_count
5290 attr_accessor :raise_on_receive
5391
54- def self . slug
55- "fake-service"
56- end
57-
5892 def initialize
5993 @receive_count = 0
6094 end
0 commit comments