1
1
"""Test suite for supervisor.socket_manager"""
2
2
3
+ import gc
3
4
import os
4
5
import unittest
5
6
import socket
@@ -49,6 +50,7 @@ def test_on_delete(self):
49
50
proxy = self ._makeOne (Subject (), on_delete = self .setOnDeleteCalled )
50
51
self .assertEqual (5 , proxy .getValue ())
51
52
proxy = None
53
+ gc_collect ()
52
54
self .assertTrue (self .on_deleteCalled )
53
55
54
56
class ReferenceCounterTest (unittest .TestCase ):
@@ -91,6 +93,9 @@ def test_decr_at_zero_raises_error(self):
91
93
92
94
class SocketManagerTest (unittest .TestCase ):
93
95
96
+ def tearDown (self ):
97
+ gc_collect ()
98
+
94
99
def _getTargetClass (self ):
95
100
from supervisor .socket_manager import SocketManager
96
101
return SocketManager
@@ -154,10 +159,12 @@ def test_socket_lifecycle(self):
154
159
self .assertTrue (sock_manager .is_prepared ())
155
160
self .assertFalse (sock_manager .socket .close_called )
156
161
sock = None
162
+ gc_collect ()
157
163
# Socket not actually closed yet b/c ref ct is 1
158
164
self .assertTrue (sock_manager .is_prepared ())
159
165
self .assertFalse (sock_manager .socket .close_called )
160
166
sock2 = None
167
+ gc_collect ()
161
168
# Socket closed
162
169
self .assertFalse (sock_manager .is_prepared ())
163
170
self .assertTrue (sock_manager .socket .close_called )
@@ -170,6 +177,7 @@ def test_socket_lifecycle(self):
170
177
self .assertNotEqual (sock_id , sock3_id )
171
178
# Drop ref ct to zero
172
179
del sock3
180
+ gc_collect ()
173
181
# Now assert that socket is closed
174
182
self .assertFalse (sock_manager .is_prepared ())
175
183
self .assertTrue (sock_manager .socket .close_called )
@@ -184,6 +192,7 @@ def test_logging(self):
184
192
self .assertEqual ('Creating socket %s' % repr (conf ), logger .data [0 ])
185
193
# socket close
186
194
del sock
195
+ gc_collect ()
187
196
self .assertEqual (len (logger .data ), 2 )
188
197
self .assertEqual ('Closing socket %s' % repr (conf ), logger .data [1 ])
189
198
@@ -232,3 +241,9 @@ def test_close_requires_prepared_socket(self):
232
241
self .fail ()
233
242
except Exception as e :
234
243
self .assertEqual (e .args [0 ], 'Socket has not been prepared' )
244
+
245
+ def gc_collect ():
246
+ if __pypy__ is not None :
247
+ gc .collect ()
248
+ gc .collect ()
249
+ gc .collect ()
0 commit comments