mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-04-28 23:09:55 +00:00
test_upload: rewrite in terms of no-network GridTestMixin, improve no_network.py as necessary
This commit is contained in:
parent
911abcc34b
commit
040cb39613
@ -131,7 +131,8 @@ class NoNetworkClient(Client):
|
|||||||
|
|
||||||
|
|
||||||
class NoNetworkGrid(service.MultiService):
|
class NoNetworkGrid(service.MultiService):
|
||||||
def __init__(self, basedir, num_clients=1, num_servers=10):
|
def __init__(self, basedir, num_clients=1, num_servers=10,
|
||||||
|
client_config_hooks={}):
|
||||||
service.MultiService.__init__(self)
|
service.MultiService.__init__(self)
|
||||||
self.basedir = basedir
|
self.basedir = basedir
|
||||||
fileutil.make_dirs(basedir)
|
fileutil.make_dirs(basedir)
|
||||||
@ -160,7 +161,13 @@ class NoNetworkGrid(service.MultiService):
|
|||||||
f.write("[storage]\n")
|
f.write("[storage]\n")
|
||||||
f.write("enabled = false\n")
|
f.write("enabled = false\n")
|
||||||
f.close()
|
f.close()
|
||||||
c = NoNetworkClient(clientdir)
|
c = None
|
||||||
|
if i in client_config_hooks:
|
||||||
|
# this hook can either modify tahoe.cfg, or return an
|
||||||
|
# entirely new Client instance
|
||||||
|
c = client_config_hooks[i](clientdir)
|
||||||
|
if not c:
|
||||||
|
c = NoNetworkClient(clientdir)
|
||||||
c.nodeid = clientid
|
c.nodeid = clientid
|
||||||
c.short_nodeid = b32encode(clientid).lower()[:8]
|
c.short_nodeid = b32encode(clientid).lower()[:8]
|
||||||
c._servers = self.all_servers # can be updated later
|
c._servers = self.all_servers # can be updated later
|
||||||
@ -187,9 +194,10 @@ class GridTestMixin:
|
|||||||
def tearDown(self):
|
def tearDown(self):
|
||||||
return self.s.stopService()
|
return self.s.stopService()
|
||||||
|
|
||||||
def set_up_grid(self):
|
def set_up_grid(self, client_config_hooks={}):
|
||||||
# self.basedir must be set
|
# self.basedir must be set
|
||||||
self.g = NoNetworkGrid(self.basedir)
|
self.g = NoNetworkGrid(self.basedir,
|
||||||
|
client_config_hooks=client_config_hooks)
|
||||||
self.g.setServiceParent(self.s)
|
self.g.setServiceParent(self.s)
|
||||||
|
|
||||||
def get_clientdir(self, i=0):
|
def get_clientdir(self, i=0):
|
||||||
|
@ -13,7 +13,7 @@ from allmydata.immutable import upload
|
|||||||
from allmydata.interfaces import IFileURI, FileTooLargeError, NotEnoughSharesError
|
from allmydata.interfaces import IFileURI, FileTooLargeError, NotEnoughSharesError
|
||||||
from allmydata.util.assertutil import precondition
|
from allmydata.util.assertutil import precondition
|
||||||
from allmydata.util.deferredutil import DeferredListShouldSucceed
|
from allmydata.util.deferredutil import DeferredListShouldSucceed
|
||||||
from common import SystemTestMixin
|
from no_network import GridTestMixin
|
||||||
from common_util import ShouldFailMixin
|
from common_util import ShouldFailMixin
|
||||||
|
|
||||||
MiB = 1024*1024
|
MiB = 1024*1024
|
||||||
@ -593,14 +593,17 @@ class StorageIndex(unittest.TestCase):
|
|||||||
d.addCallback(_done)
|
d.addCallback(_done)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
class EncodingParameters(SystemTestMixin, unittest.TestCase):
|
class EncodingParameters(GridTestMixin, unittest.TestCase):
|
||||||
def test_configure_parameters(self):
|
def test_configure_parameters(self):
|
||||||
self.basedir = self.mktemp()
|
self.basedir = self.mktemp()
|
||||||
|
hooks = {0: self._set_up_nodes_extra_config}
|
||||||
|
self.set_up_grid(client_config_hooks=hooks)
|
||||||
|
c0 = self.g.clients[0]
|
||||||
|
|
||||||
DATA = "data" * 100
|
DATA = "data" * 100
|
||||||
u = upload.Data(DATA, convergence="")
|
u = upload.Data(DATA, convergence="")
|
||||||
d = self.set_up_nodes()
|
d = c0.upload(u)
|
||||||
d.addCallback(lambda res: self.clients[0].upload(u))
|
d.addCallback(lambda ur: c0.create_node_from_uri(ur.uri))
|
||||||
d.addCallback(lambda ur: self.clients[0].create_node_from_uri(ur.uri))
|
|
||||||
m = monitor.Monitor()
|
m = monitor.Monitor()
|
||||||
d.addCallback(lambda fn: fn.check(m))
|
d.addCallback(lambda fn: fn.check(m))
|
||||||
def _check(cr):
|
def _check(cr):
|
||||||
@ -610,14 +613,18 @@ class EncodingParameters(SystemTestMixin, unittest.TestCase):
|
|||||||
d.addCallback(_check)
|
d.addCallback(_check)
|
||||||
return d
|
return d
|
||||||
|
|
||||||
def _set_up_nodes_extra_config(self):
|
def _set_up_nodes_extra_config(self, clientdir):
|
||||||
f = open(os.path.join(self.getdir("client0"), "tahoe.cfg"), "wt")
|
cfgfn = os.path.join(clientdir, "tahoe.cfg")
|
||||||
|
oldcfg = open(cfgfn, "r").read()
|
||||||
|
f = open(cfgfn, "wt")
|
||||||
|
f.write(oldcfg)
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.write("[client]\n")
|
f.write("[client]\n")
|
||||||
f.write("shares.needed = 7\n")
|
f.write("shares.needed = 7\n")
|
||||||
f.write("shares.total = 12\n")
|
f.write("shares.total = 12\n")
|
||||||
f.write("\n")
|
f.write("\n")
|
||||||
f.close()
|
f.close()
|
||||||
|
return None
|
||||||
|
|
||||||
# TODO:
|
# TODO:
|
||||||
# upload with exactly 75 peers (shares_of_happiness)
|
# upload with exactly 75 peers (shares_of_happiness)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user