match_face/.venv/Lib/site-packages/gevent/tests/test__memleak.py

48 lines
1.4 KiB
Python
Raw Normal View History

import sys
import unittest
from gevent.testing import TestCase
import gevent
from gevent.timeout import Timeout
@unittest.skipUnless(
hasattr(sys, 'gettotalrefcount'),
"Needs debug build"
)
# XXX: This name makes no sense. What was this for originally?
class TestQueue(TestCase): # pragma: no cover
# pylint:disable=bare-except,no-member
def test(self):
refcounts = []
for _ in range(15):
try:
Timeout.start_new(0.01)
gevent.sleep(0.1)
self.fail('must raise Timeout')
except Timeout:
pass
refcounts.append(sys.gettotalrefcount())
# Refcounts may go down, but not up
# XXX: JAM: I think this may just be broken. Each time we add
# a new integer to our list of refcounts, we'll be
# creating a new reference. This makes sense when we see the list
# go up by one each iteration:
#
# AssertionError: 530631 not less than or equal to 530630
# : total refcount mismatch:
# [530381, 530618, 530619, 530620, 530621,
# 530622, 530623, 530624, 530625, 530626,
# 530627, 530628, 530629, 530630, 530631]
final = refcounts[-1]
previous = refcounts[-2]
self.assertLessEqual(
final, previous,
"total refcount mismatch: %s" % refcounts)
if __name__ == '__main__':
unittest.main()