@@ -17,36 +17,39 @@ class RecvTimeout(TestCase):
17
17
18
18
def test_recv_timeout_vs_keepalive (self ) -> None :
19
19
"""verify that receive timeout as used via ping() is different to keep alive timeout"""
20
- host = "127.0.0.1"
21
-
22
- recv_timeout = 4
23
- keep_alive = recv_timeout * 2
24
- mqtt_client = MQTT .MQTT (
25
- broker = host ,
26
- socket_pool = socket ,
27
- connect_retries = 1 ,
28
- socket_timeout = recv_timeout // 2 ,
29
- recv_timeout = recv_timeout ,
30
- keep_alive = keep_alive ,
31
- )
32
-
33
- # Create a mock socket that will accept anything and return nothing.
34
- socket_mock = Mock ()
35
- socket_mock .recv_into = Mock (side_effect = lambda ret_buf , buf_size : 0 )
36
- # pylint: disable=protected-access
37
- mqtt_client ._sock = socket_mock
38
-
39
- mqtt_client ._connected = lambda : True
40
- start = time .monotonic ()
41
- with self .assertRaises (MQTT .MMQTTException ):
42
- mqtt_client .ping ()
43
-
44
- # Verify the mock interactions.
45
- socket_mock .send .assert_called_once ()
46
- socket_mock .recv_into .assert_called ()
47
-
48
- now = time .monotonic ()
49
- assert recv_timeout <= (now - start ) < keep_alive
20
+
21
+ for side_effect in [lambda ret_buf , buf_size : 0 , socket .timeout ]:
22
+ with self .subTest ():
23
+ host = "127.0.0.1"
24
+
25
+ recv_timeout = 4
26
+ keep_alive = recv_timeout * 2
27
+ mqtt_client = MQTT .MQTT (
28
+ broker = host ,
29
+ socket_pool = socket ,
30
+ connect_retries = 1 ,
31
+ socket_timeout = recv_timeout // 2 ,
32
+ recv_timeout = recv_timeout ,
33
+ keep_alive = keep_alive ,
34
+ )
35
+
36
+ # Create a mock socket that will accept anything and return nothing.
37
+ socket_mock = Mock ()
38
+ socket_mock .recv_into = Mock (side_effect = side_effect )
39
+ # pylint: disable=protected-access
40
+ mqtt_client ._sock = socket_mock
41
+
42
+ mqtt_client ._connected = lambda : True
43
+ start = time .monotonic ()
44
+ with self .assertRaises (MQTT .MMQTTException ):
45
+ mqtt_client .ping ()
46
+
47
+ # Verify the mock interactions.
48
+ socket_mock .send .assert_called_once ()
49
+ socket_mock .recv_into .assert_called ()
50
+
51
+ now = time .monotonic ()
52
+ assert recv_timeout <= (now - start ) < keep_alive
50
53
51
54
52
55
if __name__ == "__main__" :
0 commit comments