test when you have a v1 blob reflect before a stream reflect over the same blobs
This commit is contained in:
parent
4b8700268f
commit
4941d1d31d
1 changed files with 72 additions and 0 deletions
|
@ -287,6 +287,78 @@ class TestReflector(unittest.TestCase):
|
||||||
d.addCallback(lambda _: verify_data_on_reflector())
|
d.addCallback(lambda _: verify_data_on_reflector())
|
||||||
return d
|
return d
|
||||||
|
|
||||||
|
# test case when we reflect blob, and than that same blob
|
||||||
|
# is reflected as stream
|
||||||
|
def test_blob_reflect_and_stream(self):
|
||||||
|
|
||||||
|
def verify_blob_on_reflector():
|
||||||
|
check_blob_ds = []
|
||||||
|
for blob_hash, blob_size in self.expected_blobs:
|
||||||
|
check_blob_ds.append(verify_have_blob(blob_hash, blob_size))
|
||||||
|
return defer.DeferredList(check_blob_ds)
|
||||||
|
|
||||||
|
@defer.inlineCallbacks
|
||||||
|
def verify_stream_on_reflector():
|
||||||
|
# check stream_info_manager has all the right information
|
||||||
|
|
||||||
|
streams = yield self.server_stream_info_manager.get_all_streams()
|
||||||
|
self.assertEqual(1, len(streams))
|
||||||
|
self.assertEqual(self.stream_hash, streams[0])
|
||||||
|
|
||||||
|
blobs = yield self.server_stream_info_manager.get_blobs_for_stream(self.stream_hash)
|
||||||
|
blob_hashes = [b[0] for b in blobs if b[0] is not None]
|
||||||
|
expected_blob_hashes = [b[0] for b in self.expected_blobs[:-1] if b[0] is not None]
|
||||||
|
self.assertEqual(expected_blob_hashes, blob_hashes)
|
||||||
|
sd_hashes = yield self.server_stream_info_manager.get_sd_blob_hashes_for_stream(self.stream_hash)
|
||||||
|
self.assertEqual(1, len(sd_hashes))
|
||||||
|
expected_sd_hash = self.expected_blobs[-1][0]
|
||||||
|
self.assertEqual(self.sd_hash, sd_hashes[0])
|
||||||
|
|
||||||
|
# check should_announce blobs on blob_manager
|
||||||
|
blob_hashes = yield self.server_blob_manager._get_all_should_announce_blob_hashes()
|
||||||
|
self.assertEqual(2, len(blob_hashes))
|
||||||
|
self.assertTrue(self.sd_hash in blob_hashes)
|
||||||
|
self.assertTrue(expected_blob_hashes[0] in blob_hashes)
|
||||||
|
|
||||||
|
def verify_have_blob(blob_hash, blob_size):
|
||||||
|
d = self.server_blob_manager.get_blob(blob_hash)
|
||||||
|
d.addCallback(lambda blob: verify_blob_completed(blob, blob_size))
|
||||||
|
return d
|
||||||
|
|
||||||
|
def send_to_server_as_blobs(blob_hashes_to_send):
|
||||||
|
factory = reflector.BlobClientFactory(
|
||||||
|
self.session.blob_manager,
|
||||||
|
blob_hashes_to_send
|
||||||
|
)
|
||||||
|
factory.protocol_version = 0
|
||||||
|
|
||||||
|
from twisted.internet import reactor
|
||||||
|
reactor.connectTCP('localhost', self.port, factory)
|
||||||
|
return factory.finished_deferred
|
||||||
|
|
||||||
|
def send_to_server_as_stream(result):
|
||||||
|
fake_lbry_file = mocks.FakeLBRYFile(self.session.blob_manager,
|
||||||
|
self.stream_info_manager,
|
||||||
|
self.stream_hash)
|
||||||
|
factory = reflector.ClientFactory(fake_lbry_file)
|
||||||
|
|
||||||
|
from twisted.internet import reactor
|
||||||
|
reactor.connectTCP('localhost', self.port, factory)
|
||||||
|
return factory.finished_deferred
|
||||||
|
|
||||||
|
|
||||||
|
def verify_blob_completed(blob, blob_size):
|
||||||
|
self.assertTrue(blob.get_is_verified())
|
||||||
|
self.assertEqual(blob_size, blob.length)
|
||||||
|
|
||||||
|
# Modify this to change which blobs to send
|
||||||
|
blobs_to_send = self.expected_blobs
|
||||||
|
|
||||||
|
d = send_to_server_as_blobs([x[0] for x in self.expected_blobs])
|
||||||
|
d.addCallback(send_to_server_as_stream)
|
||||||
|
d.addCallback(lambda _: verify_blob_on_reflector())
|
||||||
|
d.addCallback(lambda _: verify_stream_on_reflector())
|
||||||
|
return d
|
||||||
|
|
||||||
def iv_generator():
|
def iv_generator():
|
||||||
iv = 0
|
iv = 0
|
||||||
|
|
Loading…
Reference in a new issue