diff options
author | Max Illfelder <illfelder@google.com> | 2016-07-08 15:01:28 -0700 |
---|---|---|
committer | Max Illfelder <illfelder@google.com> | 2016-07-08 15:01:28 -0700 |
commit | f44cdfbee7ddcfe4c71730550947c3b2bd17d4b8 (patch) | |
tree | a3105484cc1f46cefc5986d7c77138279b1be9f3 | |
parent | 97ec9d47da88ab0d93cc3fdf3b8f6a86b03f1142 (diff) | |
parent | 1513426cae523e2fae8424fa9f41f1230d237822 (diff) | |
download | google-compute-image-packages-f44cdfbee7ddcfe4c71730550947c3b2bd17d4b8.tar.gz |
Merge branch 'development'
-rw-r--r-- | google_compute_engine/compat.py | 14 | ||||
-rw-r--r-- | google_compute_engine/logger.py | 4 | ||||
-rw-r--r-- | google_compute_engine/metadata_watcher.py | 5 | ||||
-rw-r--r-- | google_compute_engine/tests/logger_test.py | 11 | ||||
-rw-r--r-- | google_compute_engine/tests/metadata_watcher_test.py | 13 | ||||
-rwxr-xr-x | setup.py | 2 |
6 files changed, 30 insertions, 19 deletions
diff --git a/google_compute_engine/compat.py b/google_compute_engine/compat.py index 824724a..036dfbc 100644 --- a/google_compute_engine/compat.py +++ b/google_compute_engine/compat.py @@ -15,6 +15,7 @@ """A module for resolving compatibility issues between Python 2 and Python 3.""" +import logging import sys if sys.version_info >= (3,): @@ -33,3 +34,16 @@ else: import urllib as urlretrieve import urllib2 as urlrequest import urllib2 as urlerror + +if sys.version_info < (2,7,): + class NullHandler(logging.Handler): + def emit(self, record): + pass + + def handle(self, record): + pass + + def createLock(self): + pass + + logging.NullHandler = NullHandler diff --git a/google_compute_engine/logger.py b/google_compute_engine/logger.py index a8e49a3..a075eae 100644 --- a/google_compute_engine/logger.py +++ b/google_compute_engine/logger.py @@ -15,8 +15,7 @@ """A library for logging text to SysLog and the serial console.""" -import logging -import logging.handlers +from google_compute_engine.compat import logging def Logger(name, debug=False, facility=None): @@ -32,6 +31,7 @@ def Logger(name, debug=False, facility=None): """ logger = logging.getLogger(name) logger.handlers = [] + logger.addHandler(logging.NullHandler()) logger.propagate = False logger.setLevel(logging.DEBUG) formatter = logging.Formatter(name + ': %(levelname)s %(message)s') diff --git a/google_compute_engine/metadata_watcher.py b/google_compute_engine/metadata_watcher.py index e23c60a..c6b035e 100644 --- a/google_compute_engine/metadata_watcher.py +++ b/google_compute_engine/metadata_watcher.py @@ -157,12 +157,11 @@ class MetadataWatcher(object): return self._GetMetadataUpdate( metadata_key=metadata_key, recursive=recursive, wait=wait) except (httpclient.HTTPException, socket.error, urlerror.URLError) as e: - if isinstance(e, type(exception)) and e.args == exception.args: + if isinstance(e, type(exception)): continue else: exception = e - message = 'GET request error retrieving metadata. %s.' - self.logger.exception(message, exception) + self.logger.exception('GET request error retrieving metadata.') def WatchMetadata(self, handler, metadata_key='', recursive=True): """Watch for changes to the contents of the metadata server. diff --git a/google_compute_engine/tests/logger_test.py b/google_compute_engine/tests/logger_test.py index 6fb7d4a..a0b6100 100644 --- a/google_compute_engine/tests/logger_test.py +++ b/google_compute_engine/tests/logger_test.py @@ -24,7 +24,9 @@ class LoggerTest(unittest.TestCase): @mock.patch('google_compute_engine.logger.logging.handlers.SysLogHandler') @mock.patch('google_compute_engine.logger.logging.StreamHandler') - def testLogger(self, mock_stream, mock_syslog): + @mock.patch('google_compute_engine.logger.logging.NullHandler') + def testLogger(self, mock_null, mock_stream, mock_syslog): + mock_null.return_value = mock_null mock_stream.return_value = mock_stream mock_syslog.return_value = mock_syslog name = 'test' @@ -32,7 +34,7 @@ class LoggerTest(unittest.TestCase): # Verify basic logger setup. named_logger = logger.Logger(name=name, debug=True) mock_stream.setLevel.assert_called_once_with(logger.logging.DEBUG) - self.assertEqual(named_logger.handlers, [mock_stream]) + self.assertEqual(named_logger.handlers, [mock_null, mock_stream]) # Verify logger setup with a facility. address = '/dev/log' @@ -40,11 +42,12 @@ class LoggerTest(unittest.TestCase): named_logger = logger.Logger(name=name, debug=True, facility=facility) mock_syslog.assert_called_once_with(address=address, facility=facility) mock_syslog.setLevel.assert_called_once_with(logger.logging.INFO) - self.assertEqual(named_logger.handlers, [mock_stream, mock_syslog]) + self.assertEqual( + named_logger.handlers, [mock_null, mock_stream, mock_syslog]) # Verify the handlers are reset during repeated calls. named_logger = logger.Logger(name=name, debug=False) - self.assertEqual(named_logger.handlers, []) + self.assertEqual(named_logger.handlers, [mock_null]) if __name__ == '__main__': diff --git a/google_compute_engine/tests/metadata_watcher_test.py b/google_compute_engine/tests/metadata_watcher_test.py index d661517..7692f91 100644 --- a/google_compute_engine/tests/metadata_watcher_test.py +++ b/google_compute_engine/tests/metadata_watcher_test.py @@ -207,9 +207,8 @@ class MetadataWatcherTest(unittest.TestCase): def testHandleMetadataUpdateException(self): mock_response = mock.Mock() first = metadata_watcher.socket.timeout() - second = metadata_watcher.socket.timeout('a') - third = metadata_watcher.urlerror.URLError('b') - mock_response.side_effect = [first, second, second, third, {}] + second = metadata_watcher.urlerror.URLError('Test') + mock_response.side_effect = [first, first, second, {}] self.mock_watcher._GetMetadataUpdate = mock_response metadata_key = 'instance/id' recursive = False @@ -221,13 +220,9 @@ class MetadataWatcherTest(unittest.TestCase): {}) expected_calls = [ mock.call(metadata_key=metadata_key, recursive=recursive, wait=wait), - ] * 5 + ] * 4 self.assertEqual(mock_response.mock_calls, expected_calls) - expected_calls = [ - mock.call.exception(mock.ANY, first), - mock.call.exception(mock.ANY, second), - mock.call.exception(mock.ANY, third), - ] + expected_calls = [mock.call.exception(mock.ANY)] * 2 self.assertEqual(self.mock_logger.mock_calls, expected_calls) def testWatchMetadata(self): @@ -32,7 +32,7 @@ setuptools.setup( packages=setuptools.find_packages(), scripts=glob.glob('scripts/*'), url='https://github.com/GoogleCloudPlatform/compute-image-packages', - version='2.1.0', + version='2.1.1', # Entry points create scripts in /usr/bin that call a function. entry_points={ 'console_scripts': [ |