[Zope3-checkins] CVS: Zope3/src/zodb/zeo/tests - connection.py:1.5.2.2

Jeremy Hylton jeremy@zope.com
Thu, 13 Feb 2003 12:40:15 -0500


Update of /cvs-repository/Zope3/src/zodb/zeo/tests
In directory cvs.zope.org:/tmp/cvs-serv4449/tests

Modified Files:
      Tag: ZODB3-2-integration-branch
	connection.py 
Log Message:
Cleanup error handling on disconnection.
Add sync() calls as needed.


=== Zope3/src/zodb/zeo/tests/connection.py 1.5.2.1 => 1.5.2.2 ===
--- Zope3/src/zodb/zeo/tests/connection.py:1.5.2.1	Mon Feb 10 17:08:29 2003
+++ Zope3/src/zodb/zeo/tests/connection.py	Thu Feb 13 12:40:14 2003
@@ -1,6 +1,6 @@
 ##############################################################################
 #
-# Copyright (c) 2001, 2002 Zope Corporation and Contributors.
+# Copyright (c) 2001 Zope Corporation and Contributors.
 # All Rights Reserved.
 #
 # This software is subject to the provisions of the Zope Public License,
@@ -193,8 +193,9 @@
             try:
                 self._dostore()
                 break
-            except Disconnected:
+            except ClientDisconnected:
                 time.sleep(0.5)
+                self._storage.sync()
 
     def checkReadOnlyClient(self):
         # Open a read-only client to a read-write server; stores fail
@@ -256,7 +257,7 @@
         # Poll until the client disconnects
         self.pollDown()
         # Stores should fail now
-        self.assertRaises(Disconnected, self._dostore)
+        self.assertRaises(ClientDisconnected, self._dostore)
 
         # Restart the server
         self.startServer(create=False)
@@ -271,7 +272,8 @@
         # object is not in the cache.
         self.shutdownServer()
         self._storage = self.openClientStorage('test', 1000, wait=False)
-        self.assertRaises(Disconnected, self._storage.load, 'fredwash', '')
+        self.assertRaises(ClientDisconnected,
+                          self._storage.load, 'fredwash', '')
 
     def checkBasicPersistence(self):
         # Verify cached data persists across client storage instances.
@@ -335,18 +337,14 @@
             try:
                 self._dostore(oid, data=obj)
                 break
-            except (Disconnected, select.error,
-                    threading.ThreadError, socket.error):
+            except ClientDisconnected:
                 self.logger.warn("checkReconnection: "
                                  "Error after server restart; retrying.",
                                  exc_info=True)
                 get_transaction().abort()
-                time.sleep(0.1) # XXX how long to sleep
-            # XXX This is a bloody pain.  We're placing a heavy burden
-            # on users to catch a plethora of exceptions in order to
-            # write robust code.  Need to think about implementing
-            # John Heintz's suggestion to make sure all exceptions
-            # inherit from POSException.
+                self._storage.sync()
+        else:
+            self.fail("Could not reconnect to server")
         self.logger.warn("checkReconnection: finished")
 
     def checkBadMessage1(self):
@@ -377,7 +375,7 @@
 
         try:
             self._dostore()
-        except Disconnected:
+        except ClientDisconnected:
             pass
         else:
             self._storage.close()
@@ -493,7 +491,7 @@
         # Poll until the client disconnects
         self.pollDown()
         # Stores should fail now
-        self.assertRaises(Disconnected, self._dostore)
+        self.assertRaises(ClientDisconnected, self._dostore)
 
         # Restart the server
         self.startServer(create=False, read_only=True)
@@ -522,7 +520,7 @@
         # Poll until the client disconnects
         self.pollDown()
         # Stores should fail now
-        self.assertRaises(Disconnected, self._dostore)
+        self.assertRaises(ClientDisconnected, self._dostore)
 
         # Restart the server, this time read-write
         self.startServer(create=False)
@@ -554,9 +552,9 @@
             try:
                 self._dostore()
                 break
-            except (Disconnected, ReadOnlyError,
-                    select.error, threading.ThreadError, socket.error):
+            except (ClientDisconnected, ReadOnlyError):
                 time.sleep(0.1)
+                self._storage.sync()
         else:
             self.fail("Couldn't store after starting a read-write server")