mirror of
https://github.com/tahoe-lafs/tahoe-lafs.git
synced 2025-01-31 00:24:13 +00:00
added storage test
This commit is contained in:
parent
f9703da468
commit
c397ddf5ce
102
allmydata/test/test_storage.py
Normal file
102
allmydata/test/test_storage.py
Normal file
@ -0,0 +1,102 @@
|
||||
|
||||
import os
|
||||
import random
|
||||
|
||||
from twisted.trial import unittest
|
||||
from twisted.application import service
|
||||
from twisted.internet import defer
|
||||
from twisted.python import log
|
||||
from foolscap import Tub
|
||||
|
||||
from allmydata import client
|
||||
|
||||
class StorageTest(unittest.TestCase):
|
||||
|
||||
def setUp(self):
|
||||
self.svc = service.MultiService()
|
||||
self.node = client.Client('')
|
||||
self.node.setServiceParent(self.svc)
|
||||
self.tub = Tub()
|
||||
self.tub.setServiceParent(self.svc)
|
||||
return self.svc.startService()
|
||||
|
||||
def test_create_bucket(self):
|
||||
vid = os.urandom(20)
|
||||
bnum = random.randint(0,100)
|
||||
data = os.urandom(random.randint(1024, 16384))
|
||||
|
||||
rssd = self.tub.getReference(self.node.my_pburl)
|
||||
def get_storageserver(node):
|
||||
return node.callRemote('get_service', name='storageserver')
|
||||
rssd.addCallback(get_storageserver)
|
||||
|
||||
def create_bucket(storageserver):
|
||||
return storageserver.callRemote('allocate_bucket',
|
||||
verifierid=vid,
|
||||
bucket_num=bnum,
|
||||
size=len(data),
|
||||
leaser=self.node.nodeid,
|
||||
)
|
||||
rssd.addCallback(create_bucket)
|
||||
|
||||
def write_to_bucket(bucket):
|
||||
def write_some(junk, bucket, bytes):
|
||||
return bucket.callRemote('write', data=bytes)
|
||||
def finalise(junk, bucket):
|
||||
return bucket.callRemote('finalise')
|
||||
off1 = len(data) / 2
|
||||
off2 = 3 * len(data) / 4
|
||||
d = defer.succeed(None)
|
||||
d.addCallback(write_some, bucket, data[:off1])
|
||||
d.addCallback(write_some, bucket, data[off1:off2])
|
||||
d.addCallback(write_some, bucket, data[off2:])
|
||||
d.addCallback(finalise, bucket)
|
||||
return d
|
||||
rssd.addCallback(write_to_bucket)
|
||||
|
||||
return rssd
|
||||
|
||||
def test_overwrite(self):
|
||||
vid = os.urandom(20)
|
||||
bnum = random.randint(0,100)
|
||||
data = os.urandom(random.randint(1024, 16384))
|
||||
|
||||
rssd = self.tub.getReference(self.node.my_pburl)
|
||||
def get_storageserver(node):
|
||||
return node.callRemote('get_service', name='storageserver')
|
||||
rssd.addCallback(get_storageserver)
|
||||
|
||||
def create_bucket(storageserver):
|
||||
return storageserver.callRemote('allocate_bucket',
|
||||
verifierid=vid,
|
||||
bucket_num=bnum,
|
||||
size=len(data),
|
||||
leaser=self.node.nodeid,
|
||||
)
|
||||
rssd.addCallback(create_bucket)
|
||||
|
||||
def write_to_bucket(bucket):
|
||||
def write_some(junk, bucket, bytes):
|
||||
return bucket.callRemote('write', data=bytes)
|
||||
def finalise(junk, bucket):
|
||||
return bucket.callRemote('finalise')
|
||||
off1 = len(data) / 2
|
||||
off2 = 3 * len(data) / 4
|
||||
d = defer.succeed(None)
|
||||
d.addCallback(write_some, bucket, data[:off1])
|
||||
d.addCallback(write_some, bucket, data[off1:off2])
|
||||
d.addCallback(write_some, bucket, data[off2:])
|
||||
# and then overwrite
|
||||
d.addCallback(write_some, bucket, data[off1:off2])
|
||||
d.addCallback(finalise, bucket)
|
||||
return d
|
||||
rssd.addCallback(write_to_bucket)
|
||||
|
||||
def should_fail(f):
|
||||
f.trap(AssertionError)
|
||||
|
||||
rssd.addCallbacks(self.fail, should_fail)
|
||||
return rssd
|
||||
|
||||
def tearDown(self):
|
||||
return self.svc.stopService()
|
Loading…
x
Reference in New Issue
Block a user