def test_change(self): peerTracker = self.peers info_hash = '0' * 20 ip = tracker.dottedQuadToInt('192.168.0.1') p = peers.Peer(ip, 1025, 3) self.assertTrue(peerTracker.updatePeer(info_hash, p)) p = peers.Peer(ip, 1025, 2) self.assertFalse(peerTracker.updatePeer(info_hash, p)) p = peers.Peer(ip, 1025, 1) self.assertFalse(peerTracker.updatePeer(info_hash, p)) p = peers.Peer(ip, 1025, 0) self.assertTrue(peerTracker.updatePeer(info_hash, p))
def test_change(self): peerTracker = self.peers info_hash = '0'*20 ip = tracker.dottedQuadToInt('192.168.0.1') p = peers.Peer(ip,1025,3) self.assertTrue(peerTracker.updatePeer(info_hash,p)) p = peers.Peer(ip,1025,2) self.assertFalse(peerTracker.updatePeer(info_hash,p)) p = peers.Peer(ip,1025,1) self.assertFalse(peerTracker.updatePeer(info_hash,p)) p = peers.Peer(ip,1025,0) self.assertTrue(peerTracker.updatePeer(info_hash,p))
def test_addingPeers(self): peerList = [] for peerIp in range(1, 17): ip = tracker.dottedQuadToInt('192.168.0.' + str(peerIp)) port = peerIp % 4 + 1025 left = peerIp % 4 done = 4 - left peerList.append(peers.Peer(ip, port, left)) info_hashes = [chr(i) * 20 for i in range(0, 4)] peerTracker = self.peers for info_hash in info_hashes: self.assertEqual(peerTracker.getNumberOfLeeches(info_hash), 0) self.assertEqual(peerTracker.getNumberOfSeeds(info_hash), 0) self.assertEqual(len(list(peerTracker.getPeers(info_hash))), 0) for i, peer in enumerate(peerList): self.assertTrue(peerTracker.updatePeer(info_hash, peer)) l = peerTracker.getPeers(info_hash) l = list(l) self.assertIn(peer, l) self.assertEqual(i + 1, len(l)) self.assertEqual( 1, sum(1 for p in peerTracker.getPeers(info_hash) if p == peer)) for info_hash in info_hashes: self.assertEqual( peerTracker.getNumberOfLeeches(info_hash) + peerTracker.getNumberOfSeeds(info_hash), len(peerList)) numSeeds, numLeeches = peerTracker.getNumberOfPeers(info_hash) self.assertEqual(numSeeds + numLeeches, len(peerList)) l = list(peerTracker.getPeers(info_hash)) self.assertEqual(len(l), len(peerList)) for peer in peerTracker.getPeers(info_hash): self.assertTrue(peer in peerList) for peer in peerList: self.assertTrue(peerTracker.removePeer(info_hash, peer)) self.assertTrue(not peer in peerTracker.getPeers(info_hash))
def test_removePeerNotExistInInfoHash(self): peerTracker = self.peers ip = tracker.dottedQuadToInt('192.168.0.1') p0 = peers.Peer(ip,1025,3) info_hash = '0'*20 self.assertTrue(peerTracker.updatePeer(info_hash,p0)) p1 = peers.Peer(ip,1026,3) self.assertFalse(peerTracker.removePeer(info_hash,p1)) self.assertTrue(peerTracker.removePeer(info_hash,p0)) self.assertFalse(peerTracker.removePeer(info_hash,p0))
def test_removePeerNotExistInInfoHash(self): peerTracker = self.peers ip = tracker.dottedQuadToInt('192.168.0.1') p0 = peers.Peer(ip, 1025, 3) info_hash = '0' * 20 self.assertTrue(peerTracker.updatePeer(info_hash, p0)) p1 = peers.Peer(ip, 1026, 3) self.assertFalse(peerTracker.removePeer(info_hash, p1)) self.assertTrue(peerTracker.removePeer(info_hash, p0)) self.assertFalse(peerTracker.removePeer(info_hash, p0))
def test_addingPeers(self): peerList = [] for peerIp in range(1,17): ip = tracker.dottedQuadToInt('192.168.0.' + str(peerIp)) port = peerIp%4 + 1025 left = peerIp % 4 done = 4 - left peerList.append(peers.Peer(ip,port,left)) info_hashes = [chr(i)*20 for i in range(0,4)] peerTracker = self.peers for info_hash in info_hashes: self.assertEqual(peerTracker.getNumberOfLeeches(info_hash),0) self.assertEqual(peerTracker.getNumberOfSeeds(info_hash),0) self.assertEqual(len(list(peerTracker.getPeers(info_hash))),0) for i,peer in enumerate(peerList): self.assertTrue(peerTracker.updatePeer(info_hash,peer)) l = peerTracker.getPeers(info_hash) l = list(l) self.assertIn(peer,l) self.assertEqual(i+1,len(l)) self.assertEqual(1,sum(1 for p in peerTracker.getPeers(info_hash) if p==peer )) for info_hash in info_hashes: self.assertEqual(peerTracker.getNumberOfLeeches(info_hash)+peerTracker.getNumberOfSeeds(info_hash),len(peerList)) numSeeds,numLeeches = peerTracker.getNumberOfPeers(info_hash) self.assertEqual(numSeeds+numLeeches, len(peerList)) l = list(peerTracker.getPeers(info_hash)) self.assertEqual(len(l),len(peerList)) for peer in peerTracker.getPeers(info_hash): self.assertTrue(peer in peerList) for peer in peerList: self.assertTrue(peerTracker.removePeer(info_hash,peer)) self.assertTrue(not peer in peerTracker.getPeers(info_hash))
def test_removePeerNoSuchInfoHash(self): peerTracker = self.peers ip = tracker.dottedQuadToInt('192.168.0.1') p = peers.Peer(ip,1025,3) info_hash = '0'*20 self.assertFalse(peerTracker.removePeer(info_hash,p))
def test_removePeerNoSuchInfoHash(self): peerTracker = self.peers ip = tracker.dottedQuadToInt('192.168.0.1') p = peers.Peer(ip, 1025, 3) info_hash = '0' * 20 self.assertFalse(peerTracker.removePeer(info_hash, p))