From df9243a3f4334418ea83c14a1346624eeadf6de1 Mon Sep 17 00:00:00 2001 From: heartsucker Date: Fri, 22 Mar 2019 17:25:11 +0100 Subject: [PATCH] updated test code to use print function over print statement --- newsfragments/3008.other | 1 + src/allmydata/test/bench_dirnode.py | 10 +-- src/allmydata/test/check_grid.py | 16 ++--- src/allmydata/test/check_load.py | 28 +++++---- src/allmydata/test/check_memory.py | 40 ++++++------ src/allmydata/test/check_speed.py | 64 ++++++++++---------- src/allmydata/test/cli/test_cp.py | 6 +- src/allmydata/test/common.py | 6 +- src/allmydata/test/common_util.py | 6 +- src/allmydata/test/mutable/test_problems.py | 6 +- src/allmydata/test/mutable/test_roundtrip.py | 12 ++-- src/allmydata/test/mutable/test_update.py | 20 +++--- src/allmydata/test/mutable/test_version.py | 10 +-- src/allmydata/test/test_crawler.py | 7 ++- src/allmydata/test/test_download.py | 5 +- src/allmydata/test/test_encodingutil.py | 25 ++++---- src/allmydata/test/test_magic_folder.py | 45 +++++++------- src/allmydata/test/test_repairer.py | 6 +- src/allmydata/test/test_sftp.py | 3 +- src/allmydata/test/test_system.py | 19 +++--- src/allmydata/test/test_util.py | 12 ++-- src/allmydata/test/web/test_grid.py | 6 +- src/allmydata/test/web/test_web.py | 12 ++-- 23 files changed, 202 insertions(+), 163 deletions(-) create mode 100644 newsfragments/3008.other diff --git a/newsfragments/3008.other b/newsfragments/3008.other new file mode 100644 index 000000000..c5947100e --- /dev/null +++ b/newsfragments/3008.other @@ -0,0 +1 @@ +Updated the testing code to use the print function instead of the print statement. diff --git a/src/allmydata/test/bench_dirnode.py b/src/allmydata/test/bench_dirnode.py index 8626faf07..2b3a11a60 100644 --- a/src/allmydata/test/bench_dirnode.py +++ b/src/allmydata/test/bench_dirnode.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import hotshot.stats, os, random, sys from pyutil import benchutil, randutil # http://tahoe-lafs.org/trac/pyutil @@ -110,12 +112,12 @@ class B(object): for (initfunc, func) in [(self.init_for_unpack, self.unpack), (self.init_for_pack, self.pack), (self.init_for_unpack, self.unpack_and_repack)]: - print "benchmarking %s" % (func,) + print("benchmarking %s" % (func,)) for N in 16, 512, 2048, 16384: - print "%5d" % N, + print("%5d" % N, end=' ') benchutil.rep_bench(func, N, initfunc=initfunc, MAXREPS=20, UNITS_PER_SECOND=1000) benchutil.print_bench_footer(UNITS_PER_SECOND=1000) - print "(milliseconds)" + print("(milliseconds)") def prof_benchmarks(self): # This requires pyutil >= v1.3.34. @@ -128,7 +130,7 @@ class B(object): if __name__ == "__main__": if '--profile' in sys.argv: if os.path.exists(PROF_FILE_NAME): - print "WARNING: profiling results file '%s' already exists -- the profiling results from this run will be added into the profiling results stored in that file and then the sum of them will be printed out after this run." % (PROF_FILE_NAME,) + print("WARNING: profiling results file '%s' already exists -- the profiling results from this run will be added into the profiling results stored in that file and then the sum of them will be printed out after this run." % (PROF_FILE_NAME,)) b = B() b.prof_benchmarks() b.print_stats() diff --git a/src/allmydata/test/check_grid.py b/src/allmydata/test/check_grid.py index e0f069abf..b47067e1e 100644 --- a/src/allmydata/test/check_grid.py +++ b/src/allmydata/test/check_grid.py @@ -1,3 +1,5 @@ +from __future__ import print_function + """ Test an existing Tahoe grid, both to see if the grid is still running and to see if the client is still compatible with it. This script is suitable for @@ -95,13 +97,13 @@ class GridTester: rc = p.returncode if expected_rc != None and rc != expected_rc: if stderr: - print "STDERR:" - print stderr + print("STDERR:") + print(stderr) raise CommandFailed("command '%s' failed: rc=%d" % (cmd, rc)) return stdout, stderr def cli(self, cmd, *args, **kwargs): - print "tahoe", cmd, " ".join(args) + print("tahoe", cmd, " ".join(args)) stdout, stderr = self.command(self.tahoe, cmd, "-d", self.nodedir, *args, **kwargs) if not kwargs.get("ignore_stderr", False) and stderr != "": @@ -110,16 +112,16 @@ class GridTester: return stdout def stop_old_node(self): - print "tahoe stop", self.nodedir, "(force)" + print("tahoe stop", self.nodedir, "(force)") self.command(self.tahoe, "stop", self.nodedir, expected_rc=None) def start_node(self): - print "tahoe start", self.nodedir + print("tahoe start", self.nodedir) self.command(self.tahoe, "start", self.nodedir) time.sleep(5) def stop_node(self): - print "tahoe stop", self.nodedir + print("tahoe stop", self.nodedir) self.command(self.tahoe, "stop", self.nodedir) def read_and_check(self, f): @@ -146,7 +148,7 @@ class GridTester: def listdir(self, dirname): out = self.cli("ls", "testgrid:"+dirname).strip().split("\n") files = [f.strip() for f in out] - print " ", files + print(" ", files) return files def do_test(self): diff --git a/src/allmydata/test/check_load.py b/src/allmydata/test/check_load.py index 693dabfb0..33e593bf8 100644 --- a/src/allmydata/test/check_load.py +++ b/src/allmydata/test/check_load.py @@ -1,3 +1,5 @@ +from __future__ import print_function + """ this is a load-generating client program. It does all of its work through a given tahoe node (specified by URL), and performs random reads and writes @@ -56,24 +58,24 @@ if sys.argv[1] == "--stats": if last_stats: delta = dict( [ (n,stats[n]-last_stats[n]) for n in stats ] ) - print "THIS SAMPLE:" + print("THIS SAMPLE:") for name in sorted(delta.keys()): avg = float(delta[name]) / float(DELAY) - print "%20s: %0.2f per second" % (name, avg) + print("%20s: %0.2f per second" % (name, avg)) totals.append(delta) while len(totals) > MAXSAMPLES: totals.pop(0) # now compute average - print - print "MOVING WINDOW AVERAGE:" + print() + print("MOVING WINDOW AVERAGE:") for name in sorted(delta.keys()): avg = sum([ s[name] for s in totals]) / (DELAY*len(totals)) - print "%20s %0.2f per second" % (name, avg) + print("%20s %0.2f per second" % (name, avg)) last_stats = stats - print - print + print() + print() time.sleep(DELAY) stats_out = sys.argv[1] @@ -107,8 +109,8 @@ def listdir(nodeurl, root, remote_pathname): try: parsed = json.loads(data) except ValueError: - print "URL was", url - print "DATA was", data + print("URL was", url) + print("DATA was", data) raise nodetype, d = parsed assert nodetype == "dirnode" @@ -238,11 +240,11 @@ while True: op = "read" else: op = "write" - print "OP:", op + print("OP:", op) server = random.choice(server_urls) if op == "read": pathname = choose_random_descendant(server, root) - print " reading", pathname + print(" reading", pathname) read_and_discard(server, root, pathname) files_downloaded += 1 elif op == "write": @@ -253,9 +255,9 @@ while True: pathname = current_writedir + "/" + filename else: pathname = filename - print " writing", pathname + print(" writing", pathname) size = choose_size() - print " size", size + print(" size", size) generate_and_put(server, root, pathname, size) files_uploaded += 1 diff --git a/src/allmydata/test/check_memory.py b/src/allmydata/test/check_memory.py index d47517b8e..cbe3f44e9 100644 --- a/src/allmydata/test/check_memory.py +++ b/src/allmydata/test/check_memory.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os, shutil, sys, urllib, time, stat, urlparse from cStringIO import StringIO from twisted.internet import defer, reactor, protocol, error @@ -24,17 +26,17 @@ class StallableHTTPGetterDiscarder(tw_client.HTTPPageGetter): return if self._bytes_so_far > 1e6+100: if not self.stalled: - print "STALLING" + print("STALLING") self.transport.pauseProducing() self.stalled = reactor.callLater(10.0, self._resume_speed) def _resume_speed(self): - print "RESUME SPEED" + print("RESUME SPEED") self.stalled = None self.full_speed_ahead = True self.transport.resumeProducing() def handleResponseEnd(self): if self.stalled: - print "CANCEL" + print("CANCEL") self.stalled.cancel() self.stalled = None return tw_client.HTTPPageGetter.handleResponseEnd(self) @@ -101,7 +103,7 @@ class SystemFramework(pollmixin.PollMixin): def _err(err): self.failed = err log.err(err) - print err + print(err) d.addErrback(_err) def _done(res): reactor.stop() @@ -133,15 +135,15 @@ class SystemFramework(pollmixin.PollMixin): return d def record_initial_memusage(self): - print - print "Client started (no connections yet)" + print() + print("Client started (no connections yet)") d = self._print_usage() d.addCallback(self.stash_stats, "init") return d def wait_for_client_connected(self): - print - print "Client connecting to other nodes.." + print() + print("Client connecting to other nodes..") return self.control_rref.callRemote("wait_for_client_connections", self.numnodes+1) @@ -360,16 +362,16 @@ this file are ignored. def _print_usage(self, res=None): d = self.control_rref.callRemote("get_memory_usage") def _print(stats): - print "VmSize: %9d VmPeak: %9d" % (stats["VmSize"], - stats["VmPeak"]) + print("VmSize: %9d VmPeak: %9d" % (stats["VmSize"], + stats["VmPeak"])) return stats d.addCallback(_print) return d def _do_upload(self, res, size, files, uris): name = '%d' % size - print - print "uploading %s" % name + print() + print("uploading %s" % name) if self.mode in ("upload", "upload-self"): d = self.control_rref.callRemote("upload_random_data_from_file", size, @@ -400,7 +402,7 @@ this file are ignored. raise ValueError("unknown mode=%s" % self.mode) def _complete(uri): uris[name] = uri - print "uploaded %s" % name + print("uploaded %s" % name) d.addCallback(_complete) return d @@ -408,7 +410,7 @@ this file are ignored. if self.mode not in ("download", "download-GET", "download-GET-slow"): return name = '%d' % size - print "downloading %s" % name + print("downloading %s" % name) uri = uris[name] if self.mode == "download": @@ -422,7 +424,7 @@ this file are ignored. d = self.GET_discard(urllib.quote(url), stall=True) def _complete(res): - print "downloaded %s" % name + print("downloaded %s" % name) return res d.addCallback(_complete) return d @@ -465,7 +467,7 @@ this file are ignored. #d.addCallback(self.stall) def _done(res): - print "FINISHING" + print("FINISHING") d.addCallback(_done) return d @@ -478,9 +480,9 @@ this file are ignored. class ClientWatcher(protocol.ProcessProtocol): ended = False def outReceived(self, data): - print "OUT:", data + print("OUT:", data) def errReceived(self, data): - print "ERR:", data + print("ERR:", data) def processEnded(self, reason): self.ended = reason self.d.callback(None) @@ -496,7 +498,7 @@ if __name__ == '__main__': bits = "64" else: bits = "?" - print "%s-bit system (sys.maxint=%d)" % (bits, sys.maxint) + print("%s-bit system (sys.maxint=%d)" % (bits, sys.maxint)) # put the logfile and stats.out in _test_memory/ . These stick around. # put the nodes and other files in _test_memory/test/ . These are # removed each time we run. diff --git a/src/allmydata/test/check_speed.py b/src/allmydata/test/check_speed.py index c0b0ad80e..c23938337 100644 --- a/src/allmydata/test/check_speed.py +++ b/src/allmydata/test/check_speed.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os, sys from twisted.internet import reactor, defer from twisted.python import log @@ -23,7 +25,7 @@ class SpeedTest: self.download_times = {} def run(self): - print "STARTING" + print("STARTING") d = fireEventually() d.addCallback(lambda res: self.setUp()) d.addCallback(lambda res: self.do_test()) @@ -31,7 +33,7 @@ class SpeedTest: def _err(err): self.failed = err log.err(err) - print err + print(err) d.addErrback(_err) def _done(res): reactor.stop() @@ -39,8 +41,8 @@ class SpeedTest: d.addBoth(_done) reactor.run() if self.failed: - print "EXCEPTION" - print self.failed + print("EXCEPTION") + print(self.failed) sys.exit(1) def setUp(self): @@ -51,7 +53,7 @@ class SpeedTest: d = self.tub.getReference(self.control_furl) def _gotref(rref): self.client_rref = rref - print "Got Client Control reference" + print("Got Client Control reference") return self.stall(5) d.addCallback(_gotref) return d @@ -62,7 +64,7 @@ class SpeedTest: return d def record_times(self, times, key): - print "TIME (%s): %s up, %s down" % (key, times[0], times[1]) + print("TIME (%s): %s up, %s down" % (key, times[0], times[1])) self.upload_times[key], self.download_times[key] = times def one_test(self, res, name, count, size, mutable): @@ -84,15 +86,15 @@ class SpeedTest: self.total_rtt = sum(times) self.average_rtt = sum(times) / len(times) self.max_rtt = max(times) - print "num-peers: %d" % len(times) - print "total-RTT: %f" % self.total_rtt - print "average-RTT: %f" % self.average_rtt - print "max-RTT: %f" % self.max_rtt + print("num-peers: %d" % len(times)) + print("total-RTT: %f" % self.total_rtt) + print("average-RTT: %f" % self.average_rtt) + print("max-RTT: %f" % self.max_rtt) d.addCallback(_got) return d def do_test(self): - print "doing test" + print("doing test") d = defer.succeed(None) d.addCallback(self.one_test, "startup", 1, 1000, False) #ignore this one d.addCallback(self.measure_rtt) @@ -103,7 +105,7 @@ class SpeedTest: d.addCallback(self.one_test, "10x 200B", 10, 200, False) def _maybe_do_100x_200B(res): if self.upload_times["10x 200B"] < 5: - print "10x 200B test went too fast, doing 100x 200B test" + print("10x 200B test went too fast, doing 100x 200B test") return self.one_test(None, "100x 200B", 100, 200, False) return d.addCallback(_maybe_do_100x_200B) @@ -111,7 +113,7 @@ class SpeedTest: d.addCallback(self.one_test, "10MB", 1, 10*MB, False) def _maybe_do_100MB(res): if self.upload_times["10MB"] > 30: - print "10MB test took too long, skipping 100MB test" + print("10MB test took too long, skipping 100MB test") return return self.one_test(None, "100MB", 1, 100*MB, False) d.addCallback(_maybe_do_100MB) @@ -126,7 +128,7 @@ class SpeedTest: d.addCallback(self.one_test, "10x 200B SSK", 10, 200, "upload") def _maybe_do_100x_200B_SSK(res): if self.upload_times["10x 200B SSK"] < 5: - print "10x 200B SSK test went too fast, doing 100x 200B SSK" + print("10x 200B SSK test went too fast, doing 100x 200B SSK") return self.one_test(None, "100x 200B SSK", 100, 200, "upload") return @@ -146,37 +148,37 @@ class SpeedTest: B = self.upload_times["100x 200B"] / 100 else: B = self.upload_times["10x 200B"] / 10 - print "upload per-file time: %.3fs" % B - print "upload per-file times-avg-RTT: %f" % (B / self.average_rtt) - print "upload per-file times-total-RTT: %f" % (B / self.total_rtt) + print("upload per-file time: %.3fs" % B) + print("upload per-file times-avg-RTT: %f" % (B / self.average_rtt)) + print("upload per-file times-total-RTT: %f" % (B / self.total_rtt)) A1 = 1*MB / (self.upload_times["1MB"] - B) # in bytes per second - print "upload speed (1MB):", self.number(A1, "Bps") + print("upload speed (1MB):", self.number(A1, "Bps")) A2 = 10*MB / (self.upload_times["10MB"] - B) - print "upload speed (10MB):", self.number(A2, "Bps") + print("upload speed (10MB):", self.number(A2, "Bps")) if "100MB" in self.upload_times: A3 = 100*MB / (self.upload_times["100MB"] - B) - print "upload speed (100MB):", self.number(A3, "Bps") + print("upload speed (100MB):", self.number(A3, "Bps")) # download if "100x 200B" in self.download_times: B = self.download_times["100x 200B"] / 100 else: B = self.download_times["10x 200B"] / 10 - print "download per-file time: %.3fs" % B - print "download per-file times-avg-RTT: %f" % (B / self.average_rtt) - print "download per-file times-total-RTT: %f" % (B / self.total_rtt) + print("download per-file time: %.3fs" % B) + print("download per-file times-avg-RTT: %f" % (B / self.average_rtt)) + print("download per-file times-total-RTT: %f" % (B / self.total_rtt)) A1 = 1*MB / (self.download_times["1MB"] - B) # in bytes per second - print "download speed (1MB):", self.number(A1, "Bps") + print("download speed (1MB):", self.number(A1, "Bps")) A2 = 10*MB / (self.download_times["10MB"] - B) - print "download speed (10MB):", self.number(A2, "Bps") + print("download speed (10MB):", self.number(A2, "Bps")) if "100MB" in self.download_times: A3 = 100*MB / (self.download_times["100MB"] - B) - print "download speed (100MB):", self.number(A3, "Bps") + print("download speed (100MB):", self.number(A3, "Bps")) if self.DO_MUTABLE_CREATE: # SSK creation B = self.upload_times["10x 200B SSK creation"] / 10 - print "create per-file time SSK: %.3fs" % B + print("create per-file time SSK: %.3fs" % B) if self.DO_MUTABLE: # upload SSK @@ -184,19 +186,19 @@ class SpeedTest: B = self.upload_times["100x 200B SSK"] / 100 else: B = self.upload_times["10x 200B SSK"] / 10 - print "upload per-file time SSK: %.3fs" % B + print("upload per-file time SSK: %.3fs" % B) A1 = 1*MB / (self.upload_times["1MB SSK"] - B) # in bytes per second - print "upload speed SSK (1MB):", self.number(A1, "Bps") + print("upload speed SSK (1MB):", self.number(A1, "Bps")) # download SSK if "100x 200B SSK" in self.download_times: B = self.download_times["100x 200B SSK"] / 100 else: B = self.download_times["10x 200B SSK"] / 10 - print "download per-file time SSK: %.3fs" % B + print("download per-file time SSK: %.3fs" % B) A1 = 1*MB / (self.download_times["1MB SSK"] - B) # in bytes per # second - print "download speed SSK (1MB):", self.number(A1, "Bps") + print("download speed SSK (1MB):", self.number(A1, "Bps")) def number(self, value, suffix=""): scaling = 1 diff --git a/src/allmydata/test/cli/test_cp.py b/src/allmydata/test/cli/test_cp.py index 781d15ff7..0b198c05b 100644 --- a/src/allmydata/test/cli/test_cp.py +++ b/src/allmydata/test/cli/test_cp.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os.path, json from twisted.trial import unittest from twisted.python import usage @@ -976,8 +978,8 @@ class CopyOut(GridTestMixin, CLITestMixin, unittest.TestCase): def _dump(got): ok = "ok" if got == expected else "FAIL" printable_got = ",".join(sorted(got)) - print "%-31s: got %-19s, want %-19s %s" % (case, printable_got, - printable_expected, ok) + print("%-31s: got %-19s, want %-19s %s" % (case, printable_got, + printable_expected, ok)) return got #d.addCallback(_dump) def _check(got): diff --git a/src/allmydata/test/common.py b/src/allmydata/test/common.py index 06a7161ff..3d3d84593 100644 --- a/src/allmydata/test/common.py +++ b/src/allmydata/test/common.py @@ -1,3 +1,5 @@ +from __future__ import print_function + __all__ = [ "SyncTestCase", "AsyncTestCase", @@ -512,7 +514,7 @@ class WebErrorMixin: # this method as an errback handler, and it will reveal the hidden # message. f.trap(WebError) - print "Web Error:", f.value, ":", f.value.response + print("Web Error:", f.value, ":", f.value.response) return f def _shouldHTTPError(self, res, which, validator): @@ -561,7 +563,7 @@ class WebErrorMixin: class ErrorMixin(WebErrorMixin): def explain_error(self, f): if f.check(defer.FirstError): - print "First Error:", f.value.subFailure + print("First Error:", f.value.subFailure) return f def corrupt_field(data, offset, size, debug=False): diff --git a/src/allmydata/test/common_util.py b/src/allmydata/test/common_util.py index 7fc30486d..91afa6814 100644 --- a/src/allmydata/test/common_util.py +++ b/src/allmydata/test/common_util.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os, signal, sys, time from random import randrange from six.moves import StringIO @@ -99,7 +101,7 @@ class NonASCIIPathMixin: if os.path.exists(dirpath): msg = ("We were unable to delete a non-ASCII directory %r created by the test. " "This is liable to cause failures on future builds." % (dirpath,)) - print msg + print(msg) log.err(msg) self.addCleanup(_cleanup) os.mkdir(dirpath) @@ -228,7 +230,7 @@ class TestMixin(SignalMixin): if p.active(): p.cancel() else: - print "WEIRDNESS! pending timed call not active!" + print("WEIRDNESS! pending timed call not active!") if required_to_quiesce and active: self.fail("Reactor was still active when it was required to be quiescent.") diff --git a/src/allmydata/test/mutable/test_problems.py b/src/allmydata/test/mutable/test_problems.py index f6e6183af..dab71d804 100644 --- a/src/allmydata/test/mutable/test_problems.py +++ b/src/allmydata/test/mutable/test_problems.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os, base64 from twisted.trial import unittest from twisted.internet import defer @@ -236,9 +238,9 @@ class Problems(GridTestMixin, unittest.TestCase, testutil.ShouldFailMixin): d.addCallback(lambda res: n.download_best_version()) d.addCallback(lambda res: self.failUnlessEqual(res, "contents 2")) def _explain_error(f): - print f + print(f) if f.check(NotEnoughServersError): - print "first_error:", f.value.first_error + print("first_error:", f.value.first_error) return f d.addErrback(_explain_error) return d diff --git a/src/allmydata/test/mutable/test_roundtrip.py b/src/allmydata/test/mutable/test_roundtrip.py index 267bffe2c..aff656a3a 100644 --- a/src/allmydata/test/mutable/test_roundtrip.py +++ b/src/allmydata/test/mutable/test_roundtrip.py @@ -1,3 +1,5 @@ +from __future__ import print_function + from cStringIO import StringIO from twisted.trial import unittest @@ -41,11 +43,11 @@ class Roundtrip(unittest.TestCase, testutil.ShouldFailMixin, PublishMixin): return output def dump_servermap(self, servermap): - print "SERVERMAP", servermap - print "RECOVERABLE", [self.abbrev_verinfo(v) - for v in servermap.recoverable_versions()] - print "BEST", self.abbrev_verinfo(servermap.best_recoverable_version()) - print "available", self.abbrev_verinfo_dict(servermap.shares_available()) + print("SERVERMAP", servermap) + print("RECOVERABLE", [self.abbrev_verinfo(v) + for v in servermap.recoverable_versions()]) + print("BEST", self.abbrev_verinfo(servermap.best_recoverable_version())) + print("available", self.abbrev_verinfo_dict(servermap.shares_available())) def do_download(self, servermap, version=None): if version is None: diff --git a/src/allmydata/test/mutable/test_update.py b/src/allmydata/test/mutable/test_update.py index 50018537b..04207fbbe 100644 --- a/src/allmydata/test/mutable/test_update.py +++ b/src/allmydata/test/mutable/test_update.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import re from twisted.trial import unittest from twisted.internet import defer @@ -56,9 +58,9 @@ class Update(GridTestMixin, unittest.TestCase, testutil.ShouldFailMixin): d.addCallback(lambda ign: self.mdmf_node.download_best_version()) def _check(results): if results != expected: - print - print "got: %s ... %s" % (results[:20], results[-20:]) - print "exp: %s ... %s" % (expected[:20], expected[-20:]) + print() + print("got: %s ... %s" % (results[:20], results[-20:])) + print("exp: %s ... %s" % (expected[:20], expected[-20:])) self.fail("results != expected") d.addCallback(_check) return d @@ -111,21 +113,21 @@ class Update(GridTestMixin, unittest.TestCase, testutil.ShouldFailMixin): #print "expecting: %s" % expspans if got != expected: - print "differences:" + print("differences:") for segnum in range(len(expected)//SEGSIZE): start = segnum * SEGSIZE end = (segnum+1) * SEGSIZE got_ends = "%s .. %s" % (got[start:start+20], got[end-20:end]) exp_ends = "%s .. %s" % (expected[start:start+20], expected[end-20:end]) if got_ends != exp_ends: - print "expected[%d]: %s" % (start, exp_ends) - print "got [%d]: %s" % (start, got_ends) + print("expected[%d]: %s" % (start, exp_ends)) + print("got [%d]: %s" % (start, got_ends)) if expspans != gotspans: - print "expected: %s" % expspans - print "got : %s" % gotspans + print("expected: %s" % expspans) + print("got : %s" % gotspans) open("EXPECTED","wb").write(expected) open("GOT","wb").write(got) - print "wrote data to EXPECTED and GOT" + print("wrote data to EXPECTED and GOT") self.fail("didn't get expected data") diff --git a/src/allmydata/test/mutable/test_version.py b/src/allmydata/test/mutable/test_version.py index b7e507351..03f0d4ea8 100644 --- a/src/allmydata/test/mutable/test_version.py +++ b/src/allmydata/test/mutable/test_version.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os from cStringIO import StringIO from twisted.internet import defer @@ -346,10 +348,10 @@ class Version(GridTestMixin, unittest.TestCase, testutil.ShouldFailMixin, \ d.addCallback(lambda ignored: "".join(c.chunks)) def _check(results): if results != expected_range: - print "read([%d]+%s) got %d bytes, not %d" % \ - (offset, length, len(results), len(expected_range)) - print "got: %s ... %s" % (results[:20], results[-20:]) - print "exp: %s ... %s" % (expected_range[:20], expected_range[-20:]) + print("read([%d]+%s) got %d bytes, not %d" % \ + (offset, length, len(results), len(expected_range))) + print("got: %s ... %s" % (results[:20], results[-20:])) + print("exp: %s ... %s" % (expected_range[:20], expected_range[-20:])) self.fail("results[%s] != expected_range" % name) return version # daisy-chained to next call d.addCallback(_check) diff --git a/src/allmydata/test/test_crawler.py b/src/allmydata/test/test_crawler.py index c4aa99142..05677d1ac 100644 --- a/src/allmydata/test/test_crawler.py +++ b/src/allmydata/test/test_crawler.py @@ -1,3 +1,4 @@ +from __future__ import print_function import time import os.path @@ -373,9 +374,9 @@ class Basic(unittest.TestCase, StallMixin, pollmixin.PollMixin): # our buildslaves vary too much in their speeds and load levels, # and many of them only manage to hit 7% usage when our target is # 50%. So don't assert anything about the results, just log them. - print - print "crawler: got %d%% percent when trying for 50%%" % percent - print "crawler: got %d full cycles" % c.cycles + print() + print("crawler: got %d%% percent when trying for 50%%" % percent) + print("crawler: got %d full cycles" % c.cycles) d.addCallback(_done) return d diff --git a/src/allmydata/test/test_download.py b/src/allmydata/test/test_download.py index be31a9c73..0880ac140 100644 --- a/src/allmydata/test/test_download.py +++ b/src/allmydata/test/test_download.py @@ -1,3 +1,4 @@ +from __future__ import print_function # system-level upload+download roundtrip test, but using shares created from # a previous run. This asserts that the current code is capable of decoding @@ -1065,8 +1066,8 @@ class Corruption(_Base, unittest.TestCase): d.addCallback(_uploaded) def _show_results(ign): share_len = len(self.shares.values()[0]) - print - print ("of [0:%d], corruption ignored in %s" % + print() + print("of [0:%d], corruption ignored in %s" % (share_len, undetected.dump())) if self.catalog_detection: d.addCallback(_show_results) diff --git a/src/allmydata/test/test_encodingutil.py b/src/allmydata/test/test_encodingutil.py index a5152c3e0..743e9ef9f 100644 --- a/src/allmydata/test/test_encodingutil.py +++ b/src/allmydata/test/test_encodingutil.py @@ -1,3 +1,4 @@ +from __future__ import print_function lumiere_nfc = u"lumi\u00E8re" Artonwall_nfc = u"\u00C4rtonwall.mp3" @@ -19,24 +20,24 @@ if __name__ == "__main__": import platform if len(sys.argv) != 2: - print "Usage: %s lumire" % sys.argv[0] + print("Usage: %s lumire" % sys.argv[0]) sys.exit(1) if sys.platform == "win32": try: from allmydata.windows.fixups import initialize except ImportError: - print "set PYTHONPATH to the src directory" + print("set PYTHONPATH to the src directory") sys.exit(1) initialize() - print - print "class MyWeirdOS(EncodingUtil, unittest.TestCase):" - print " uname = '%s'" % ' '.join(platform.uname()) - print " argv = %s" % repr(sys.argv[1]) - print " platform = '%s'" % sys.platform - print " filesystem_encoding = '%s'" % sys.getfilesystemencoding() - print " io_encoding = '%s'" % sys.stdout.encoding + print() + print("class MyWeirdOS(EncodingUtil, unittest.TestCase):") + print(" uname = '%s'" % ' '.join(platform.uname())) + print(" argv = %s" % repr(sys.argv[1])) + print(" platform = '%s'" % sys.platform) + print(" filesystem_encoding = '%s'" % sys.getfilesystemencoding()) + print(" io_encoding = '%s'" % sys.stdout.encoding) try: tmpdir = tempfile.mkdtemp() for fname in TEST_FILENAMES: @@ -48,10 +49,10 @@ if __name__ == "__main__": else: dirlist = os.listdir(tmpdir) - print " dirlist = %s" % repr(dirlist) + print(" dirlist = %s" % repr(dirlist)) except: - print " # Oops, I cannot write filenames containing non-ascii characters" - print + print(" # Oops, I cannot write filenames containing non-ascii characters") + print() shutil.rmtree(tmpdir) sys.exit(0) diff --git a/src/allmydata/test/test_magic_folder.py b/src/allmydata/test/test_magic_folder.py index 538698354..9c7a4ef2d 100644 --- a/src/allmydata/test/test_magic_folder.py +++ b/src/allmydata/test/test_magic_folder.py @@ -1,3 +1,4 @@ +from __future__ import print_function import os, sys, time import stat, shutil, json @@ -1340,12 +1341,12 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea bob_clock = self.bob_magicfolder.uploader._clock def _wait_for_Alice(ign, downloaded_d): - if _debug: print "Now waiting for Alice to download\n" + if _debug: print("Now waiting for Alice to download\n") alice_clock.advance(4) return downloaded_d def _wait_for_Bob(ign, downloaded_d): - if _debug: print "Now waiting for Bob to download\n" + if _debug: print("Now waiting for Bob to download\n") bob_clock.advance(4) return downloaded_d @@ -1361,11 +1362,11 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea def advance(ign): if alice: - if _debug: print "Waiting for Alice to upload 3\n" + if _debug: print("Waiting for Alice to upload 3\n") alice_clock.advance(4) uploaded_d.addCallback(_wait_for_Bob, downloaded_d) else: - if _debug: print "Waiting for Bob to upload\n" + if _debug: print("Waiting for Bob to upload\n") bob_clock.advance(4) uploaded_d.addCallback(_wait_for_Alice, downloaded_d) return uploaded_d @@ -1374,7 +1375,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @inline_callbacks def Alice_to_write_a_file(): - if _debug: print "Alice writes a file\n\n\n\n\n" + if _debug: print("Alice writes a file\n\n\n\n\n") self.file_path = abspath_expanduser_unicode(u"file1", base=self.alice_magicfolder.uploader._local_path_u) yield self.alice_fileops.write(self.file_path, "meow, meow meow. meow? meow meow! meow.") yield iterate(self.alice_magicfolder) @@ -1402,7 +1403,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @inline_callbacks def Alice_to_delete_file(): - if _debug: print "Alice deletes the file!\n\n\n\n" + if _debug: print("Alice deletes the file!\n\n\n\n") yield self.alice_fileops.delete(self.file_path) yield iterate(self.alice_magicfolder) yield iterate(self.bob_magicfolder) @@ -1438,7 +1439,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @inline_callbacks def Alice_to_rewrite_file(): - if _debug: print "Alice rewrites file\n" + if _debug: print("Alice rewrites file\n") self.file_path = abspath_expanduser_unicode(u"file1", base=self.alice_magicfolder.uploader._local_path_u) yield self.alice_fileops.write( self.file_path, @@ -1472,7 +1473,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea encoded_path_u = magicpath.path2magic(u"/tmp/magic_folder_test") def Alice_tries_to_p0wn_Bob(ign): - if _debug: print "Alice tries to p0wn Bob\n" + if _debug: print("Alice tries to p0wn Bob\n") iter_d = iterate(self.bob_magicfolder) processed_d = self.bob_magicfolder.downloader.set_hook('processed') @@ -1498,9 +1499,9 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @inline_callbacks def Bob_to_rewrite_file(): - if _debug: print "Bob rewrites file\n" + if _debug: print("Bob rewrites file\n") self.file_path = abspath_expanduser_unicode(u"file1", base=self.bob_magicfolder.uploader._local_path_u) - if _debug: print "---- bob's file is %r" % (self.file_path,) + if _debug: print("---- bob's file is %r" % (self.file_path,)) yield self.bob_fileops.write(self.file_path, "No white rabbit to be found.") yield iterate(self.bob_magicfolder) d.addCallback(lambda ign: _wait_for(None, Bob_to_rewrite_file, alice=False)) @@ -1525,7 +1526,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea d.addCallback(check_state) def Alice_conflicts_with_Bobs_last_downloaded_uri(): - if _debug: print "Alice conflicts with Bob\n" + if _debug: print("Alice conflicts with Bob\n") downloaded_d = self.bob_magicfolder.downloader.set_hook('processed') uploadable = Data("do not follow the white rabbit", self.alice_magicfolder._client.convergence) alice_dmd = self.alice_magicfolder.uploader._upload_dirnode @@ -1533,7 +1534,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea metadata={"version": 5, "last_downloaded_uri" : "URI:LIT:" }, overwrite=True) - if _debug: print "Waiting for Alice to upload\n" + if _debug: print("Waiting for Alice to upload\n") d2.addCallback(lambda ign: bob_clock.advance(6)) d2.addCallback(lambda ign: downloaded_d) d2.addCallback(lambda ign: self.failUnless(alice_dmd.has_child(encoded_path_u))) @@ -1555,7 +1556,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @log_call_deferred(action_type=u"alice:to-write:file2") @inline_callbacks def Alice_to_write_file2(): - if _debug: print "Alice writes a file2\n" + if _debug: print("Alice writes a file2\n") self.file_path = abspath_expanduser_unicode(u"file2", base=self.alice_magicfolder.uploader._local_path_u) d = self.alice_fileops.write(self.file_path, "something") self.bob_clock.advance(4) @@ -1588,14 +1589,14 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @inline_callbacks def Bob_to_rewrite_file2(): - if _debug: print "Bob rewrites file2\n" + if _debug: print("Bob rewrites file2\n") self.file_path = abspath_expanduser_unicode(u"file2", base=self.bob_magicfolder.uploader._local_path_u) - if _debug: print "---- bob's file is %r" % (self.file_path,) + if _debug: print("---- bob's file is %r" % (self.file_path,)) yield iterate(self.bob_magicfolder) yield self.bob_fileops.write(self.file_path, "roger roger. what vector?") - if _debug: print "---- bob rewrote file2" + if _debug: print("---- bob rewrote file2") yield iterate(self.bob_magicfolder) - if _debug: print "---- iterated bob's magicfolder" + if _debug: print("---- iterated bob's magicfolder") d.addCallback(lambda ign: _wait_for(None, Bob_to_rewrite_file2, alice=False)) @log_call_deferred(action_type=u"check_state") @@ -1636,7 +1637,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea d.addCallback(check_state) def Alice_conflicts_with_Bobs_last_uploaded_uri(): - if _debug: print "Alice conflicts with Bob\n" + if _debug: print("Alice conflicts with Bob\n") encoded_path_u = magicpath.path2magic(u"file2") downloaded_d = self.bob_magicfolder.downloader.set_hook('processed') uploadable = Data("rabbits with sharp fangs", self.alice_magicfolder._client.convergence) @@ -1645,7 +1646,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea metadata={"version": 5, "last_uploaded_uri" : "URI:LIT:" }, overwrite=True) - if _debug: print "Waiting for Alice to upload\n" + if _debug: print("Waiting for Alice to upload\n") d2.addCallback(lambda ign: bob_clock.advance(6)) d2.addCallback(lambda ign: downloaded_d) d2.addCallback(lambda ign: self.failUnless(alice_dmd.has_child(encoded_path_u))) @@ -1685,7 +1686,7 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea # prepare to perform another conflict test @inline_callbacks def Alice_to_write_file3(): - if _debug: print "Alice writes a file\n" + if _debug: print("Alice writes a file\n") self.file_path = abspath_expanduser_unicode(u"file3", base=self.alice_magicfolder.uploader._local_path_u) yield self.alice_fileops.write(self.file_path, "something") yield iterate(self.alice_magicfolder) @@ -1706,9 +1707,9 @@ class MagicFolderAliceBobTestMixin(MagicFolderCLITestMixin, ShouldFailMixin, Rea @inline_callbacks def Bob_to_rewrite_file3(): - if _debug: print "Bob rewrites file3\n" + if _debug: print("Bob rewrites file3\n") self.file_path = abspath_expanduser_unicode(u"file3", base=self.bob_magicfolder.uploader._local_path_u) - if _debug: print "---- bob's file is %r" % (self.file_path,) + if _debug: print("---- bob's file is %r" % (self.file_path,)) yield iterate(self.bob_magicfolder) yield self.bob_fileops.write(self.file_path, "roger roger") yield iterate(self.bob_magicfolder) diff --git a/src/allmydata/test/test_repairer.py b/src/allmydata/test/test_repairer.py index b6a5f1fff..747415207 100644 --- a/src/allmydata/test/test_repairer.py +++ b/src/allmydata/test/test_repairer.py @@ -1,4 +1,6 @@ # -*- coding: utf-8 -*- +from __future__ import print_function + from allmydata.test import common from allmydata.monitor import Monitor from allmydata import check_results @@ -348,9 +350,9 @@ class Verifier(GridTestMixin, unittest.TestCase, RepairTestMixin): def _show_results(ign): f = open("test_each_byte_output", "w") for i in sorted(results.keys()): - print >>f, "%d: %s" % (i, results[i]) + print("%d: %s" % (i, results[i]), file=f) f.close() - print "Please look in _trial_temp/test_each_byte_output for results" + print("Please look in _trial_temp/test_each_byte_output for results") d.addCallback(_show_results) return d diff --git a/src/allmydata/test/test_sftp.py b/src/allmydata/test/test_sftp.py index 1db40f39e..1f785a808 100644 --- a/src/allmydata/test/test_sftp.py +++ b/src/allmydata/test/test_sftp.py @@ -1,3 +1,4 @@ +from __future__ import print_function import re, struct, traceback, time, calendar from stat import S_IFREG, S_IFDIR @@ -54,7 +55,7 @@ class Handler(GridTestMixin, ShouldFailMixin, ReallyEqualMixin, unittest.TestCas "%s was supposed to raise SFTPError(%r), not SFTPError(%r): %s" % (which, expected_code, res.value.code, res)) else: - print '@' + '@'.join(s) + print('@' + '@'.join(s)) self.fail("%s was supposed to raise SFTPError(%r), not get %r" % (which, expected_code, res)) d.addBoth(_done) diff --git a/src/allmydata/test/test_system.py b/src/allmydata/test/test_system.py index c51398317..c178ef609 100644 --- a/src/allmydata/test/test_system.py +++ b/src/allmydata/test/test_system.py @@ -1,3 +1,4 @@ +from __future__ import print_function import os, re, sys, time, json from functools import partial @@ -1303,9 +1304,9 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): base32.b2a(storage_index)) self.failUnless(expected in output) except unittest.FailTest: - print - print "dump-share output was:" - print output + print() + print("dump-share output was:") + print(output) raise d.addCallback(_test_debug) @@ -1550,9 +1551,9 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): self.failUnless("Subscription Summary: storage: 5" in res) self.failUnless("tahoe.css" in res) except unittest.FailTest: - print - print "GET %s output was:" % self.introweb_url - print res + print() + print("GET %s output was:" % self.introweb_url) + print(res) raise d.addCallback(_check) # make sure it serves the CSS too @@ -1566,9 +1567,9 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): self.failUnlessEqual(data["announcement_summary"], {"storage": 5}) except unittest.FailTest: - print - print "GET %s?t=json output was:" % self.introweb_url - print res + print() + print("GET %s?t=json output was:" % self.introweb_url) + print(res) raise d.addCallback(_check_json) return d diff --git a/src/allmydata/test/test_util.py b/src/allmydata/test/test_util.py index ded4b2fc2..35d052392 100644 --- a/src/allmydata/test/test_util.py +++ b/src/allmydata/test/test_util.py @@ -1,3 +1,5 @@ +from __future__ import print_function + def foo(): pass # keep the line number constant @@ -49,7 +51,7 @@ class NoArgumentException(Exception): class HumanReadable(unittest.TestCase): def test_repr(self): hr = humanreadable.hr - self.failUnlessEqual(hr(foo), "") + self.failUnlessEqual(hr(foo), "") self.failUnlessEqual(hr(self.test_repr), ">") self.failUnlessEqual(hr(1L), "1") @@ -2084,13 +2086,13 @@ class StringSpans(unittest.TestCase): p_added = set(range(start, end)) b = base() if DEBUG: - print - print dump(b), which + print() + print(dump(b), which) add = klass(); add.add(start, S[start:end]) - print dump(add) + print(dump(add)) b.add(start, S[start:end]) if DEBUG: - print dump(b) + print(dump(b)) # check that the new span is there d = b.get(start, end-start) self.failUnlessEqual(d, S[start:end], which) diff --git a/src/allmydata/test/web/test_grid.py b/src/allmydata/test/web/test_grid.py index 8c07a0dd1..fdd0ee166 100644 --- a/src/allmydata/test/web/test_grid.py +++ b/src/allmydata/test/web/test_grid.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os.path, re, urllib import json from StringIO import StringIO @@ -611,8 +613,8 @@ class Grid(GridTestMixin, WebErrorMixin, ShouldFailMixin, testutil.ReallyEqualMi for line in res.splitlines() if line] except ValueError: - print "response is:", res - print "undecodeable line was '%s'" % line + print("response is:", res) + print("undecodeable line was '%s'" % line) raise self.failUnlessReallyEqual(len(units), 5+1) # should be parent-first diff --git a/src/allmydata/test/web/test_web.py b/src/allmydata/test/web/test_web.py index 9e3b04774..f48f397b3 100644 --- a/src/allmydata/test/web/test_web.py +++ b/src/allmydata/test/web/test_web.py @@ -1,3 +1,5 @@ +from __future__ import print_function + import os.path, re, urllib, time, cgi import json import treq @@ -2441,10 +2443,10 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixi return d def dump_root(self): - print "NODEWALK" + print("NODEWALK") w = webish.DirnodeWalkerMixin() def visitor(childpath, childnode, metadata): - print childpath + print(childpath) d = w.walk(self.public_root, visitor) return d @@ -2886,9 +2888,9 @@ class Web(WebMixin, WebErrorMixin, testutil.StallMixin, testutil.ReallyEqualMixi # will be rather terse and unhelpful. addErrback this method to the # end of your chain to get more information out of these errors. if f.check(error.Error): - print "web.error.Error:" - print f - print f.value.response + print("web.error.Error:") + print(f) + print(f.value.response) return f def test_POST_upload_replace(self):