def setUp(self): f = DummyFile(fname) self.server = StreamServer(('127.0.0.1', PORT), BTFileHandler, tfile=f, allow_range=True) self.server.run()
class Test(unittest.TestCase): def setUp(self): f = DummyFile(fname) self.server = StreamServer(('127.0.0.1', PORT), BTFileHandler, tfile=f, allow_range=True) self.server.run() def tearDown(self): #self.server.shutdown() pass def test(self): f = DummyFile(fname) piece_size = 1024 c = HTTPLoader(URL, 0) c.init() first = c.load_piece(0, piece_size) self.assertEqual(len(first.data), piece_size) self.assertEqual(first.piece, 0) self.assertEqual(first.type, 'video/x-msvideo') self.assertEqual(first.total_size, f.size) piece_size = 2048 * 1024 last_piece = f.size // piece_size buf = StringIO() tmp_file = tempfile.mktemp() base, tmp_file = os.path.split(tmp_file) htfile = HTFile(tmp_file, base, f.size, piece_size, lambda a, b: self.fail('Should not need prioritize')) for piece in xrange(last_piece + 1): print "Piece %d" % piece p = c.load_piece(piece, piece_size) self.assertTrue(p.data) if piece != last_piece: self.assertEqual(len(p.data), piece_size) if piece == last_piece: self.assertEqual(len(p.data), f.size % piece_size) buf.write(p.data) htfile.update_piece(piece, p.data) data = buf.getvalue() with f.create_cursor() as reader: ref = reader.read() self.assertEqual(data, ref, "Diffrent") buf = StringIO() with htfile.create_cursor() as reader: while True: d = reader.read() if not d: break buf.write(d) data2 = buf.getvalue() self.assertEqual(len(data2), len(ref)) self.assertEqual(data2, ref, "Different")
class Test(unittest.TestCase): def setUp(self): f = DummyFile(fname) self.server = StreamServer(('127.0.0.1', PORT), BTFileHandler, tfile=f, allow_range=True) self.server.run() def tearDown(self): #self.server.shutdown() pass def test(self): f = DummyFile(fname) piece_size = 1024 c = HTTPLoader(URL, 0) c.init() first = c.load_piece(0, piece_size) self.assertEqual(len(first.data), piece_size) self.assertEqual(first.piece, 0) self.assertEqual(first.type, 'video/x-msvideo') self.assertEqual(first.total_size, f.size) piece_size = 2048 * 1024 / 2 last_piece = f.size // piece_size tmp_file = tempfile.mktemp() base, tmp_file = os.path.split(tmp_file) htfile = HTFile(tmp_file, base, f.size, piece_size, lambda a, b: self.fail('Should not need prioritize')) pool = Pool(piece_size, [c], htfile.update_piece, speed_limit=MyResolver.SPEED_LIMIT) def gen_loader(url, i): return HTTPLoader(url, i) for i in xrange(1, 3): pool.add_worker_async(i, gen_loader, (URL, i)) for i in xrange(last_piece + 1): pool.add_piece(i, 10 - i) while not htfile.is_complete: time.sleep(1) print htfile.pieces with f.create_cursor() as reader: ref = reader.read() buf = StringIO() with htfile.create_cursor() as reader: while True: d = reader.read() if not d: break buf.write(d) data2 = buf.getvalue() self.assertEqual(len(data2), len(ref)) self.assertEqual(data2, ref, "Different")
class Test(unittest.TestCase): def setUp(self): f=tempfile.NamedTemporaryFile(delete=False) s=os.urandom(TEST_FILE_SIZE) f.write(s) self.fname= f.name f.close() size=os.stat(self.fname).st_size fmap=Peer_Request(0, 2000) self.tf_size=size fname=os.path.split(self.fname)[1] self.client=DummyClient(self.fname, 0) self.file=BTFile(fname, '/tmp',1,size, fmap, piece_size, self.client.request) self.client.serve(self.file) self.server= StreamServer(('127.0.0.1', 5001), BTFileHandler, self.file) self.t=Thread(target=self.server.handle_request) self.t.start() def tearDown(self): self.server.stop() os.remove(self.fname) time.sleep(0.1) def notest_get_all(self): self.update_file() r=urllib2.urlopen('http://localhost:5001/'+self.file.path) res=r.read() self.assertEqual(len(res),self.tf_size) def test_range(self): req=urllib2.Request('http://localhost:5001/'+self.file.path, headers={'Range': 'bytes=100000-'}) res=urllib2.urlopen(req) buf=StringIO.StringIO() while True: pc=res.read(50000) if pc: buf.write(pc) else: break self.assertEqual(buf.tell(),self.tf_size - 100000-2000) with open(self.fname, 'rb') as f: f.seek(102000) ch=f.read() self.assertEqual(buf.getvalue(),ch)
class Test(unittest.TestCase): def setUp(self): f=DummyFile(fname) self.server=StreamServer(('127.0.0.1',PORT), BTFileHandler, tfile=f,allow_range=True) self.server.run() def tearDown(self): #self.server.shutdown() pass def test(self): f=DummyFile(fname) piece_size=1024 c=HTTPLoader(URL, 0) first=c.load_piece(0, piece_size) self.assertEqual(len(first.data), piece_size) self.assertEqual(first.piece,0) self.assertEqual(first.type,'video/x-msvideo') self.assertEqual(first.total_size, f.size) piece_size=2048*1024/2 last_piece=f.size // piece_size tmp_file=tempfile.mktemp() base,tmp_file=os.path.split(tmp_file) htfile=HTFile(tmp_file, base, f.size, piece_size, lambda a,b: self.fail('Should not need prioritize')) pool=Pool(piece_size, [c], htfile.update_piece, speed_limit=MyResolver.SPEED_LIMIT) def gen_loader(url,i): return HTTPLoader(url, i) for i in xrange(1,3): pool.add_worker_async(i, gen_loader, (URL,i)) for i in xrange(last_piece+1): pool.add_piece(i, 10-i) while not htfile.is_complete: time.sleep(1) print htfile.pieces with f.create_cursor() as reader: ref=reader.read() buf=StringIO() with htfile.create_cursor() as reader: while True: d=reader.read() if not d: break buf.write(d) data2=buf.getvalue() self.assertEqual(len(data2),len(ref)) self.assertEqual(data2, ref, "Different")
class Test(unittest.TestCase): def setUp(self): f = tempfile.NamedTemporaryFile(delete=False) s = os.urandom(TEST_FILE_SIZE) f.write(s) self.fname = f.name f.close() size = os.stat(self.fname).st_size fmap = Peer_Request(0, 2000) self.tf_size = size fname = os.path.split(self.fname)[1] self.client = DummyClient(self.fname, 0) self.file = BTFile(fname, '/tmp', 1, size, fmap, piece_size, self.client.request) self.client.serve(self.file) self.server = StreamServer(('127.0.0.1', 5001), BTFileHandler, self.file) self.t = Thread(target=self.server.handle_request) self.t.start() def tearDown(self): self.server.stop() os.remove(self.fname) time.sleep(0.1) def notest_get_all(self): self.update_file() r = urllib2.urlopen('http://localhost:5001/' + self.file.path) res = r.read() self.assertEqual(len(res), self.tf_size) def test_range(self): req = urllib2.Request('http://localhost:5001/' + self.file.path, headers={'Range': 'bytes=100000-'}) res = urllib2.urlopen(req) buf = StringIO.StringIO() while True: pc = res.read(50000) if pc: buf.write(pc) else: break self.assertEqual(buf.tell(), self.tf_size - 100000 - 2000) with open(self.fname, 'rb') as f: f.seek(102000) ch = f.read() self.assertEqual(buf.getvalue(), ch)
def setUp(self): f = tempfile.NamedTemporaryFile(delete=False) s = os.urandom(TEST_FILE_SIZE) f.write(s) self.fname = f.name f.close() size = os.stat(self.fname).st_size fmap = Peer_Request(0, 2000) self.tf_size = size fname = os.path.split(self.fname)[1] self.client = DummyClient(self.fname, 0) self.file = BTFile(fname, '/tmp', 1, size, fmap, piece_size, self.client.request) self.client.serve(self.file) self.server = StreamServer(('127.0.0.1', 5001), BTFileHandler, self.file) self.t = Thread(target=self.server.handle_request) self.t.start()
def setUp(self): f=tempfile.NamedTemporaryFile(delete=False) s=os.urandom(TEST_FILE_SIZE) f.write(s) self.fname= f.name f.close() size=os.stat(self.fname).st_size fmap=Peer_Request(0, 2000) self.tf_size=size fname=os.path.split(self.fname)[1] self.client=DummyClient(self.fname, 0) self.file=BTFile(fname, '/tmp',1,size, fmap, piece_size, self.client.request) self.client.serve(self.file) self.server= StreamServer(('127.0.0.1', 5001), BTFileHandler, self.file) self.t=Thread(target=self.server.handle_request) self.t.start()
def setUp(self): f=DummyFile(fname) self.server=StreamServer(('127.0.0.1',PORT), BTFileHandler, tfile=f,allow_range=True) self.server.run()
class Test(unittest.TestCase): def setUp(self): f=DummyFile(fname) self.server=StreamServer(('127.0.0.1',PORT), BTFileHandler, tfile=f,allow_range=True) self.server.run() def tearDown(self): #self.server.shutdown() pass def test(self): f=DummyFile(fname) piece_size=1024 c=HTTPLoader(URL, 0) first=c.load_piece(0, piece_size) self.assertEqual(len(first.data), piece_size) self.assertEqual(first.piece,0) self.assertEqual(first.type,'video/x-msvideo') self.assertEqual(first.total_size, f.size) piece_size=2048*1024 last_piece=f.size // piece_size buf=StringIO() tmp_file=tempfile.mktemp() base,tmp_file=os.path.split(tmp_file) htfile=HTFile(tmp_file, base, f.size, piece_size, lambda a,b: self.fail('Should not need prioritize')) for piece in xrange(last_piece+1): print "Piece %d"%piece p=c.load_piece(piece, piece_size) self.assertTrue(p.data) if piece!=last_piece: self.assertEqual(len(p.data), piece_size) if piece==last_piece: self.assertEqual(len(p.data), f.size % piece_size) buf.write(p.data) htfile.update_piece(piece, p.data) data=buf.getvalue() with f.create_cursor() as reader: ref=reader.read() self.assertEqual(data, ref, "Diffrent") buf=StringIO() with htfile.create_cursor() as reader: while True: d=reader.read() if not d: break buf.write(d) data2=buf.getvalue() self.assertEqual(len(data2),len(ref)) self.assertEqual(data2, ref, "Different")