github.com/grumpyhome/grumpy@v0.3.1-0.20201208125205-7b775405bdf1/grumpy-runtime-src/third_party/stdlib/test/test_mutex.py (about)

     1  import unittest
     2  import test.test_support
     3  
     4  # mutex = test.test_support.import_module("mutex", deprecated=True)
     5  import mutex
     6  
     7  class MutexTest(unittest.TestCase):
     8  
     9      def test_lock_and_unlock(self):
    10  
    11          def called_by_mutex(some_data):
    12              self.assertEqual(some_data, "spam")
    13              self.assertTrue(m.test(), "mutex not held")
    14              # Nested locking
    15              m.lock(called_by_mutex2, "eggs")
    16  
    17          def called_by_mutex2(some_data):
    18              self.assertEqual(some_data, "eggs")
    19              self.assertTrue(m.test(), "mutex not held")
    20              self.assertTrue(ready_for_2,
    21                           "called_by_mutex2 called too soon")
    22  
    23          m = mutex.mutex()
    24          read_for_2 = False
    25          m.lock(called_by_mutex, "spam")
    26          ready_for_2 = True
    27          # unlock both locks
    28          m.unlock()
    29          m.unlock()
    30          self.assertFalse(m.test(), "mutex still held")
    31  
    32  def test_main():
    33      test.test_support.run_unittest(MutexTest)
    34  
    35  if __name__ == "__main__":
    36      test_main()