def file_server6(request): time.sleep(0.1) file_server6 = FileServer("::1", 1544) file_server6.ip_external = 'fca5:95d6:bfde:d902:8951:276e:1111:a22c' # Fake external ip def listen(): ConnectionServer.start(file_server6) ConnectionServer.listen(file_server6) gevent.spawn(listen) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server6.getConnection("::1", 1544) conn.close() break except Exception as err: print("FileServer6 startup error", Debug.formatException(err)) assert file_server6.running file_server6.ip_incoming = {} # Reset flood protection def stop(): file_server6.stop() request.addfinalizer(stop) return file_server6
def file_server4(request): time.sleep(0.1) file_server = FileServer("127.0.0.1", 1544) file_server.ip_external = "1.2.3.4" # Fake external ip def listen(): ConnectionServer.start(file_server) ConnectionServer.listen(file_server) gevent.spawn(listen) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server.getConnection("127.0.0.1", 1544) conn.close() break except Exception as err: print("FileServer6 startup error", Debug.formatException(err)) assert file_server.running file_server.ip_incoming = {} # Reset flood protection def stop(): file_server.stop() request.addfinalizer(stop) return file_server
def testPex(self, file_server, site, site_temp): file_server.sites[site.address] = site client = FileServer(file_server.ip, 1545) client.sites = {site_temp.address: site_temp} site_temp.connection_server = client connection = client.getConnection(file_server.ip, 1544) # Add new fake peer to site fake_peer = site.addPeer(file_server.ip_external, 11337, return_peer=True) # Add fake connection to it fake_peer.connection = Connection(file_server, file_server.ip_external, 11337) fake_peer.connection.last_recv_time = time.time() assert fake_peer in site.getConnectablePeers() # Add file_server as peer to client peer_file_server = site_temp.addPeer(file_server.ip, 1544) assert "%s:11337" % file_server.ip_external not in site_temp.peers assert peer_file_server.pex() assert "%s:11337" % file_server.ip_external in site_temp.peers # Should not exchange private peers from local network fake_peer_private = site.addPeer("192.168.0.1", 11337, return_peer=True) assert fake_peer_private not in site.getConnectablePeers(allow_private=False) fake_peer_private.connection = Connection(file_server, "192.168.0.1", 11337) fake_peer_private.connection.last_recv_time = time.time() assert "192.168.0.1:11337" not in site_temp.peers assert not peer_file_server.pex() assert "192.168.0.1:11337" not in site_temp.peers connection.close() client.stop()
def testPex(self, file_server, site, site_temp): file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add new fake peer to site fake_peer = site.addPeer("1.2.3.4", 11337, return_peer=True) # Add fake connection to it fake_peer.connection = Connection(file_server, "1.2.3.4", 11337) fake_peer.connection.last_recv_time = time.time() assert fake_peer in site.getConnectablePeers() # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) assert "1.2.3.4:11337" not in site_temp.peers assert peer_file_server.pex() assert "1.2.3.4:11337" in site_temp.peers # Should not exchange private peers from local network fake_peer_private = site.addPeer("192.168.0.1", 11337, return_peer=True) assert fake_peer_private not in site.getConnectablePeers(allow_private=False) fake_peer_private.connection = Connection(file_server, "192.168.0.1", 11337) fake_peer_private.connection.last_recv_time = time.time() assert "192.168.0.1:11337" not in site_temp.peers assert not peer_file_server.pex() assert "192.168.0.1:11337" not in site_temp.peers connection.close() client.stop()
def file_server(request): request.addfinalizer(CryptConnection.manager.removeCerts) # Remove cert files after end file_server = FileServer("127.0.0.1", 1544) gevent.spawn(lambda: ConnectionServer.start(file_server)) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server.getConnection("127.0.0.1", 1544) conn.close() break except Exception, err: print err
def file_server(request): request.addfinalizer(CryptConnection.manager.removeCerts) # Remove cert files after end file_server = FileServer("127.0.0.1", 1544) gevent.spawn(lambda: ConnectionServer.start(file_server)) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server.getConnection("127.0.0.1", 1544) conn.close() break except Exception, err: print err
def file_server6(request): file_server6 = FileServer("::1", 1544) file_server6.ip_external = 'fe80::202:b3ff:fe1e:8329' # Fake external ip def listen(): ConnectionServer.start(file_server6) ConnectionServer.listen(file_server6) gevent.spawn(listen) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server6.getConnection("::1", 1544) conn.close() break except Exception, err: print err
def file_server6(request): file_server6 = FileServer("::1", 1544) file_server6.ip_external = 'fca5:95d6:bfde:d902:8951:276e:1111:a22c' # Fake external ip def listen(): ConnectionServer.start(file_server6) ConnectionServer.listen(file_server6) gevent.spawn(listen) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server6.getConnection("::1", 1544) conn.close() break except Exception, err: print err
def file_server4(request): file_server = FileServer("127.0.0.1", 1544) file_server.ip_external = "1.2.3.4" # Fake external ip def listen(): ConnectionServer.start(file_server) ConnectionServer.listen(file_server) gevent.spawn(listen) # Wait for port opening for retry in range(10): time.sleep(0.1) # Port opening try: conn = file_server.getConnection("127.0.0.1", 1544) conn.close() break except Exception, err: print err
def testPing(self, file_server, site, site_temp): file_server.sites[site.address] = site client = FileServer(file_server.ip, 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection(file_server.ip, 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer(file_server.ip, 1544) assert peer_file_server.ping() is not None assert peer_file_server in site_temp.peers.values() peer_file_server.remove() assert peer_file_server not in site_temp.peers.values() connection.close() client.stop()
def testPing(self, file_server, site, site_temp): file_server.ip_incoming = {} # Reset flood protection file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) assert peer_file_server.ping() assert peer_file_server in site_temp.peers.values() peer_file_server.remove() assert peer_file_server not in site_temp.peers.values() connection.close() client.stop()
def testDownloadFile(self, file_server, site, site_temp): file_server.ip_incoming = {} # Reset flood protection file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) # Testing streamFile buff = peer_file_server.streamFile(site_temp.address, "content.json") assert "sign" in buff.getvalue() # Testing getFile buff = peer_file_server.getFile(site_temp.address, "content.json") assert "sign" in buff.getvalue() connection.close() client.stop()
def testRangedFileRequest(self, file_server, site, site_temp): inner_path = self.createBigfile(site) file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) buff = peer_file_server.getFile(site_temp.address, "%s|%s-%s" % (inner_path, 5 * 1024 * 1024, 6 * 1024 * 1024)) assert len(buff.getvalue()) == 1 * 1024 * 1024 # Correct block size assert buff.getvalue().startswith("Test524") # Correct data buff.seek(0) assert site.content_manager.verifyPiece(inner_path, 5 * 1024 * 1024, buff) # Correct hash connection.close() client.stop()
def testDownloadFile(self, file_server, site, site_temp): file_server.ip_incoming = {} # Reset flood protection file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) # Testing streamFile buff = peer_file_server.streamFile(site_temp.address, "content.json") assert "sign" in buff.getvalue() # Testing getFile buff = peer_file_server.getFile(site_temp.address, "content.json") assert "sign" in buff.getvalue() connection.close() client.stop()
def testRangedFileRequest(self, file_server, site, site_temp): inner_path = self.createBigfile(site) file_server.sites[site.address] = site client = FileServer(file_server.ip, 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection(file_server.ip, 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer(file_server.ip, 1544) buff = peer_file_server.getFile(site_temp.address, "%s|%s-%s" % (inner_path, 5 * 1024 * 1024, 6 * 1024 * 1024)) assert len(buff.getvalue()) == 1 * 1024 * 1024 # Correct block size assert buff.getvalue().startswith("Test524") # Correct data buff.seek(0) assert site.content_manager.verifyPiece(inner_path, 5 * 1024 * 1024, buff) # Correct hash connection.close() client.stop()
def testDownloadFile(self, file_server, site, site_temp): file_server.sites[site.address] = site client = FileServer(file_server.ip, 1545) client.sites = {site_temp.address: site_temp} site_temp.connection_server = client connection = client.getConnection(file_server.ip, 1544) # Add file_server as peer to client peer_file_server = site_temp.addPeer(file_server.ip, 1544) # Testing streamFile buff = peer_file_server.getFile(site_temp.address, "content.json", streaming=True) assert b"sign" in buff.getvalue() # Testing getFile buff = peer_file_server.getFile(site_temp.address, "content.json") assert b"sign" in buff.getvalue() connection.close() client.stop()
def testHashfieldExchange(self, file_server, site, site_temp): file_server.ip_incoming = {} # Reset flood protection file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) site.storage.verifyFiles(quick_check=True) # Find what optional files we have # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) # Check if hashfield has any files assert len(site.content_manager.hashfield) > 0 # Testing hashfield sync assert len(peer_file_server.hashfield) == 0 assert peer_file_server.getHashfield() assert len(peer_file_server.hashfield) > 0 connection.close() client.stop()
def testPex(self, file_server, site, site_temp): file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add new fake peer to site fake_peer = site.addPeer("1.2.3.4", 11337, return_peer=True) # Add fake connection to it fake_peer.connection = Connection(file_server, "1.2.3.4", 11337) fake_peer.connection.last_recv_time = time.time() assert fake_peer in site.getConnectablePeers() # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) assert "1.2.3.4:11337" not in site_temp.peers assert peer_file_server.pex() assert "1.2.3.4:11337" in site_temp.peers connection.close() client.stop()
def testHashfieldExchange(self, file_server, site, site_temp): file_server.ip_incoming = {} # Reset flood protection file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) site.storage.verifyFiles( quick_check=True) # Find what optional files we have # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) # Check if hashfield has any files assert len(site.content_manager.hashfield) > 0 # Testing hashfield sync assert len(peer_file_server.hashfield) == 0 assert peer_file_server.updateHashfield() assert len(peer_file_server.hashfield) > 0 connection.close() client.stop()
def testPex(self, file_server, site, site_temp): file_server.sites[site.address] = site client = FileServer("127.0.0.1", 1545) client.sites[site_temp.address] = site_temp site_temp.connection_server = client connection = client.getConnection("127.0.0.1", 1544) # Add new fake peer to site fake_peer = site.addPeer("1.2.3.4", 11337, return_peer=True) # Add fake connection to it fake_peer.connection = Connection(file_server, "1.2.3.4", 11337) fake_peer.connection.last_recv_time = time.time() assert fake_peer in site.getConnectablePeers() # Add file_server as peer to client peer_file_server = site_temp.addPeer("127.0.0.1", 1544) assert "1.2.3.4:11337" not in site_temp.peers assert peer_file_server.pex() assert "1.2.3.4:11337" in site_temp.peers connection.close() client.stop()