コード例 #1
0
    def test_P4P(self):
        minion_uploader = Minions('res_file.tgz',
                                  upload_rate=150 * 1024**2,
                                  tracker=TRACKER)
        minion_uploader.upload_res('./res_file.tgz')

        time.sleep(1)

        requests.get('http://localhost:5000/peer/?res=res_file.tgz')

        minions = []
        try:
            for i in range(1):
                minion = Minions('res_file.tgz',
                                 '/tmp/res_file%s.tgz' % i,
                                 tracker=TRACKER)
                minions.append(minion)
                minion.download_res(rate=1500 * 1024**2)
                time.sleep(0.1)
            time.sleep(2)

            for m in minions:
                m.wait_for_res()

        except Exception:
            import traceback
            traceback.print_exc()
            raise
        finally:
            for m in minions:
                m.close()
            minion_uploader.close()
コード例 #2
0
    def test_P4P_ignore_url_param(self):
        minion_uploader = Minions('res_file.tgz', tracker=TRACKER)
        minion_uploader.upload_res('./res_file.tgz')

        time.sleep(1)

        requests.get('http://localhost:5000/peer/?res=res_file.tgz')

        minions = []
        try:
            for i in range(3):
                minion = Minions('res_file.tgz?a=%s&b=%s' % (i, i),
                                 '/tmp/res_file%s.tgz' % i,
                                 tracker=TRACKER,
                                 upload_res_url="res_file.tgz")
                minion.download_res(rate=20 * 1024**2, thread=True)
                time.sleep(0.1)
                minions.append(minion)
            time.sleep(2)

            for m in minions:
                m.wait_for_res()

        except Exception:
            import traceback
            traceback.print_exc()
            raise
        finally:
            for m in minions:
                m.close()
            minion_uploader.close()
コード例 #3
0
    def test_no_peers(self):

        with self.assertRaises(NoPeersFound):
            minion_1 = Minions('res_file.tgz',
                               '/tmp/minions_1.tgz',
                               tracker=TRACKER)
            minion_1.download_res()
コード例 #4
0
    def test_get_peer_strict(self):
        minion_uploader = Minions('res_file.tgz', tracker=TRACKER)
        minion_uploader.set_adt_info({'site': 'mysite1'})
        minion_uploader.upload_res('./res_file.tgz')

        minion_2 = None
        try:
            with self.assertRaises(NoPeersFound):
                minion_1 = Minions('res_file.tgz',
                                   '/tmp/res_file1.tgz',
                                   strict='site',
                                   tracker=TRACKER)
                minion_1.set_adt_info({'site': 'mysite2'})
                minion_1.download_res()

            minion_2 = Minions('res_file.tgz',
                               '/tmp/res_file2.tgz',
                               strict='site',
                               tracker=TRACKER)
            minion_2.set_adt_info({'site': 'mysite1'})
            minion_2.download_res()
        finally:
            minion_uploader.close()
            minion_1.close()
            if minion_2:
                minion_2.close()
コード例 #5
0
    def test_fallback(self):
        import BaseHTTPServer
        from SimpleHTTPServer import SimpleHTTPRequestHandler

        server_address = ('', 8000)
        httpd = BaseHTTPServer.HTTPServer(server_address,
                                          SimpleHTTPRequestHandler)
        t = Thread(target=httpd.serve_forever)
        t.start()

        try:
            minion_1 = Minions('http://localhost:8000/res_file.tgz',
                               '/tmp/res_file.tgz',
                               fallback=True,
                               tracker=TRACKER)

            minion_1.download_res()
            time.sleep(1)
            minion_2 = Minions('http://localhost:8000/res_file.tgz',
                               '/tmp/res_file1.tgz',
                               tracker=TRACKER)
            minion_2.download_res(rate=20 * 1024**2)
        finally:
            minion_1.close()
            minion_2.close()
            httpd.shutdown()
コード例 #6
0
    def test_runout_peer(self):
        minion_uploader = Minions('res_file.tgz', tracker=TRACKER)
        minion_uploader.upload_res('./res_file.tgz')

        time.sleep(1)

        requests.get('http://localhost:5000/peer/?res=res_file.tgz')

        with self.assertRaises(NoPeersFound):
            try:
                minion_1 = Minions('res_file.tgz',
                                   '/tmp/res_file.tgz',
                                   tracker=TRACKER)
                minion_1.download_res(rate=10 * 1024**2, thread=True)
                time.sleep(2)
                minion_uploader.close()
                minion_1.wait_for_res()
            except Exception as e:
                import traceback
                traceback.print_exc()
                raise e
            finally:
                minion_1.close()
                minion_uploader.close()