[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