Store extended traceback for gather errors
When a gathering thread raises an exception, it gets forwarded to the main thread and re-raised there. However, during this transition it loses details about exact location of the problem. This patch creates an extended traceback in the worker, which should make it easier to track the problem down later. JIRA: RHELCMP-4259 Signed-off-by: Lubomír Sedlář <lsedlar@redhat.com>
This commit is contained in:
parent
98359654cf
commit
477dcf37d9
4 changed files with 50 additions and 6 deletions
|
|
@ -777,3 +777,33 @@ class DumpContainerMetadataTest(unittest.TestCase):
|
|||
def test_dump_empty_metadata(self, ThreadPool):
|
||||
self.compose.dump_containers_metadata()
|
||||
self.assertFalse(os.path.isfile(self.tmp_dir + "/compose/metadata/osbs.json"))
|
||||
|
||||
|
||||
class TracebackTest(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.tmp_dir = tempfile.mkdtemp()
|
||||
with mock.patch("pungi.compose.ComposeInfo"):
|
||||
self.compose = Compose({}, self.tmp_dir)
|
||||
self.patcher = mock.patch("kobo.tback.Traceback")
|
||||
self.Traceback = self.patcher.start()
|
||||
self.Traceback.return_value.get_traceback.return_value = b"traceback"
|
||||
|
||||
def tearDown(self):
|
||||
shutil.rmtree(self.tmp_dir)
|
||||
self.patcher.stop()
|
||||
|
||||
def assertTraceback(self, filename):
|
||||
self.assertTrue(
|
||||
os.path.isfile("%s/logs/global/%s.global.log" % (self.tmp_dir, filename))
|
||||
)
|
||||
self.assertEqual(
|
||||
self.Traceback.mock_calls, [mock.call(), mock.call().get_traceback()]
|
||||
)
|
||||
|
||||
def test_traceback_default(self):
|
||||
self.compose.traceback()
|
||||
self.assertTraceback("traceback")
|
||||
|
||||
def test_with_detail(self):
|
||||
self.compose.traceback("extra-info")
|
||||
self.assertTraceback("traceback-extra-info")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue