def testThreadsafeCounterConstructor(self): """ Test ThreadsafeCounter constructor """ # Test with default args counter = threading_utils.ThreadsafeCounter() self.assertEqual(counter.value, 0) # Test with explicit initial value counter = threading_utils.ThreadsafeCounter(999) self.assertEqual(counter.value, 999)
def testThreadsafeCounterContextManager(self): """ Test ThreadsafeCounter context manager """ counter = threading_utils.ThreadsafeCounter(10) with counter as currentValue1: self.assertEqual(currentValue1, 11) # We get away with it because in this test there is no true concurrency self.assertEqual(counter.value, 11) # Test reentrancy with counter as currentValue2: self.assertEqual(currentValue2, 12) self.assertEqual(counter.value, 12) self.assertEqual(counter.value, 11) self.assertEqual(counter.value, 10)
def testThreadsafeCounterAdjust(self): """ test ThreadsafeCounter.adjust() """ counter = threading_utils.ThreadsafeCounter(1) self.assertEqual(counter.value, 1) self.assertEqual(counter.adjust(7), 8) self.assertEqual(counter.value, 8) self.assertEqual(counter.adjust(-3), 5) self.assertEqual(counter.value, 5) # Test combination of context manager and adjust with counter as currentValue: self.assertEqual(currentValue, 6) self.assertEqual(counter.value, 6) self.assertEqual(counter.adjust(-6), 0) self.assertEqual(counter.value, 0) self.assertEqual(counter.value, -1)
def __init__(self, listeningAddr, handlerClass): self.concurrencyTracker = threading_utils.ThreadsafeCounter() super(ThreadedTCPServer, self).__init__(listeningAddr, handlerClass)