[Python-Dev] adding threaded tests to the test suite
Ethan Furman
ethan at stoneleaf.us
Sun Jan 22 15:02:34 EST 2017
Question: I need to add a threaded test to the enum test module [1] -- is there anything extra I
need to worry about besides the test itself? Setting or resetting or using a tool library, etc?
--
~Ethan~
[1] The test to be added:
def test_unique_composite(self):
# override __eq__ to be identity only
class TestFlag(IntFlag):
one = auto()
two = auto()
three = auto()
four = auto()
five = auto()
six = auto()
seven = auto()
eight = auto()
def __eq__(self, other):
return self is other
def __hash__(self):
return hash(self._value_)
# have multiple threads competing to complete the composite members
seen = set()
failed = False
def cycle_enum():
nonlocal failed
try:
for i in range(256):
seen.add(TestFlag(i))
except (Exception, RuntimeError):
failed = True
threads = []
for i in range(8):
threads.append(threading.Thread(target=cycle_enum))
for t in threads:
t.start()
for t in threads:
t.join()
# check that only 248 members were created
self.assertFalse(
failed,
'at least one thread failed while creating composite members')
self.assertEqual(256, len(seen), 'too many composite members created')
More information about the Python-Dev
mailing list