示例#1
0
 def setUp(self):
     f = DummyFile(fname)
     self.server = StreamServer(('127.0.0.1', PORT),
                                BTFileHandler,
                                tfile=f,
                                allow_range=True)
     self.server.run()
示例#2
0
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")
示例#3
0
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")
示例#4
0
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)
示例#5
0
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")
示例#6
0
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)
示例#7
0
    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()
示例#8
0
 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()
示例#9
0
 def setUp(self):
     f=DummyFile(fname)
     self.server=StreamServer(('127.0.0.1',PORT), BTFileHandler, tfile=f,allow_range=True)
     self.server.run()
示例#10
0
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")