From 77767e9e12cbd3e03f8ad917f6d3e8c1e4918c43 Mon Sep 17 00:00:00 2001 From: Daira Hopwood Date: Mon, 21 Apr 2014 22:40:28 +0100 Subject: [PATCH] Remove ugly shadowing of Client.DEFAULT_ENCODING_PARAMETERS. fixes #1847 Signed-off-by: Daira Hopwood --- src/allmydata/client.py | 6 +-- src/allmydata/test/test_checker.py | 18 ++++----- src/allmydata/test/test_immutable.py | 4 +- src/allmydata/test/test_repairer.py | 6 +-- src/allmydata/test/test_system.py | 10 ++--- src/allmydata/test/test_upload.py | 60 ++++++++++++++-------------- src/allmydata/test/test_web.py | 2 +- 7 files changed, 54 insertions(+), 52 deletions(-) diff --git a/src/allmydata/client.py b/src/allmydata/client.py index 217a7b47..12a10b74 100644 --- a/src/allmydata/client.py +++ b/src/allmydata/client.py @@ -130,7 +130,7 @@ class Client(node.Node, pollmixin.PollMixin): node.Node.__init__(self, basedir) self.started_timestamp = time.time() self.logSource="Client" - self.DEFAULT_ENCODING_PARAMETERS = self.DEFAULT_ENCODING_PARAMETERS.copy() + self.encoding_params = self.DEFAULT_ENCODING_PARAMETERS.copy() self.init_introducer_client() self.init_stats_provider() self.init_secrets() @@ -322,7 +322,7 @@ class Client(node.Node, pollmixin.PollMixin): if helper_furl in ("None", ""): helper_furl = None - DEP = self.DEFAULT_ENCODING_PARAMETERS + DEP = self.encoding_params DEP["k"] = int(self.get_config("client", "shares.needed", DEP["k"])) DEP["n"] = int(self.get_config("client", "shares.total", DEP["n"])) DEP["happy"] = int(self.get_config("client", "shares.happy", DEP["happy"])) @@ -504,7 +504,7 @@ class Client(node.Node, pollmixin.PollMixin): reactor.stop() def get_encoding_parameters(self): - return self.DEFAULT_ENCODING_PARAMETERS + return self.encoding_params def connected_to_introducer(self): if self.introducer_client: diff --git a/src/allmydata/test/test_checker.py b/src/allmydata/test/test_checker.py index ad5acb15..d030c12a 100644 --- a/src/allmydata/test/test_checker.py +++ b/src/allmydata/test/test_checker.py @@ -364,9 +364,9 @@ class BalancingAct(GridTestMixin, unittest.TestCase): self.basedir = "checker/BalancingAct/1115" self.set_up_grid(num_servers=1) c0 = self.g.clients[0] - c0.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 - c0.DEFAULT_ENCODING_PARAMETERS['n'] = 4 - c0.DEFAULT_ENCODING_PARAMETERS['k'] = 3 + c0.encoding_params['happy'] = 1 + c0.encoding_params['n'] = 4 + c0.encoding_params['k'] = 3 DATA = "data" * 100 d = c0.upload(Data(DATA, convergence="")) @@ -423,7 +423,7 @@ class AddLease(GridTestMixin, unittest.TestCase): self.basedir = "checker/AddLease/875" self.set_up_grid(num_servers=1) c0 = self.g.clients[0] - c0.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 + c0.encoding_params['happy'] = 1 self.uris = {} DATA = "data" * 100 d = c0.upload(Data(DATA, convergence="")) @@ -511,11 +511,11 @@ class TooParallel(GridTestMixin, unittest.TestCase): def _start(ign): self.set_up_grid(num_servers=4) self.c0 = self.g.clients[0] - self.c0.DEFAULT_ENCODING_PARAMETERS = { "k": 1, - "happy": 4, - "n": 4, - "max_segment_size": 5, - } + self.c0.encoding_params = { "k": 1, + "happy": 4, + "n": 4, + "max_segment_size": 5, + } self.uris = {} DATA = "data" * 100 # 400/5 = 80 blocks return self.c0.upload(Data(DATA, convergence="")) diff --git a/src/allmydata/test/test_immutable.py b/src/allmydata/test/test_immutable.py index 963cedae..e4b58459 100644 --- a/src/allmydata/test/test_immutable.py +++ b/src/allmydata/test/test_immutable.py @@ -140,10 +140,10 @@ class Test(GridTestMixin, unittest.TestCase, common.ShouldFailMixin): c1 = self.g.clients[1] # We need multiple segments to test crypttext hash trees that are # non-trivial (i.e. they have more than just one hash in them). - c1.DEFAULT_ENCODING_PARAMETERS['max_segment_size'] = 12 + c1.encoding_params['max_segment_size'] = 12 # Tests that need to test servers of happiness using this should # set their own value for happy -- the default (7) breaks stuff. - c1.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 + c1.encoding_params['happy'] = 1 d = c1.upload(Data(TEST_DATA, convergence="")) def _after_upload(ur): self.uri = ur.get_uri() diff --git a/src/allmydata/test/test_repairer.py b/src/allmydata/test/test_repairer.py index 0feaacb1..ca7e0df5 100644 --- a/src/allmydata/test/test_repairer.py +++ b/src/allmydata/test/test_repairer.py @@ -59,7 +59,7 @@ class RepairTestMixin: def upload_and_stash(self): c0 = self.g.clients[0] c1 = self.g.clients[1] - c0.DEFAULT_ENCODING_PARAMETERS['max_segment_size'] = 12 + c0.encoding_params['max_segment_size'] = 12 d = c0.upload(upload.Data(common.TEST_DATA, convergence="")) def _stash_uri(ur): self.uri = ur.get_uri() @@ -678,8 +678,8 @@ class Repairer(GridTestMixin, unittest.TestCase, RepairTestMixin, self.set_up_grid() c0 = self.g.clients[0] DATA = "a"*135 - c0.DEFAULT_ENCODING_PARAMETERS['k'] = 22 - c0.DEFAULT_ENCODING_PARAMETERS['n'] = 66 + c0.encoding_params['k'] = 22 + c0.encoding_params['n'] = 66 d = c0.upload(upload.Data(DATA, convergence="")) def _then(ur): self.uri = ur.get_uri() diff --git a/src/allmydata/test/test_system.py b/src/allmydata/test/test_system.py index 56abc24e..42dbc475 100644 --- a/src/allmydata/test/test_system.py +++ b/src/allmydata/test/test_system.py @@ -102,7 +102,7 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): d = self.set_up_nodes() def _check_connections(res): for c in self.clients: - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 5 + c.encoding_params['happy'] = 5 all_peerids = c.get_storage_broker().get_all_serverids() self.failUnlessEqual(len(all_peerids), self.numclients) sb = c.storage_broker @@ -214,7 +214,7 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): add_to_sparent=True)) def _added(extra_node): self.extra_node = extra_node - self.extra_node.DEFAULT_ENCODING_PARAMETERS['happy'] = 5 + self.extra_node.encoding_params['happy'] = 5 d.addCallback(_added) def _has_helper(): @@ -724,7 +724,7 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): d = self.set_up_nodes(use_stats_gatherer=True) def _new_happy_semantics(ign): for c in self.clients: - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 + c.encoding_params['happy'] = 1 d.addCallback(_new_happy_semantics) d.addCallback(self._test_introweb) d.addCallback(self.log, "starting publish") @@ -1171,7 +1171,7 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): def _new_happy_semantics(ign): for c in self.clients: # these get reset somewhere? Whatever. - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 + c.encoding_params['happy'] = 1 d.addCallback(_new_happy_semantics) d.addCallback(lambda res: self.PUT(public + "/subdir3/big.txt", "big" * 500000)) # 1.5MB @@ -1764,7 +1764,7 @@ class SystemTest(SystemTestMixin, RunBinTahoeMixin, unittest.TestCase): d = self.set_up_nodes() def _new_happy_semantics(ign): for c in self.clients: - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 + c.encoding_params['happy'] = 1 d.addCallback(_new_happy_semantics) def _run_in_subprocess(ignored, verb, *args, **kwargs): diff --git a/src/allmydata/test/test_upload.py b/src/allmydata/test/test_upload.py index 7d65926c..c0ec2468 100644 --- a/src/allmydata/test/test_upload.py +++ b/src/allmydata/test/test_upload.py @@ -98,7 +98,7 @@ class SetDEPMixin: "n": n, "max_segment_size": max_segsize, } - self.node.DEFAULT_ENCODING_PARAMETERS = p + self.node.encoding_params = p class FakeStorageServer: def __init__(self, mode): @@ -190,8 +190,10 @@ class FakeClient: "n": 100, "max_segment_size": 1*MiB, } + def __init__(self, mode="good", num_servers=50): self.num_servers = num_servers + self.encoding_params = self.DEFAULT_ENCODING_PARAMETERS.copy() if type(mode) is str: mode = dict([i,mode] for i in range(num_servers)) servers = [ ("%20d"%fakeid, FakeStorageServer(mode[fakeid])) @@ -206,7 +208,7 @@ class FakeClient: def log(self, *args, **kwargs): pass def get_encoding_parameters(self): - return self.DEFAULT_ENCODING_PARAMETERS + return self.encoding_params def get_storage_broker(self): return self.storage_broker _secret_holder = client.SecretHolder("lease secret", "convergence secret") @@ -497,7 +499,7 @@ class ServerSelection(unittest.TestCase): "n": n, "max_segment_size": max_segsize, } - self.node.DEFAULT_ENCODING_PARAMETERS = p + self.node.encoding_params = p def test_one_each(self): # if we have 50 shares, and there are 50 servers, and they all accept @@ -811,8 +813,8 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, def _has_happy_share_distribution(self): servertoshnums = self.find_all_shares() - k = self.g.clients[0].DEFAULT_ENCODING_PARAMETERS['k'] - h = self.g.clients[0].DEFAULT_ENCODING_PARAMETERS['happy'] + k = self.g.clients[0].encoding_params['k'] + h = self.g.clients[0].encoding_params['happy'] return is_happy_enough(servertoshnums, h, k) def _add_server(self, server_number, readonly=False): @@ -864,10 +866,10 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, """ self._setup_grid() client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 1 + client.encoding_params['happy'] = 1 if "n" in kwargs and "k" in kwargs: - client.DEFAULT_ENCODING_PARAMETERS['k'] = kwargs['k'] - client.DEFAULT_ENCODING_PARAMETERS['n'] = kwargs['n'] + client.encoding_params['k'] = kwargs['k'] + client.encoding_params['n'] = kwargs['n'] data = upload.Data("data" * 10000, convergence="") self.data = data d = client.upload(data) @@ -948,7 +950,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # work with 5, as long as the original 4 are not stuck in the open # BucketWriter state (open() but not parms = {"k":2, "happy":5, "n":5, "max_segment_size": 1*MiB} - c.DEFAULT_ENCODING_PARAMETERS = parms + c.encoding_params = parms d = self.shouldFail(UploadUnhappinessError, "test_aborted_shares", "shares could be placed on only 4 " "server(s) such that any 2 of them have enough " @@ -1006,7 +1008,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # Set happy = 4 in the client. def _prepare(): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + client.encoding_params['happy'] = 4 return client d.addCallback(lambda ign: _prepare()) @@ -1043,7 +1045,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, readonly=True)) def _prepare2(): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + client.encoding_params['happy'] = 4 return client d.addCallback(lambda ign: _prepare2()) @@ -1092,7 +1094,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # Ideally, a reupload of our original data should work. def _reset_encoding_parameters(ign, happy=4): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = happy + client.encoding_params['happy'] = happy return client d.addCallback(_reset_encoding_parameters) d.addCallback(lambda client: @@ -1191,7 +1193,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # Copy shares self._copy_share_to_server(3, 1) client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + client.encoding_params['happy'] = 4 return client d.addCallback(_setup) @@ -1231,7 +1233,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, readonly=True)) def _reset_encoding_parameters(ign, happy=4): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = happy + client.encoding_params['happy'] = happy return client d.addCallback(_reset_encoding_parameters) d.addCallback(lambda client: @@ -1270,7 +1272,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self.g.remove_server(self.g.servers_by_number[0].my_nodeid)) def _reset_encoding_parameters(ign, happy=4): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = happy + client.encoding_params['happy'] = happy return client d.addCallback(_reset_encoding_parameters) d.addCallback(lambda client: @@ -1565,7 +1567,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self.g.remove_server(self.g.servers_by_number[0].my_nodeid)) def _prepare_client(ign): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + client.encoding_params['happy'] = 4 return client d.addCallback(_prepare_client) d.addCallback(lambda client: @@ -1590,7 +1592,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # counting in the exception message. The same progress message # is also used when the upload is successful, but in that case it # only gets written to a log, so we can't see what it says. - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 45 + c.encoding_params['happy'] = 45 return c d.addCallback(_setup) d.addCallback(lambda c: @@ -1613,7 +1615,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self._add_server(server_number=12, readonly=True) self.g.remove_server(self.g.servers_by_number[0].my_nodeid) c = self.g.clients[0] - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 45 + c.encoding_params['happy'] = 45 return c d.addCallback(_then) d.addCallback(lambda c: @@ -1643,7 +1645,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self.g.remove_server(self.g.servers_by_number[0].my_nodeid) # Make happiness unsatisfiable c = self.g.clients[0] - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 45 + c.encoding_params['happy'] = 45 return c d.addCallback(_next) d.addCallback(lambda c: @@ -1662,9 +1664,9 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self._add_server(server_number=i, readonly=True) self.g.remove_server(self.g.servers_by_number[0].my_nodeid) c = self.g.clients[0] - c.DEFAULT_ENCODING_PARAMETERS['k'] = 2 - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 - c.DEFAULT_ENCODING_PARAMETERS['n'] = 4 + c.encoding_params['k'] = 2 + c.encoding_params['happy'] = 4 + c.encoding_params['n'] = 4 return c d.addCallback(_then) d.addCallback(lambda client: @@ -1700,7 +1702,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self.g.remove_server(self.g.servers_by_number[0].my_nodeid)) def _reset_encoding_parameters(ign, happy=4): client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = happy + client.encoding_params['happy'] = happy return client d.addCallback(_reset_encoding_parameters) d.addCallback(lambda client: @@ -1856,7 +1858,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # Remove server 0 self.g.remove_server(self.g.servers_by_number[0].my_nodeid) client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 3 + client.encoding_params['happy'] = 3 return client d.addCallback(_setup) @@ -1891,7 +1893,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # create an empty storedir to replace the one we just removed os.mkdir(storedir) client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + client.encoding_params['happy'] = 4 return client d.addCallback(_setup) @@ -1932,7 +1934,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # create an empty storedir to replace the one we just removed os.mkdir(storedir) client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + client.encoding_params['happy'] = 4 return client d.addCallback(_setup) @@ -1972,7 +1974,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self.g.remove_server(self.g.servers_by_number[0].my_nodeid) # Set the client appropriately c = self.g.clients[0] - c.DEFAULT_ENCODING_PARAMETERS['happy'] = 4 + c.encoding_params['happy'] = 4 return c d.addCallback(_server_setup) d.addCallback(lambda client: @@ -2022,7 +2024,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, # the current grid. This will fail, but should not take up any # space on the storage servers after it fails. client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 7 + client.encoding_params['happy'] = 7 d = defer.succeed(None) d.addCallback(lambda ignored: self.shouldFail(UploadUnhappinessError, @@ -2049,7 +2051,7 @@ class EncodingParameters(GridTestMixin, unittest.TestCase, SetDEPMixin, self.set_up_grid(num_servers=4) client = self.g.clients[0] - client.DEFAULT_ENCODING_PARAMETERS['happy'] = 7 + client.encoding_params['happy'] = 7 d = defer.succeed(None) d.addCallback(lambda ignored: diff --git a/src/allmydata/test/test_web.py b/src/allmydata/test/test_web.py index 731e710d..077ea028 100644 --- a/src/allmydata/test/test_web.py +++ b/src/allmydata/test/test_web.py @@ -5501,7 +5501,7 @@ class Grid(GridTestMixin, WebErrorMixin, ShouldFailMixin, testutil.ReallyEqualMi self.basedir = "web/Grid/exceptions" self.set_up_grid(num_clients=1, num_servers=2) c0 = self.g.clients[0] - c0.DEFAULT_ENCODING_PARAMETERS['happy'] = 2 + c0.encoding_params['happy'] = 2 self.fileurls = {} DATA = "data" * 100 d = c0.create_dirnode() -- 2.45.2