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):
|
||||
if time.time() < self.last_announce+15 and not force: return # No reannouncing within 15 secs
|
||||
self.last_announce = time.time()
|
||||
error = 0
|
||||
|
||||
for protocol, ip, port in SiteManager.TRACKERS:
|
||||
if protocol == "udp":
|
||||
|
@ -240,8 +241,7 @@ class Site:
|
|||
back = tracker.poll_once()
|
||||
peers = back["response"]["peers"]
|
||||
except Exception, err:
|
||||
self.log.error("Tracker error: %s" % Debug.formatException(err))
|
||||
time.sleep(1)
|
||||
error += 1
|
||||
continue
|
||||
|
||||
added = 0
|
||||
|
@ -256,6 +256,11 @@ class Site:
|
|||
else:
|
||||
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
|
||||
def checkFiles(self, quick_check=True):
|
||||
|
|
|
@ -4,10 +4,9 @@ import gevent
|
|||
TRACKERS = [
|
||||
("udp", "sugoi.pomf.se", 2710),
|
||||
("udp", "open.demonii.com", 1337),
|
||||
("udp", "bigfoot1942.sektori.org", 6969),
|
||||
("udp", "tracker.coppersurfer.tk", 80),
|
||||
("udp", "tracker.leechers-paradise.org", 6969),
|
||||
("udp", "tracker.blazing.de", 80),
|
||||
("udp", "9.rarbg.com", 2710),
|
||||
]
|
||||
|
||||
# Load all sites from data/sites.json
|
||||
|
|
|
@ -41,6 +41,33 @@ class TestCase(unittest.TestCase):
|
|||
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__":
|
||||
unittest.main(verbosity=2)
|
||||
|
||||
|
|
Loading…
Reference in a new issue