class TestDHTSession(TriblerCoreTest): """ Test the DHT session that we use to fetch the swarm status from the DHT. """ def setUp(self): super(TestDHTSession, self).setUp() config = TriblerConfig() config.set_state_dir(self.getStateDir()) self.session = Session(config) self.session.lm.ltmgr = MockObject() self.session.lm.ltmgr.dht_health_manager = MockObject() dht_health_dict = { "infohash": hexlify('a' * 20), "seeders": 1, "leechers": 2 } self.session.lm.ltmgr.dht_health_manager.get_health = lambda *_, **__: succeed({"DHT": [dht_health_dict]}) self.dht_session = FakeDHTSession(self.session, 'a' * 20, 10) @trial_timeout(10) def test_cleanup(self): """ Test the cleanup of a DHT session """ return self.dht_session.cleanup() @trial_timeout(10) def test_connect_to_tracker(self): """ Test the metainfo lookup of the DHT session """ def verify_metainfo(metainfo): self.assertTrue('DHT' in metainfo) self.assertEqual(metainfo['DHT'][0]['leechers'], 2) self.assertEqual(metainfo['DHT'][0]['seeders'], 1) return self.dht_session.connect_to_tracker().addCallback(verify_metainfo) def test_methods(self): """ Test various methods in the DHT session class """ self.dht_session.add_infohash('b' * 20) self.assertEqual(self.dht_session.infohash, 'b' * 20)
class TestDHTSession(TriblerCoreTest): """ Test the DHT session that we use to fetch the swarm status from the DHT. """ def setUp(self, annotate=True): super(TestDHTSession, self).setUp(annotate=annotate) config = SessionStartupConfig() config.set_state_dir(self.getStateDir()) self.session = Session(config, ignore_singleton=True) self.dht_session = FakeDHTSession(self.session, 'a' * 20, 10) @deferred(timeout=10) def test_cleanup(self): """ Test the cleanup of a DHT session """ return self.dht_session.cleanup() @deferred(timeout=10) def test_connect_to_tracker(self): """ Test the metainfo lookup of the DHT session """ def get_metainfo(infohash, callback, **_): callback({"seeders": 1, "leechers": 2}) def verify_metainfo(metainfo): self.assertTrue('DHT' in metainfo) self.assertEqual(metainfo['DHT'][0]['leechers'], 2) self.assertEqual(metainfo['DHT'][0]['seeders'], 1) self.session.lm.ltmgr = MockObject() self.session.lm.ltmgr.get_metainfo = get_metainfo return self.dht_session.connect_to_tracker().addCallback( verify_metainfo) @deferred(timeout=10) def test_metainfo_timeout(self): """ Test the metainfo timeout of the DHT session """ test_deferred = Deferred() def get_metainfo_timeout(*args, **kwargs): timeout_cb = kwargs.get('timeout_callback') timeout_cb('a' * 20) def on_timeout(failure): test_deferred.callback(None) self.session.lm.ltmgr = MockObject() self.session.lm.ltmgr.get_metainfo = get_metainfo_timeout self.dht_session.connect_to_tracker().addErrback(on_timeout) return test_deferred def test_methods(self): """ Test various methods in the DHT session class """ self.assertTrue(self.dht_session.can_add_request()) self.dht_session.add_infohash('b' * 20) self.assertEqual(self.dht_session.infohash, 'b' * 20) self.assertEqual(self.dht_session.max_retries, DHT_TRACKER_MAX_RETRIES) self.assertEqual(self.dht_session.retry_interval, DHT_TRACKER_RECHECK_INTERVAL) self.assertGreater(self.dht_session.last_contact, 0)
class TestDHTSession(TriblerCoreTest): """ Test the DHT session that we use to fetch the swarm status from the DHT. """ def setUp(self): super(TestDHTSession, self).setUp() config = TriblerConfig() config.set_state_dir(self.getStateDir()) self.session = Session(config) self.dht_session = FakeDHTSession(self.session, 'a' * 20, 10) @trial_timeout(10) def test_cleanup(self): """ Test the cleanup of a DHT session """ return self.dht_session.cleanup() @trial_timeout(10) def test_connect_to_tracker(self): """ Test the metainfo lookup of the DHT session """ def get_metainfo(infohash, callback, **_): callback({"seeders": 1, "leechers": 2}) def verify_metainfo(metainfo): self.assertTrue('DHT' in metainfo) self.assertEqual(metainfo['DHT'][0]['leechers'], 2) self.assertEqual(metainfo['DHT'][0]['seeders'], 1) self.session.lm.ltmgr = MockObject() self.session.lm.ltmgr.get_metainfo = get_metainfo return self.dht_session.connect_to_tracker().addCallback(verify_metainfo) @trial_timeout(10) def test_metainfo_timeout(self): """ Test the metainfo timeout of the DHT session """ test_deferred = Deferred() def get_metainfo_timeout(*args, **kwargs): timeout_cb = kwargs.get('timeout_callback') timeout_cb('a' * 20) def on_timeout(failure): test_deferred.callback(None) self.session.lm.ltmgr = MockObject() self.session.lm.ltmgr.get_metainfo = get_metainfo_timeout self.dht_session.connect_to_tracker().addErrback(on_timeout) return test_deferred def test_methods(self): """ Test various methods in the DHT session class """ self.assertTrue(self.dht_session.can_add_request()) self.dht_session.add_infohash('b' * 20) self.assertEqual(self.dht_session.infohash, 'b' * 20) self.assertEqual(self.dht_session.max_retries, DHT_TRACKER_MAX_RETRIES) self.assertEqual(self.dht_session.retry_interval, DHT_TRACKER_RECHECK_INTERVAL) self.assertGreater(self.dht_session.last_contact, 0)