-
Notifications
You must be signed in to change notification settings - Fork 5
/
runtests.jl
156 lines (115 loc) · 4.22 KB
/
runtests.jl
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
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#==============================================================================#
# runtests.jl
#
# Tests for Retry.jl
#
# Copyright Sam O'Connor 2014 - All rights reserved
#==============================================================================#
using Retry
using Test
mutable struct TestException <: Exception
code
end
# @protected try re-throws the exception by default...
@test_throws TestException @protected try
throw(TestException(7))
catch e
end
# @protected try re-throws the exception if the @ignore condition is false...
@test_throws TestException @protected try
throw(TestException(7))
catch e
@ignore if ecode(e) == "Nothing to see here" end
end
# Exception ignored by error code...
@test @protected try
throw(TestException(7))
catch e
@ignore if ecode(e) == 7 end
end
# Exception ignored by type...
@test @protected try
throw(TestException(7))
catch e
@ignore if typeof(e) == TestException end
end
# Try 4 times and re-thow exception...
count = 0
@test_throws TestException @repeat 4 try
global count += 1
throw(TestException(7))
catch e
@retry if ecode(e) == 7 end
end
@test count == 4
# Only try 1 time and re-thow exception if @retry condition is not met...
count = 0
@test_throws TestException @repeat 4 try
global count += 1
throw(TestException(5))
catch e
@retry if ecode(e) == 7 end
end
@test count == 1
# Only try 1 time and re-thow exception if @retry condition is not met...
count = 0
@test @repeat 4 try
global count += 1
throw(TestException(7))
catch e
@ignore if ecode(e) == 7 end
end
@test count == 1
# Check that retry delay gets longer each time...
count = 0
start = time()
last_t = 0
delay = -1
i = -1
@test_throws TestException @repeat 3 try
global count, start, last_t
t = time() - start
@test t > last_t * 9.9
start = time()
count += 1
throw(TestException(7))
catch e
@delay_retry if ecode(e) == 7 end
end
@test count == 3
# Check for leakage of macro local variables...
@test delay == -1
@test i == -1
# Re-throw after 2 attempts...
count = 0
@test_throws TestException @repeat 2 try
global count += 1
throw(TestException(count))
catch e
@retry if ecode(e) < 3 end
@ignore if ecode(e) == 3 end
end
@test count == 2
# @ignore condition met after 3 attempts...
count = 0
@test @repeat 3 try
global count += 1
throw(TestException(count))
catch e
@retry if ecode(e) < 3 end
@ignore if ecode(e) == 3 end
end
@test count == 3
# No more attempts after @ignore condition met...
count = 0
@test @repeat 10 try
global count += 1
throw(TestException(count))
catch e
@retry if ecode(e) < 3 end
@ignore if ecode(e) == 3 end
end
@test count == 3
#==============================================================================#
# End of file.
#==============================================================================#