11#! /usr/bin/env python
22from __future__ import absolute_import
3+ import contextlib
34import datetime
45import gc
56import logging
@@ -242,6 +243,23 @@ def test_no_refresh_connection(self):
242243 self .assertEqual (0 , len (self .sess .pool .active ))
243244 self .assertEqual (0 , len (self .sess .pool .idle ))
244245
246+ @staticmethod
247+ @contextlib .contextmanager
248+ def configure_logger (logger , propagate = None , level = None , handler = None ):
249+ try :
250+ saved_level = logger .level
251+ logger .setLevel (level )
252+ saved_propagate = logger .propagate
253+ logger .propagate = propagate
254+ if handler :
255+ logger .addHandler (handler )
256+ yield logger
257+ finally :
258+ if handler :
259+ logger .removeHandler (handler )
260+ logger .setLevel (saved_level )
261+ logger .propagate = saved_propagate
262+
245263 # Test to confirm the connection destructor log message is actually
246264 # logged to file, to confirm the destructor is called
247265 def test_connection_destructor_called (self ):
@@ -260,17 +278,11 @@ def test_connection_destructor_called(self):
260278 create_time_2 = None
261279 last_used_time_1 = None
262280 last_used_time_2 = None
263-
264- try :
265-
266- # Create a temporary log file
267- my_log_file = tempfile .NamedTemporaryFile ()
268-
269- logging .getLogger ('irods.connection' ).setLevel (logging .DEBUG )
270- file_handler = logging .FileHandler (my_log_file .name , mode = 'a' )
271- file_handler .setLevel (logging .DEBUG )
272- logging .getLogger ('irods.connection' ).addHandler (file_handler )
273-
281+ my_log_file = tempfile .NamedTemporaryFile ()
282+ file_handler = logging .FileHandler (my_log_file .name , mode = 'a' )
283+ file_handler .setLevel (logging .DEBUG )
284+ with self .configure_logger (logging .getLogger ('irods.connection' ),
285+ propagate = False , level = logging .DEBUG , handler = file_handler ):
274286 with self .sess .pool .get_connection () as conn :
275287 conn_obj_id_1 = id (conn )
276288 curr_time = datetime .datetime .now ()
@@ -313,9 +325,7 @@ def test_connection_destructor_called(self):
313325 with open (my_log_file .name , 'r' ) as fh :
314326 lines = fh .read ().splitlines ()
315327 self .assertTrue (DESTRUCTOR_MSG in lines )
316- finally :
317- # Remove irods.connection's file_handler that was added just for this test
318- logging .getLogger ('irods.connection' ).removeHandler (file_handler )
328+ file_handler .close ()
319329
320330 def test_get_connection_refresh_time_no_env_file_input_param (self ):
321331 connection_refresh_time = self .sess .get_connection_refresh_time (first_name = "Magic" , last_name = "Johnson" )
0 commit comments