def test_finish(self): self.mox.StubOutWithMock(dns_resolver, 'query') dns_resolver.query(IgnoreArg(), 'PTR').AndReturn(['example.com']) self.mox.ReplayAll() ptr = PtrLookup('127.0.0.1') ptr.start() assert_equal('example.com', ptr.finish(runtime=1.0))
def test_run_dnsexception(self): self.mox.StubOutWithMock(dns_resolver, 'query') dns_resolver.query(IgnoreArg(), 'PTR').AndRaise(DNSException) self.mox.ReplayAll() ptr = PtrLookup('127.0.0.1') assert_is_instance(ptr, gevent.Greenlet) assert_is_none(ptr._run())
def test_run_greenletexit(self): self.mox.StubOutWithMock(socket, 'gethostbyaddr') socket.gethostbyaddr('127.0.0.1').AndRaise(gevent.GreenletExit) self.mox.ReplayAll() ptr = PtrLookup('abcd') self.assertIsInstance(ptr, gevent.Greenlet) self.assertIsNone(ptr._run())
def test_run_nxdomain(self): self.mox.StubOutWithMock(dns_resolver, 'query') dns_resolver.query(IgnoreArg(), 'PTR').AndRaise(NXDOMAIN) self.mox.ReplayAll() ptr = PtrLookup('127.0.0.1') self.assertIsInstance(ptr, gevent.Greenlet) self.assertIsNone(ptr._run())
def test_finish(self): self.mox.StubOutWithMock(socket, 'gethostbyaddr') socket.gethostbyaddr('127.0.0.1').AndReturn( ('example.com', None, None)) self.mox.ReplayAll() ptr = PtrLookup('127.0.0.1') ptr.start() self.assertEqual('example.com', ptr.finish(runtime=1.0))
def test_finish_timeout(self): def long_sleep(*args): gevent.sleep(1.0) self.mox.StubOutWithMock(socket, 'gethostbyaddr') socket.gethostbyaddr('127.0.0.1').WithSideEffects(long_sleep) self.mox.ReplayAll() ptr = PtrLookup('127.0.0.1') ptr.start() self.assertIsNone(ptr.finish(runtime=0.001))
def test_finish_timeout(self): self.mox.StubOutWithMock(dns_resolver, 'query') def long_sleep(*args): gevent.sleep(1.0) dns_resolver.query(IgnoreArg(), 'PTR').WithSideEffects(long_sleep) self.mox.ReplayAll() ptr = PtrLookup('127.0.0.1') ptr.start() assert_is_none(ptr.finish(runtime=0.0))
def __call__(self, environ, start_response): ptr_lookup = PtrLookup(environ.get('REMOTE_ADDR', '0.0.0.0')) ptr_lookup.start() try: self._validate_request(environ) env = self._get_envelope(environ) self._add_envelope_extras(environ, env, ptr_lookup) self._enqueue_envelope(env) except WsgiResponse as res: start_response(res.status, res.headers) return res.data except Exception as exc: logging.log_exception(__name__) msg = '{0!s}\n'.format(exc) content_length = str(len(msg)) headers = [('Content-Length', content_length), ('Content-Type', 'text/plain')] start_response('500 Internal Server Error', headers) return [msg] finally: ptr_lookup.kill(block=False)
def BANNER_(self, reply): self._ptr_lookup = PtrLookup(self.address[0]) self._ptr_lookup.start() self._call_validator('banner', reply, self.address)
def test_run_dnssyntaxerror(self): self.mox.StubOutWithMock(dns_resolver, 'query') self.mox.ReplayAll() ptr = PtrLookup('abcd') assert_is_instance(ptr, gevent.Greenlet) assert_is_none(ptr._run())
def test_run_bad_ip(self): self.mox.ReplayAll() ptr = PtrLookup('abcd') self.assertIsInstance(ptr, gevent.Greenlet) self.assertIsNone(ptr._run())