SVN: ZODB/trunk/src/ZODB/scripts/ merge from 3.9 branch:

Chris Withers <[email protected]>
Newsgroups gmane.comp.python.zope.zodb.cvs
Message-ID <[email protected]>
Log message for revision 105889:
  merge from 3.9 branch:
  - make testrepozo.py runnable from a buildout setup
  - fix deprecation warning from repozo.py under Python 2.6

Changed:
  U   ZODB/trunk/src/ZODB/scripts/manual_tests/testrepozo.py
  U   ZODB/trunk/src/ZODB/scripts/repozo.py

-=-
Modified: ZODB/trunk/src/ZODB/scripts/manual_tests/testrepozo.py
===================================================================
--- ZODB/trunk/src/ZODB/scripts/manual_tests/testrepozo.py	2009-11-19 21:08:58 UTC (rev 105888)
+++ ZODB/trunk/src/ZODB/scripts/manual_tests/testrepozo.py	2009-11-19 21:12:04 UTC (rev 105889)
@@ -19,6 +19,16 @@
 its home directory as the current directory.  It will destroy all files
 matching Data.* and Copy.* in this directory, and anything in a
 subdirectory of name 'backup'.
+
+Usage:
+
+python testrepozo.py [repozo_script]
+
+  repozo_script, if provided, is a path to a script that runs repozo,
+  such as that generated by buildout.
+
+eg:
+$ ../../../../bin/py testrepozo.py ../../../../bin/repozo
 """
 
 import os
@@ -32,8 +42,6 @@
 from ZODB import FileStorage
 import transaction
 
-PYTHON = sys.executable + ' '
-
 def cleanup():
     for fname in glob.glob('Data.*') + glob.glob('Copy.*'):
         os.remove(fname)
@@ -76,7 +84,7 @@
         extra = ''
     else:
         extra = ' -D ' + when
-    cmd = PYTHON + '../repozo.py -vRr backup -o Copy.fs' + extra
+    cmd = PYTHON + REPOZO + ' -vRr backup -o Copy.fs' + extra
     os.system(cmd)
     f = file(correctpath, 'rb')
     g = file('Copy.fs', 'rb')
@@ -122,9 +130,9 @@
 
         # Make an incremental backup, half the time with gzip (-z).
         if random.random() < 0.5:
-            os.system(PYTHON + '../repozo.py -vBQr backup -f Data.fs')
+            os.system(PYTHON + REPOZO + ' -vBQr backup -f Data.fs')
         else:
-            os.system(PYTHON + '../repozo.py -zvBQr backup -f Data.fs')
+            os.system(PYTHON + REPOZO + ' -zvBQr backup -f Data.fs')
 
         if i % 9 == 0:
             copytime = '%04d-%02d-%02d-%02d-%02d-%02d' % (time.gmtime()[:6])
@@ -148,4 +156,9 @@
     print 'Test passed!'
 
 if __name__ == '__main__':
+    PYTHON = sys.executable + ' '
+    if len(sys.argv)>1:
+        REPOZO = sys.argv[1]
+    else:
+        REPOZO = '../repozo.py'
     main()

Modified: ZODB/trunk/src/ZODB/scripts/repozo.py
===================================================================
--- ZODB/trunk/src/ZODB/scripts/repozo.py	2009-11-19 21:08:58 UTC (rev 105888)
+++ ZODB/trunk/src/ZODB/scripts/repozo.py	2009-11-19 21:12:04 UTC (rev 105889)
@@ -65,7 +65,6 @@
 
 import os
 import sys
-import md5
 import gzip
 import time
 import errno
@@ -82,6 +81,12 @@
 READCHUNK = 16 * 1024
 VERBOSE = False
 
+if sys.version_info[1]>4:
+    # the hashlib package is available from Python 2.5
+    from hashlib import md5
+else:
+    # the md5 package is deprecated in Python 2.6
+    from md5 import new as md5
 
 def usage(code, msg=''):
     outfp = sys.stderr
@@ -210,7 +215,7 @@
 
 def checksum(fp, n):
     # Checksum the first n bytes of the specified file
-    sum = md5.new()
+    sum = md5()
     def func(data):
         sum.update(data)
     dofile(func, fp, n)
@@ -221,7 +226,7 @@
     # Copy bytes from file src, to file dst, starting at offset start, for n
     # length of bytes.  For robustness, we first write, flush and fsync
     # to a temp file, then rename the temp file at the end.
-    sum = md5.new()
+    sum = md5()
     ifp = open(options.file, 'rb')
     ifp.seek(start)
     tempname = os.path.join(os.path.dirname(dst), 'tmp.tmp')
@@ -248,7 +253,7 @@
     # Concatenate a bunch of files from the repository, output to `outfile' if
     # given.  Return the number of bytes written and the md5 checksum of the
     # bytes.
-    sum = md5.new()
+    sum = md5()
     def func(data):
         sum.update(data)
         if ofp:
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.