Changes towards splitting up the library and (maybe?) publishing on PyPi.
[python_utils.git] / tests / shared_dict_test.py
index 230bdb989c4c5e74c6d31cecebee3ea468b277c8..68a378800defd2e6c1a134927f6db4dae0adf6f6 100755 (executable)
@@ -4,6 +4,7 @@
 
 """shared_dict unittest."""
 
+import random
 import unittest
 
 import parallelize as p
@@ -14,13 +15,16 @@ from collect.shared_dict import SharedDict
 
 class SharedDictTest(unittest.TestCase):
     @p.parallelize(method=p.Method.PROCESS)
-    def doit(self, n: int, dict_name: str):
-        d = SharedDict(dict_name)
+    def doit(self, n: int, dict_name: str, parent_lock_id: int):
+        assert id(SharedDict.LOCK) == parent_lock_id
+        d = SharedDict(dict_name, None)
         try:
             msg = f'Hello from shard {n}'
-            d[n] = msg
-            self.assertTrue(n in d)
-            self.assertEqual(msg, d[n])
+            for x in range(0, 1000):
+                d[n] = msg
+                self.assertTrue(n in d)
+                self.assertEqual(msg, d[n])
+                y = d.get(random.randrange(0, 99), None)
             return n
         finally:
             d.close()
@@ -32,23 +36,25 @@ class SharedDictTest(unittest.TestCase):
             self.assertEqual(dict_name, d.get_name())
             results = []
             for n in range(100):
-                f = self.doit(n, d.get_name())
+                f = self.doit(n, d.get_name(), id(SharedDict.LOCK))
                 results.append(f)
             smart_future.wait_all(results)
             for f in results:
                 self.assertTrue(f.wrapped_future.done())
             for k in d:
                 self.assertEqual(d[k], f'Hello from shard {k}')
+            assert len(d) == 100
         finally:
             d.close()
             d.cleanup()
 
     @p.parallelize(method=p.Method.PROCESS)
-    def add_one(self, name: str):
+    def add_one(self, name: str, expected_lock_id: int):
         d = SharedDict(name)
+        self.assertEqual(id(SharedDict.LOCK), expected_lock_id)
         try:
             for x in range(1000):
-                with SharedDict.MPLOCK:
+                with SharedDict.LOCK:
                     d["sum"] += 1
         finally:
             d.close()
@@ -60,7 +66,7 @@ class SharedDictTest(unittest.TestCase):
             d["sum"] = 0
             results = []
             for n in range(10):
-                f = self.add_one(d.get_name())
+                f = self.add_one(d.get_name(), id(SharedDict.LOCK))
                 results.append(f)
             smart_future.wait_all(results)
             self.assertEqual(10000, d["sum"])