Disable leaked repo check

This is behaving differently in python3 in a way that is not
completely understood yet, but does not appear to reflect an
actual leak.

Disable enforcement of the check, but leave the check along with
some extra debugging in place so we can observe it.

Change-Id: Ib19a0fec72a7eaa7122ddd94a95ad2058b164048
This commit is contained in:
James E. Blair 2017-05-22 13:22:55 -07:00
parent fc220282e2
commit 73b417736b
1 changed files with 21 additions and 2 deletions

View File

@ -1606,6 +1606,18 @@ class BaseTestCase(testtools.TestCase):
else:
self._log_stream = sys.stdout
# NOTE(jeblair): this is temporary extra debugging to try to
# track down a possible leak.
orig_git_repo_init = git.Repo.__init__
def git_repo_init(myself, *args, **kw):
orig_git_repo_init(myself, *args, **kw)
self.log.debug("Created git repo 0x%x %s" %
(id(myself), repr(myself)))
self.useFixture(fixtures.MonkeyPatch('git.Repo.__init__',
git_repo_init))
handler = logging.StreamHandler(self._log_stream)
formatter = logging.Formatter('%(asctime)s %(name)-32s '
'%(levelname)-8s %(message)s')
@ -2034,12 +2046,19 @@ class ZuulTestCase(BaseTestCase):
self.assertEqual({}, self.executor_server.job_workers)
# Make sure that git.Repo objects have been garbage collected.
repos = []
gc.disable()
gc.collect()
for obj in gc.get_objects():
if isinstance(obj, git.Repo):
self.log.debug("Leaked git repo object: %s" % repr(obj))
self.log.debug("Leaked git repo object: 0x%x %s" %
(id(obj), repr(obj)))
for ref in gc.get_referrers(obj):
self.log.debug(" Referrer %s" % (repr(ref)))
repos.append(obj)
self.assertEqual(len(repos), 0)
if repos:
for obj in gc.garbage:
self.log.debug(" Garbage %s" % (repr(obj)))
gc.enable()
self.assertEmptyQueues()
self.assertNodepoolState()
self.assertNoGeneratedKeys()