Rev536, Fix stats page, Support ranged http requests for better video browser compatibility, setHashfield command, One by one send hashfield to connected peers if changed, Keep count hashfield changetime, PeerHashfield optimalizations, Wait for peers on checkmodification, Give more time to query trackers, Do not count udp trackers as error if udp disabled, Test hashfield push
This commit is contained in:
parent
9c5fda6ed2
commit
8e710beab1
9 changed files with 171 additions and 40 deletions
|
@ -1,9 +1,12 @@
|
|||
import time
|
||||
from cStringIO import StringIO
|
||||
|
||||
import pytest
|
||||
|
||||
from File import FileServer
|
||||
from File import FileRequest
|
||||
from Crypt import CryptHash
|
||||
from cStringIO import StringIO
|
||||
import Spy
|
||||
|
||||
|
||||
@pytest.mark.usefixtures("resetSettings")
|
||||
|
@ -77,27 +80,54 @@ class TestPeer:
|
|||
assert site.content_manager.hashfield.getHashId(new_hash) not in site.content_manager.hashfield
|
||||
|
||||
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)
|
||||
server1 = file_server
|
||||
server1.ip_incoming = {} # Reset flood protection
|
||||
server1.sites[site.address] = site
|
||||
server2 = FileServer("127.0.0.1", 1545)
|
||||
server2.sites[site_temp.address] = site_temp
|
||||
site_temp.connection_server = server2
|
||||
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)
|
||||
server2_peer1 = 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
|
||||
assert len(server2_peer1.hashfield) == 0
|
||||
assert server2_peer1.updateHashfield() # Query hashfield from peer
|
||||
assert len(server2_peer1.hashfield) > 0
|
||||
|
||||
connection.close()
|
||||
client.stop()
|
||||
# Test force push new hashfield
|
||||
site_temp.content_manager.hashfield.appendHash("AABB")
|
||||
server1_peer2 = site.addPeer("127.0.0.1", 1545, return_peer=True)
|
||||
with Spy.Spy(FileRequest, "route") as requests:
|
||||
assert len(server1_peer2.hashfield) == 0
|
||||
server2_peer1.sendMyHashfield()
|
||||
assert len(server1_peer2.hashfield) == 1
|
||||
server2_peer1.sendMyHashfield() # Hashfield not changed, should be ignored
|
||||
|
||||
assert len(requests) == 1
|
||||
|
||||
time.sleep(0.01) # To make hashfield change date different
|
||||
|
||||
site_temp.content_manager.hashfield.appendHash("AACC")
|
||||
server2_peer1.sendMyHashfield() # Push hashfield
|
||||
|
||||
assert len(server1_peer2.hashfield) == 2
|
||||
assert len(requests) == 2
|
||||
|
||||
site_temp.content_manager.hashfield.appendHash("AADD")
|
||||
|
||||
assert server1_peer2.updateHashfield(force=True) # Request hashfield
|
||||
assert len(server1_peer2.hashfield) == 3
|
||||
assert len(requests) == 3
|
||||
|
||||
assert not server2_peer1.sendMyHashfield() # Not changed, should be ignored
|
||||
assert len(requests) == 3
|
||||
|
||||
server2.stop()
|
||||
|
||||
def testFindHash(self, file_server, site, site_temp):
|
||||
file_server.ip_incoming = {} # Reset flood protection
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue