5
5
"""
6
6
7
7
from copy import copy
8
- from time import time
8
+ import time
9
9
import gc
10
10
11
11
import unittest
@@ -49,43 +49,40 @@ def teardown_method(self, _):
49
49
# we need to reenable the garbage collector again
50
50
gc .enable ()
51
51
52
- @pytest .mark .timeout (inc (0.2 ))
53
52
def test_general (self ):
54
53
messages = [
55
54
Message (timestamp = 50.0 ),
56
55
Message (timestamp = 50.0 ),
57
56
Message (timestamp = 50.0 + 0.05 ),
58
- Message (timestamp = 50.0 + 0.05 + 0.08 ),
57
+ Message (timestamp = 50.0 + 0.13 ),
59
58
Message (timestamp = 50.0 ), # back in time
60
59
]
61
- sync = MessageSync (messages , gap = 0.0 )
60
+ sync = MessageSync (messages , gap = 0.0 , skip = 0.0 )
62
61
63
- start = time ()
62
+ t_start = time . perf_counter ()
64
63
collected = []
65
64
timings = []
66
65
for message in sync :
66
+ t_now = time .perf_counter ()
67
67
collected .append (message )
68
- now = time ()
69
- timings .append (now - start )
70
- start = now
68
+ timings .append (t_now - t_start )
71
69
72
70
self .assertMessagesEqual (messages , collected )
73
71
self .assertEqual (len (timings ), len (messages ), "programming error in test code" )
74
72
75
- self .assertTrue (0.0 <= timings [0 ] < inc (0.005 ), str (timings [0 ]))
76
- self .assertTrue (0.0 <= timings [1 ] < inc (0.005 ), str (timings [1 ]))
77
- self .assertTrue (0.045 <= timings [2 ] < inc (0.055 ), str (timings [2 ]))
78
- self .assertTrue (0.075 <= timings [3 ] < inc (0.085 ), str (timings [3 ]))
79
- self .assertTrue (0.0 <= timings [4 ] < inc (0.005 ), str (timings [4 ]))
73
+ self .assertTrue (0.0 <= timings [0 ] < 0.0 + inc (0.02 ), str (timings [0 ]))
74
+ self .assertTrue (0.0 <= timings [1 ] < 0.0 + inc (0.02 ), str (timings [1 ]))
75
+ self .assertTrue (0.045 <= timings [2 ] < 0.05 + inc (0.02 ), str (timings [2 ]))
76
+ self .assertTrue (0.125 <= timings [3 ] < 0.13 + inc (0.02 ), str (timings [3 ]))
77
+ self .assertTrue (0.125 <= timings [4 ] < 0.13 + inc (0.02 ), str (timings [4 ]))
80
78
81
- @pytest .mark .timeout (inc (0.1 ) * len (TEST_FEWER_MESSAGES )) # very conservative
82
79
def test_skip (self ):
83
80
messages = copy (TEST_FEWER_MESSAGES )
84
81
sync = MessageSync (messages , skip = 0.005 , gap = 0.0 )
85
82
86
- before = time ()
83
+ before = time . perf_counter ()
87
84
collected = list (sync )
88
- after = time ()
85
+ after = time . perf_counter ()
89
86
took = after - before
90
87
91
88
# the handling of the messages itself also takes some time:
@@ -96,26 +93,25 @@ def test_skip(self):
96
93
97
94
98
95
@skip_on_unreliable_platforms
99
- @pytest .mark .timeout (inc (0.3 ))
100
96
@pytest .mark .parametrize (
101
- "timestamp_1,timestamp_2" , [(0.0 , 0.0 ), (0.0 , 0.01 ), (0.01 , 0.0 )]
97
+ "timestamp_1,timestamp_2" , [(0.0 , 0.0 ), (0.0 , 0.01 ), (0.01 , 1.5 )]
102
98
)
103
99
def test_gap (timestamp_1 , timestamp_2 ):
104
100
"""This method is alone so it can be parameterized."""
105
101
messages = [
106
102
Message (arbitration_id = 0x1 , timestamp = timestamp_1 ),
107
103
Message (arbitration_id = 0x2 , timestamp = timestamp_2 ),
108
104
]
109
- sync = MessageSync (messages , gap = 0.1 )
105
+ sync = MessageSync (messages , timestamps = False , gap = 0.1 )
110
106
111
107
gc .disable ()
112
- before = time ()
108
+ before = time . perf_counter ()
113
109
collected = list (sync )
114
- after = time ()
110
+ after = time . perf_counter ()
115
111
gc .enable ()
116
112
took = after - before
117
113
118
- assert 0.1 <= took < inc (0.3 )
114
+ assert 0.195 <= took < 0.2 + inc (0.02 )
119
115
assert messages == collected
120
116
121
117
0 commit comments