Esempio n. 1
0
 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))
Esempio n. 2
0
	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))
Esempio n. 3
0
    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))
Esempio n. 4
0
	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))
Esempio n. 5
0
    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))
Esempio n. 6
0
	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))
Esempio n. 7
0
	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))
Esempio n. 8
0
 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))