[Zodb-checkins] CVS: StandaloneZODB/Tools - zeoup.py:1.5

Jeremy Hylton jeremy@zope.com
Thu, 28 Mar 2002 15:05:23 -0500


Update of /cvs-repository/StandaloneZODB/Tools
In directory cvs.zope.org:/tmp/cvs-serv15330

Modified Files:
	zeoup.py 
Log Message:
zeoup now writes an object in the root to test transaction commit.

The --nowrite option will disable writing.  (It's not possible to
enable writing and disable reading, so that's the only option.)


=== StandaloneZODB/Tools/zeoup.py 1.4 => 1.5 ===
 Usage: zeoup.py [options]
 
+The test will connect to a ZEO server, load the root object, and
+attempt to update the zeoup counter in the root.  It will report
+success if it updates to counter or if it gets a ConflictError.  A
+ConflictError is considered a success, because the client was able to
+start a transaction. 
+
 Options:
 
     -p port -- port to connect to
@@ -11,6 +17,8 @@
     
     -U path -- Unix-domain socket to connect to
 
+    --nowrite -- Do not update the zeoup counter.
+
 You must specify either -p and -h or -U.
 """
 
@@ -19,9 +27,10 @@
 import sys
 
 import ZODB
+from ZODB.POSException import ConflictError
 from ZEO.ClientStorage import ClientStorage
 
-def check_server(addr, storage):
+def check_server(addr, storage, write):
     cs = ClientStorage(addr, storage=storage, debug=1,
                        wait_for_server_on_startup=0)
     # _startup() is an artifact of the way ZEO 1.0 works.  The
@@ -32,6 +41,15 @@
     # XXX Is connecting a DB with wait_for_server_on_startup=0 a
     # sufficient test for upness?
     db = ZODB.DB(cs)
+    cn = db.open()
+    root = cn.root()
+    if write:
+        try:
+            root['zeoup'] = root.get('zeoup', 0)+ 1
+            get_transaction().commit()
+        except ConflictError:
+            pass
+    cn.close()
     db.close()
 
 def usage(exit=1):
@@ -43,9 +61,11 @@
     host = None
     port = None
     unix = None
+    write = 1
     storage = '1'
     try:
-        opts, args = getopt.getopt(sys.argv[1:], 'p:h:U:S:')
+        opts, args = getopt.getopt(sys.argv[1:], 'p:h:U:S:',
+                                   ['nowrite'])
         for o, a in opts:
             if o == '-p':
                 port = int(a)
@@ -55,6 +75,8 @@
                 unix = a
             elif o == '-S':
                 storage = a
+            elif o == '--nowrite':
+                write = 0
     except Exception, err:
         print err
         usage()
@@ -68,7 +90,7 @@
             usage()
         addr = host, port
 
-    check_server(addr, storage)
+    check_server(addr, storage, write)
 
 if __name__ == "__main__":
     try: