from allmydata.immutable import upload, layout
from allmydata.test.no_network import GridTestMixin, NoNetworkServer
from allmydata.test.common import ShouldFailMixin
-from allmydata.interfaces import NotEnoughSharesError, NoSharesError
+from allmydata.interfaces import NotEnoughSharesError, NoSharesError, \
+ DownloadStopped
from allmydata.immutable.downloader.common import BadSegmentNumberError, \
- BadCiphertextHashError, DownloadStopped, COMPLETE, OVERDUE, DEAD
+ BadCiphertextHashError, COMPLETE, OVERDUE, DEAD
from allmydata.immutable.downloader.status import DownloadStatus
from allmydata.immutable.downloader.fetcher import SegmentFetcher
from allmydata.codec import CRSDecoder
-from foolscap.eventual import fireEventually, flushEventualQueue
+from foolscap.eventual import eventually, fireEventually, flushEventualQueue
plaintext = "This is a moderate-sized file.\n" * 10
mutable_plaintext = "This is a moderate-sized mutable file.\n" * 10
self.producer.resumeProducing()
class PausingAndStoppingConsumer(PausingConsumer):
+ debug_stopped = False
def write(self, data):
+ if self.debug_stopped:
+ raise Exception("I'm stopped, don't write to me")
self.producer.pauseProducing()
- reactor.callLater(0.5, self._stop)
+ eventually(self._stop)
def _stop(self):
+ self.debug_stopped = True
self.producer.stopProducing()
class StoppingConsumer(PausingConsumer):
for i,which,substring in corrupt_me:
# All these tests result in a failed download.
d.addCallback(self._corrupt_flip_all, imm_uri, i)
- d.addCallback(lambda ign:
+ d.addCallback(lambda ign, which=which, substring=substring:
self.shouldFail(NoSharesError, which,
substring,
_download, imm_uri))
now = 12345.1
ds = DownloadStatus("si-1", 123)
self.failUnlessEqual(ds.get_status(), "idle")
- ds.add_segment_request(0, now)
+ ev0 = ds.add_segment_request(0, now)
self.failUnlessEqual(ds.get_status(), "fetching segment 0")
- ds.add_segment_delivery(0, now+1, 0, 1000, 2.0)
+ ev0.activate(now+0.5)
+ ev0.deliver(now+1, 0, 1000, 2.0)
self.failUnlessEqual(ds.get_status(), "idle")
- ds.add_segment_request(2, now+2)
- ds.add_segment_request(1, now+2)
+ ev2 = ds.add_segment_request(2, now+2)
+ del ev2 # hush pyflakes
+ ev1 = ds.add_segment_request(1, now+2)
self.failUnlessEqual(ds.get_status(), "fetching segments 1,2")
- ds.add_segment_error(1, now+3)
+ ev1.error(now+3)
self.failUnlessEqual(ds.get_status(),
"fetching segment 2; errors on segment 1")
self._server = server
self._dyhb_rtt = rtt
def __repr__(self):
- return "sh%d-on-%s" % (self._shnum, self._server.name())
+ return "sh%d-on-%s" % (self._shnum, self._server.get_name())
class MySegmentFetcher(SegmentFetcher):
def __init__(self, *args, **kwargs):
def _check2(ign):
self.failUnless(node.failed)
self.failUnless(node.failed.check(NotEnoughSharesError))
- sname = serverA.name()
+ sname = serverA.get_name()
self.failUnlessIn("complete= pending=sh0-on-%s overdue= unused=" % sname,
str(node.failed))
d.addCallback(_check2)
def _check4(ign):
self.failUnless(node.failed)
self.failUnless(node.failed.check(NotEnoughSharesError))
- sname = servers["peer-2"].name()
+ sname = servers["peer-2"].get_name()
self.failUnlessIn("complete=sh0 pending= overdue=sh2-on-%s unused=" % sname,
str(node.failed))
d.addCallback(_check4)