1
1
#! /usr/bin/env python
2
2
from __future__ import absolute_import
3
+ import contextlib
3
4
import datetime
4
5
import gc
5
6
import logging
@@ -242,6 +243,23 @@ def test_no_refresh_connection(self):
242
243
self .assertEqual (0 , len (self .sess .pool .active ))
243
244
self .assertEqual (0 , len (self .sess .pool .idle ))
244
245
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
+
245
263
# Test to confirm the connection destructor log message is actually
246
264
# logged to file, to confirm the destructor is called
247
265
def test_connection_destructor_called (self ):
@@ -260,17 +278,11 @@ def test_connection_destructor_called(self):
260
278
create_time_2 = None
261
279
last_used_time_1 = None
262
280
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 ):
274
286
with self .sess .pool .get_connection () as conn :
275
287
conn_obj_id_1 = id (conn )
276
288
curr_time = datetime .datetime .now ()
@@ -313,9 +325,7 @@ def test_connection_destructor_called(self):
313
325
with open (my_log_file .name , 'r' ) as fh :
314
326
lines = fh .read ().splitlines ()
315
327
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 ()
319
329
320
330
def test_get_connection_refresh_time_no_env_file_input_param (self ):
321
331
connection_refresh_time = self .sess .get_connection_refresh_time (first_name = "Magic" , last_name = "Johnson" )
0 commit comments