Example #1
0
 def test_udpsession_response_too_short(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782),
                                 "/announce", 0, self.socket_mgr)
     self.assertFalse(session.is_failed)
     packet = struct.pack("!i", 123)
     session.handle_scrape_response(packet)
     self.assertTrue(session.is_failed)
 def test_udpsession_on_error(self):
     test_deferred = Deferred()
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     session.result_deferred = Deferred().addErrback(
         lambda failure: test_deferred.callback(failure.getErrorMessage()))
     session.on_error(Failure(RuntimeError("test")))
     return test_deferred
Example #3
0
 def test_udpsession_cancel_operation(self):
     session = UdpTrackerSession("127.0.0.1", ("localhost", 8475),
                                 "/announce", 5)
     d = Deferred(session._on_cancel)
     d.addErrback(lambda _: None)
     session.result_deferred = d
     return session.cleanup()
    def test_udp_scraper_stop_no_connection(self):
        session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5)
        scraper = UDPScraper(session, "127.0.0.1", 4782, 5)
        # Stop it manually, so the transport becomes inactive
        stop_deferred = scraper.stop()

        return DeferredList([stop_deferred, session.cleanup()])
Example #5
0
 def test_udpsession_response_wrong_transaction_id(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782),
                                 "/announce", 0, self.socket_mgr)
     self.assertFalse(session.is_failed)
     packet = struct.pack("!ii", 0, 1337)
     session.handle_scrape_response(packet)
     self.assertTrue(session.is_failed)
Example #6
0
 def test_udpsession_no_port(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782),
                                 "/announce", 0, self.socket_mgr)
     self.assertFalse(session.is_failed)
     self.socket_mgr.transport = None
     session.connect()
     self.assertTrue(session.is_failed)
Example #7
0
 def test_udpsession_udp_tracker_timeout(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782),
                                 "/announce", 5)
     session.scraper = ClockedUDPCrawler(session, "127.0.0.1", 4782, 5)
     # Advance 16 seconds so the timeout triggered
     session.scraper._reactor.advance(session.scraper.timeout + 1)
     self.assertFalse(session.scraper.timeout_call.active(),
                      "timeout was active while should've canceled")
 def test_udpsession_handle_packet(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     session.action = 123
     session.transaction_id = 124
     self.assertFalse(session.is_failed)
     packet = struct.pack("!iiq", 123, 124, 126)
     session.handle_connection_response(packet)
     self.assertFalse(session.is_failed)
Example #9
0
 def test_udpsession_udp_tracker_connection_refused(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782),
                                 "/announce", 5)
     session.scraper = UDPScraper(session, "127.0.0.1", 4782, 5)
     session.scraper.connectionRefused()
     self.assertTrue(session.is_failed,
                     "Session did not fail while it should")
     return session.scraper.stop()
    def test_failed_unicode_udp(self):
        test_deferred = Deferred()

        session = UdpTrackerSession("localhost", ("localhost", 8475), "/announce", 0, self.socket_mgr)

        def on_error(failure):
            self.assertEqual(failure.type, ValueError)
            test_deferred.callback(None)

        session.result_deferred = Deferred().addErrback(on_error)
        session.failed(msg='\xd0')

        return test_deferred
    def test_udpsession_correct_handle(self):
        session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5, self.socket_mgr)
        session.on_ip_address_resolved("127.0.0.1", start_scraper=False)
        session.result_deferred = Deferred()
        self.assertFalse(session.is_failed)
        session._infohash_list = ["test"]
        packet = struct.pack("!iiiii", session.action, session.transaction_id, 0, 1, 2)
        session.handle_scrape_response(packet)

        return session.result_deferred.addCallback(lambda *_: session.cleanup())
    def test_big_correct_run(self):
        session = UdpTrackerSession("localhost", ("192.168.1.1", 1234), "/announce", 0, self.socket_mgr)
        session.on_ip_address_resolved("192.168.1.1")
        session.transport = self.mock_transport
        session.result_deferred = Deferred()
        self.assertFalse(session.is_failed)
        packet = struct.pack("!iiq", session.action, session.transaction_id, 126)
        session.handle_response(packet)
        session._infohash_list = ["test"]
        packet = struct.pack("!iiiii", session.action, session.transaction_id, 0, 1, 2)
        session.handle_response(packet)
        self.assertTrue(session.is_finished)

        return session.result_deferred
    def test_udpsession_handle_response_wrong_len(self):
        session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
        session.on_ip_address_resolved("127.0.0.1")
        self.assertFalse(session.is_failed)
        session.handle_connection_response("too short")
        self.assertTrue(session.is_failed)

        # After receiving a correct packet, it session should still be in a failed state
        session.action = 123
        session.transaction_id = 124
        packet = struct.pack("!iiq", 123, 124, 126)
        session.handle_response(packet)
        self.assertTrue(session.expect_connection_response)
        self.assertTrue(session.is_failed)
 def test_udpsession_mismatch(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5)
     session.scraper = FakeScraper()
     session._action = 123
     session._transaction_id = 124
     session._infohash_list = [1337]
     self.assertFalse(session.is_failed)
     packet = struct.pack("!ii", 123, 124)
     session.handle_response(packet)
     self.assertTrue(session.is_failed)
    def test_udpsession_timeout(self):
        test_deferred = Deferred()

        def on_fake_connect_to_tracker():
            session.start_timeout()
            session.result_deferred = Deferred()
            return session.result_deferred

        def on_fake_timeout():
            session.timeout_called = True
            timeout_func()

        def on_error(failure):
            failure.trap(ValueError)
            self.assertTrue(session.timeout_called)
            test_deferred.callback(None)

        session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 1, self.socket_mgr)
        timeout_func = session.on_timeout
        session.timeout_called = False

        session.on_timeout = on_fake_timeout
        session.connect_to_tracker = on_fake_connect_to_tracker

        session.connect_to_tracker().addErrback(on_error)
        return test_deferred
    def test_udpsession_response_list_len_mismatch(self):
        session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5)
        session.scraper = FakeScraper()
        session.result_deferred = Deferred()

        def on_error(_):
            pass

        session.result_deferred.addErrback(on_error)
        session._action = 123
        session._transaction_id = 123
        self.assertFalse(session.is_failed)
        session._infohash_list = ["test", "test2"]
        packet = struct.pack("!iiiii", 123, 123, 0, 1, 2)
        session.handle_response(packet)
        self.assertTrue(session.is_failed)
 def test_udpsession_handle_packet(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5)
     session.scraper = FakeScraper()
     session._action = 123
     session._transaction_id = 124
     self.assertFalse(session.is_failed)
     packet = struct.pack("!iiq", 123, 124, 126)
     session.handle_connection_response(packet)
     self.assertFalse(session.is_failed)
 def test_udpsession_handle_wrong_action_transaction(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     session.on_ip_address_resolved("127.0.0.1", start_scraper=None)
     self.assertFalse(session.is_failed)
     packet = struct.pack("!qq4s", 123, 123, "test")
     session.handle_connection_response(packet)
     self.assertTrue(session.is_failed)
Example #19
0
 def test_udpsession_handle_response_wrong_len(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782),
                                 "/announce", 5)
     session.on_ip_address_resolved("127.0.0.1", start_scraper=False)
     self.assertFalse(session.is_failed)
     session.handle_connection_response("too short")
     self.assertTrue(session.is_failed)
 def test_udpsession_mismatch(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     session.action = 123
     session.transaction_id = 124
     session._infohash_list = [1337]
     self.assertFalse(session.is_failed)
     packet = struct.pack("!ii", 123, 124)
     session.handle_scrape_response(packet)
     self.assertTrue(session.is_failed)
    def test_udpsession_response_list_len_mismatch(self):
        session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
        session.result_deferred = Deferred()

        def on_error(_):
            pass

        session.result_deferred.addErrback(on_error)
        session.action = 123
        session.transaction_id = 123
        self.assertFalse(session.is_failed)
        session._infohash_list = ["test", "test2"]
        packet = struct.pack("!iiiii", 123, 123, 0, 1, 2)
        session.handle_scrape_response(packet)
        self.assertTrue(session.is_failed)
    def test_big_correct_run(self):
        session = UdpTrackerSession("localhost", ("192.168.1.1", 1234), "/announce", 1)
        session.on_ip_address_resolved("192.168.1.1", start_scraper=False)
        session.scraper.transport = self.mock_transport
        session.result_deferred = Deferred()
        self.assertFalse(session.is_failed)
        packet = struct.pack("!iiq", session._action, session._transaction_id, 126)
        session.scraper.datagramReceived(packet, (None, None))
        session._infohash_list = ["test"]
        packet = struct.pack("!iiiii", session._action, session._transaction_id, 0, 1, 2)
        session.scraper.datagramReceived(packet, (None, None))
        self.assertTrue(session.is_finished)

        return session.result_deferred
 def test_udpsession_response_too_short(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     self.assertFalse(session.is_failed)
     packet = struct.pack("!i", 123)
     session.handle_scrape_response(packet)
     self.assertTrue(session.is_failed)
Example #24
0
    def test_big_correct_run(self):
        session = UdpTrackerSession("localhost", ("192.168.1.1", 1234),
                                    "/announce", 0, self.socket_mgr)
        session.on_ip_address_resolved("192.168.1.1")
        session.transport = self.mock_transport
        session.result_deferred = Deferred()
        self.assertFalse(session.is_failed)
        packet = struct.pack("!iiq", session.action, session.transaction_id,
                             126)
        session.handle_response(packet)
        session._infohash_list = ["test"]
        packet = struct.pack("!iiiii", session.action, session.transaction_id,
                             0, 1, 2)
        session.handle_response(packet)
        self.assertTrue(session.is_finished)

        return session.result_deferred
 def test_udpsession_cancel_operation(self):
     session = UdpTrackerSession("127.0.0.1", ("localhost", 8475), "/announce", 0, self.socket_mgr)
     d = Deferred(session._on_cancel)
     d.addErrback(lambda _: None)
     session.result_deferred = d
 def test_udpsession_no_port(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     self.assertFalse(session.is_failed)
     self.socket_mgr.transport = None
     session.connect()
     self.assertTrue(session.is_failed)
 def test_udpsession_response_wrong_transaction_id(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 0, self.socket_mgr)
     self.assertFalse(session.is_failed)
     packet = struct.pack("!ii", 0, 1337)
     session.handle_scrape_response(packet)
     self.assertTrue(session.is_failed)
 def test_udpsession_udp_tracker_timeout(self):
     session = UdpTrackerSession("localhost", ("localhost", 4782), "/announce", 5)
     session.scraper = ClockedUDPCrawler(session, "127.0.0.1", 4782, 5)
     # Advance 16 seconds so the timeout triggered
     session.scraper._reactor.advance(session.scraper.timeout + 1)
     self.assertIsNone(session.scraper)