1+ import pickle
12import sys
23
34from conjure_python_client ._http .requests_client import (
1213
1314def test_can_enable_keep_alives_in_transport_adapter ():
1415 assert (
15- TransportAdapter (
16- max_retries = 12 , enable_keep_alive = True
17- )._enable_keep_alive
16+ TransportAdapter (max_retries = 12 , enable_keep_alive = True )._enable_keep_alive
1817 is True
1918 )
2019 assert TransportAdapter (max_retries = 12 )._enable_keep_alive is False
@@ -38,3 +37,24 @@ def test_keep_alive_passed_in_state_in_transport_adapter():
3837 )
3938 assert ta ._enable_keep_alive is True
4039 assert ta .max_retries .total == 12
40+
41+
42+ def test_transport_adapter_pickles_correctly ():
43+ pre_adapter = TransportAdapter (enable_keep_alive = True )
44+ post_adapter = pickle .loads (pickle .dumps (pre_adapter ))
45+ assert post_adapter ._enable_keep_alive is True
46+ assert post_adapter ._pool_connections == pre_adapter ._pool_connections
47+ assert post_adapter ._pool_maxsize == pre_adapter ._pool_maxsize
48+
49+
50+ def test_transport_adapter_can_be_unpickled_from_old_pickle ():
51+ # Remove "_enable_keep_alive" attr from get state so that when picked it emulates an old instance of this
52+ # class being pickled before this attr was added. Then verify we can pickle and unpickle to validate we
53+ # give it a default value if not present when unpickled.
54+ TransportAdapter .__getstate__ = lambda self : {
55+ attr : getattr (self , attr , None )
56+ for attr in self .__attrs__
57+ if attr != TransportAdapter .ENABLE_KEEP_ALIVE_ATTR
58+ }
59+ adapter = pickle .loads (pickle .dumps (TransportAdapter ()))
60+ assert adapter ._enable_keep_alive is False
0 commit comments