Silent tracker errors, updated list of alive trackers, added tracker unittest
This commit is contained in:
parent
e2435ce1ca
commit
cfe2cfaf09
3 changed files with 36 additions and 5 deletions
|
@ -227,6 +227,7 @@ class Site:
|
||||||
def announce(self, force=False):
|
def announce(self, force=False):
|
||||||
if time.time() < self.last_announce+15 and not force: return # No reannouncing within 15 secs
|
if time.time() < self.last_announce+15 and not force: return # No reannouncing within 15 secs
|
||||||
self.last_announce = time.time()
|
self.last_announce = time.time()
|
||||||
|
error = 0
|
||||||
|
|
||||||
for protocol, ip, port in SiteManager.TRACKERS:
|
for protocol, ip, port in SiteManager.TRACKERS:
|
||||||
if protocol == "udp":
|
if protocol == "udp":
|
||||||
|
@ -240,8 +241,7 @@ class Site:
|
||||||
back = tracker.poll_once()
|
back = tracker.poll_once()
|
||||||
peers = back["response"]["peers"]
|
peers = back["response"]["peers"]
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
self.log.error("Tracker error: %s" % Debug.formatException(err))
|
error += 1
|
||||||
time.sleep(1)
|
|
||||||
continue
|
continue
|
||||||
|
|
||||||
added = 0
|
added = 0
|
||||||
|
@ -252,10 +252,15 @@ class Site:
|
||||||
if added:
|
if added:
|
||||||
self.worker_manager.onPeers()
|
self.worker_manager.onPeers()
|
||||||
self.updateWebsocket(peers_added=added)
|
self.updateWebsocket(peers_added=added)
|
||||||
self.log.debug("Found %s peers, new: %s" % (len(peers), added))
|
self.log.debug("Found %s peers, new: %s" % (len(peers), added))
|
||||||
else:
|
else:
|
||||||
pass # TODO: http tracker support
|
pass # TODO: http tracker support
|
||||||
|
|
||||||
|
if error < len(SiteManager.TRACKERS): # Less errors than total tracker nums
|
||||||
|
self.log.debug("Announced to %s trackers, error: %s" % (len(SiteManager.TRACKERS), error))
|
||||||
|
else:
|
||||||
|
self.log.error("Announced to %s trackers, failed" % len(SiteManager.TRACKERS))
|
||||||
|
|
||||||
|
|
||||||
# Check and try to fix site files integrity
|
# Check and try to fix site files integrity
|
||||||
def checkFiles(self, quick_check=True):
|
def checkFiles(self, quick_check=True):
|
||||||
|
|
|
@ -4,10 +4,9 @@ import gevent
|
||||||
TRACKERS = [
|
TRACKERS = [
|
||||||
("udp", "sugoi.pomf.se", 2710),
|
("udp", "sugoi.pomf.se", 2710),
|
||||||
("udp", "open.demonii.com", 1337),
|
("udp", "open.demonii.com", 1337),
|
||||||
("udp", "bigfoot1942.sektori.org", 6969),
|
|
||||||
("udp", "tracker.coppersurfer.tk", 80),
|
("udp", "tracker.coppersurfer.tk", 80),
|
||||||
("udp", "tracker.leechers-paradise.org", 6969),
|
("udp", "tracker.leechers-paradise.org", 6969),
|
||||||
("udp", "tracker.blazing.de", 80),
|
("udp", "9.rarbg.com", 2710),
|
||||||
]
|
]
|
||||||
|
|
||||||
# Load all sites from data/sites.json
|
# Load all sites from data/sites.json
|
||||||
|
|
|
@ -41,6 +41,33 @@ class TestCase(unittest.TestCase):
|
||||||
print "Taken: %.3fs, " % (time.time()-s),
|
print "Taken: %.3fs, " % (time.time()-s),
|
||||||
|
|
||||||
|
|
||||||
|
def testTrackers(self):
|
||||||
|
from Site import SiteManager
|
||||||
|
from lib.subtl.subtl import UdpTrackerClient
|
||||||
|
import hashlib
|
||||||
|
|
||||||
|
ok = 0
|
||||||
|
for protocol, ip, port in SiteManager.TRACKERS:
|
||||||
|
address = "test"
|
||||||
|
if protocol == "udp":
|
||||||
|
tracker = UdpTrackerClient(ip, port)
|
||||||
|
peers = None
|
||||||
|
try:
|
||||||
|
tracker.connect()
|
||||||
|
tracker.poll_once()
|
||||||
|
tracker.announce(info_hash=hashlib.sha1(address).hexdigest(), num_want=5)
|
||||||
|
back = tracker.poll_once()
|
||||||
|
peers = back["response"]["peers"]
|
||||||
|
except Exception, err:
|
||||||
|
peers = None
|
||||||
|
print "Tracker error: %s://%s:%s %s" % (protocol, ip, port, err)
|
||||||
|
if peers != None:
|
||||||
|
ok += 1
|
||||||
|
|
||||||
|
self.assertGreater(ok, 1)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
unittest.main(verbosity=2)
|
unittest.main(verbosity=2)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue