11"""Test suite for supervisor.socket_manager"""
22
3+ import gc
34import os
45import unittest
56import socket
@@ -49,6 +50,7 @@ def test_on_delete(self):
4950 proxy = self ._makeOne (Subject (), on_delete = self .setOnDeleteCalled )
5051 self .assertEqual (5 , proxy .getValue ())
5152 proxy = None
53+ gc_collect ()
5254 self .assertTrue (self .on_deleteCalled )
5355
5456class ReferenceCounterTest (unittest .TestCase ):
@@ -91,6 +93,9 @@ def test_decr_at_zero_raises_error(self):
9193
9294class SocketManagerTest (unittest .TestCase ):
9395
96+ def tearDown (self ):
97+ gc_collect ()
98+
9499 def _getTargetClass (self ):
95100 from supervisor .socket_manager import SocketManager
96101 return SocketManager
@@ -154,10 +159,12 @@ def test_socket_lifecycle(self):
154159 self .assertTrue (sock_manager .is_prepared ())
155160 self .assertFalse (sock_manager .socket .close_called )
156161 sock = None
162+ gc_collect ()
157163 # Socket not actually closed yet b/c ref ct is 1
158164 self .assertTrue (sock_manager .is_prepared ())
159165 self .assertFalse (sock_manager .socket .close_called )
160166 sock2 = None
167+ gc_collect ()
161168 # Socket closed
162169 self .assertFalse (sock_manager .is_prepared ())
163170 self .assertTrue (sock_manager .socket .close_called )
@@ -170,6 +177,7 @@ def test_socket_lifecycle(self):
170177 self .assertNotEqual (sock_id , sock3_id )
171178 # Drop ref ct to zero
172179 del sock3
180+ gc_collect ()
173181 # Now assert that socket is closed
174182 self .assertFalse (sock_manager .is_prepared ())
175183 self .assertTrue (sock_manager .socket .close_called )
@@ -184,6 +192,7 @@ def test_logging(self):
184192 self .assertEqual ('Creating socket %s' % repr (conf ), logger .data [0 ])
185193 # socket close
186194 del sock
195+ gc_collect ()
187196 self .assertEqual (len (logger .data ), 2 )
188197 self .assertEqual ('Closing socket %s' % repr (conf ), logger .data [1 ])
189198
@@ -232,3 +241,9 @@ def test_close_requires_prepared_socket(self):
232241 self .fail ()
233242 except Exception as e :
234243 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