1
1
from unittest import TestCase
2
2
from unittest .mock import patch
3
3
4
- from maxcube .deadline import Timeout
4
+ from maxcube .deadline import Deadline , Timeout
5
5
6
6
ZERO_TIMEOUT = Timeout ("zero" , 0 )
7
7
ONE_TIMEOUT = Timeout ("one" , 1 )
@@ -14,48 +14,48 @@ class TestDeadline(TestCase):
14
14
15
15
def testDeadlineLowerBoundForRemainingTime (self , timeMock ):
16
16
timeMock .side_effect = [0 , 0.4 , 0.6 ]
17
- deadline = ONE_TIMEOUT . deadline ( )
17
+ deadline = Deadline ( ONE_TIMEOUT )
18
18
self .assertAlmostEqual (0.6 , deadline .remaining (lower_bound = 0.50 ))
19
19
self .assertAlmostEqual (0.5 , deadline .remaining (lower_bound = 0.50 ))
20
20
21
21
def testDeadlineUpperBoundForRemainingTime (self , timeMock ):
22
22
timeMock .side_effect = [0 , 0.4 , 0.6 ]
23
- deadline = ONE_TIMEOUT . deadline ( )
23
+ deadline = Deadline ( ONE_TIMEOUT )
24
24
self .assertAlmostEqual (0.5 , deadline .remaining (upper_bound = 0.50 ))
25
25
self .assertAlmostEqual (0.4 , deadline .remaining (upper_bound = 0.50 ))
26
26
27
27
def testDeadlineIsExpired (self , timeMock ):
28
28
timeMock .side_effect = [0 , 0.4 , 1.0 , 1.000001 ]
29
- deadline = ONE_TIMEOUT . deadline ( )
29
+ deadline = Deadline ( ONE_TIMEOUT )
30
30
self .assertFalse (deadline .is_expired ())
31
31
self .assertTrue (deadline .is_expired ())
32
32
self .assertTrue (deadline .is_expired ())
33
33
34
34
def testZeroDeadlineIsAlreadyExpired (self , timeMock ):
35
- timeMock .side_effect = [ 0.0 , 0.0 ]
36
- deadline = ZERO_TIMEOUT . deadline ( )
37
- self .assertEqual ("zero" , deadline .fullname ())
35
+ timeMock .return_value = 0.0
36
+ deadline = Deadline ( ZERO_TIMEOUT )
37
+ self .assertEqual ("zero[0/0] " , deadline .fullname ())
38
38
self .assertTrue (deadline .is_expired ())
39
39
40
40
def testSubtimeoutHandling (self , timeMock ):
41
- timeMock .side_effect = [0.0 , 0.1 , 0.2 ]
42
- deadline = ROOT_TIMEOUT . deadline ( )
41
+ timeMock .side_effect = [0.0 , 0.1 , 0.2 , 0.2 , 0.3 ]
42
+ deadline = Deadline ( ROOT_TIMEOUT )
43
43
subdeadline = deadline .subtimeout (ONE_TIMEOUT )
44
- self .assertEqual ("root:one" , subdeadline .fullname ())
45
- self .assertAlmostEqual (0.9 , subdeadline .remaining ())
44
+ self .assertEqual ("root[9.8/10] :one[0.9/1] " , subdeadline .fullname ())
45
+ self .assertAlmostEqual (0.8 , subdeadline .remaining ())
46
46
47
47
def testSubtimeoutHandlingWhenLargerThanTimeout (self , timeMock ):
48
48
timeMock .side_effect = [0.0 , 9.1 , 9.2 ]
49
- deadline = ROOT_TIMEOUT . deadline ( )
49
+ deadline = Deadline ( ROOT_TIMEOUT )
50
50
subdeadline = deadline .subtimeout (ONE_TIMEOUT )
51
51
self .assertAlmostEqual (0.8 , subdeadline .remaining ())
52
52
53
53
def testToString (self , timeMock ):
54
54
timeMock .side_effect = [0.0 , 0.1 ]
55
- deadline = ONE_TIMEOUT . deadline ( )
56
- self .assertEqual ("Deadline one will expire in 0.900 seconds " , str (deadline ))
55
+ deadline = Deadline ( ONE_TIMEOUT )
56
+ self .assertEqual ("Deadline one[0.9/1] " , str (deadline ))
57
57
58
58
def testToStringForExpiredDeadline (self , timeMock ):
59
59
timeMock .side_effect = [0.0 , 1.1 ]
60
- deadline = ONE_TIMEOUT . deadline ( )
61
- self .assertEqual ("Deadline one expired 0.100 seconds ago " , str (deadline ))
60
+ deadline = Deadline ( ONE_TIMEOUT )
61
+ self .assertEqual ("Deadline one[0/1] " , str (deadline ))
0 commit comments