48 lines
1.4 KiB
Python
48 lines
1.4 KiB
Python
|
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()
|