Fix AttributeError in exception handler

The exception handler of save_state() caused an AttributeError
because it tried to get the output attribute of the Exception,
which does not exist in general. Added a test to cover this
scenario.

Change-Id: I36acdee1f8782b17c234f6b250facc5c8d0aaf87
(cherry picked from commit 384b83d88b)
This commit is contained in:
Tom Weininger 2022-04-21 11:40:57 +02:00
parent 0a062cd664
commit 7aaac224cb
2 changed files with 13 additions and 2 deletions

View File

@ -165,6 +165,5 @@ class HAProxyQuery(object):
except Exception as e:
# Catch any exception - may be socket issue, or write permission
# issue as well.
LOG.warning("Unable to save state: %(err)s %(output)s",
{'err': e, 'output': e.output})
LOG.warning("Unable to save state: %r", e)
return False

View File

@ -159,3 +159,15 @@ class QueryTestCase(base.TestCase):
self.q.save_state(filename)
mock_fh.write.assert_called_once_with('DATA')
def test_save_state_error(self):
"""save_state() should swallow exceptions"""
filename = 'state_file'
query_mock = mock.Mock(side_effect=OSError())
self.q._query = query_mock
try:
self.q.save_state(filename)
except Exception as ex:
self.fail("save_state() raised %r unexpectedly!" % ex)