예제 #1
0
    def test_resolve(self):
        dns_client_mock = Mock()

        service_name = "test_service.example.com"
        host_name = "example.com"

        answer_srv = dns.RRHeader(
            type=dns.SRV,
            payload=dns.Record_SRV(
                target=host_name,
            )
        )

        dns_client_mock.lookupService.return_value = defer.succeed(
            ([answer_srv], None, None),
        )

        cache = {}

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache
        )

        dns_client_mock.lookupService.assert_called_once_with(service_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
        self.assertEquals(servers[0].host, host_name)
예제 #2
0
    def test_resolve(self):
        dns_client_mock = Mock()

        service_name = "test_service.examle.com"
        host_name = "example.com"
        ip_address = "127.0.0.1"

        answer_srv = dns.RRHeader(type=dns.SRV,
                                  payload=dns.Record_SRV(target=host_name, ))

        answer_a = dns.RRHeader(type=dns.A,
                                payload=dns.Record_A(address=ip_address, ))

        dns_client_mock.lookupService.return_value = ([answer_srv], None, None)
        dns_client_mock.lookupAddress.return_value = ([answer_a], None, None)

        cache = {}

        servers = yield resolve_service(service_name,
                                        dns_client=dns_client_mock,
                                        cache=cache)

        dns_client_mock.lookupService.assert_called_once_with(service_name)
        dns_client_mock.lookupAddress.assert_called_once_with(host_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
        self.assertEquals(servers[0].host, ip_address)
예제 #3
0
    def test_empty_cache(self):
        dns_client_mock = Mock()

        dns_client_mock.lookupService.return_value = defer.fail(error.DNSServerError())

        service_name = "test_service.example.com"

        cache = {}

        with self.assertRaises(error.DNSServerError):
            yield resolve_service(service_name, dns_client=dns_client_mock, cache=cache)
예제 #4
0
    def test_empty_cache(self):
        dns_client_mock = Mock()

        dns_client_mock.lookupService.return_value = defer.fail(error.DNSServerError())

        service_name = "test_service.examle.com"

        cache = {}

        with self.assertRaises(error.DNSServerError):
            yield resolve_service(
                service_name, dns_client=dns_client_mock, cache=cache
            )
예제 #5
0
    def test_name_error(self):
        dns_client_mock = Mock()

        dns_client_mock.lookupService.return_value = defer.fail(error.DNSNameError())

        service_name = "test_service.examle.com"

        cache = {}

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache
        )

        self.assertEquals(len(servers), 0)
        self.assertEquals(len(cache), 0)
예제 #6
0
    def test_name_error(self):
        dns_client_mock = Mock()

        dns_client_mock.lookupService.return_value = defer.fail(error.DNSNameError())

        service_name = "test_service.examle.com"

        cache = {}

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache
        )

        self.assertEquals(len(servers), 0)
        self.assertEquals(len(cache), 0)
예제 #7
0
파일: test_dns.py 프로젝트: skbaum/synapse
    def test_from_cache(self):
        dns_client_mock = Mock()
        dns_client_mock.lookupService.return_value = defer.fail(
            error.DNSServerError())

        service_name = "test_service.examle.com"

        cache = {service_name: [object()]}

        servers = yield resolve_service(service_name,
                                        dns_client=dns_client_mock,
                                        cache=cache)

        dns_client_mock.lookupService.assert_called_once_with(service_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
예제 #8
0
    def test_from_cache(self):
        dns_client_mock = Mock()
        dns_client_mock.lookupService.return_value = defer.fail(error.DNSServerError())

        service_name = "test_service.examle.com"

        cache = {
            service_name: [object()]
        }

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache
        )

        dns_client_mock.lookupService.assert_called_once_with(service_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
예제 #9
0
    def test_from_cache_expired_and_dns_fail(self):
        dns_client_mock = Mock()
        dns_client_mock.lookupService.return_value = defer.fail(error.DNSServerError())

        service_name = "test_service.example.com"

        entry = Mock(spec_set=["expires"])
        entry.expires = 0

        cache = {service_name: [entry]}

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache
        )

        dns_client_mock.lookupService.assert_called_once_with(service_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
예제 #10
0
    def test_from_cache_expired_and_dns_fail(self):
        dns_client_mock = Mock()
        dns_client_mock.lookupService.return_value = defer.fail(
            error.DNSServerError())

        service_name = "test_service.examle.com"

        entry = Mock(spec_set=["expires"])
        entry.expires = 0

        cache = {service_name: [entry]}

        servers = yield resolve_service(service_name,
                                        dns_client=dns_client_mock,
                                        cache=cache)

        dns_client_mock.lookupService.assert_called_once_with(service_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
예제 #11
0
    def test_from_cache(self):
        clock = MockClock()

        dns_client_mock = Mock(spec_set=['lookupService'])
        dns_client_mock.lookupService = Mock(spec_set=[])

        service_name = "test_service.example.com"

        entry = Mock(spec_set=["expires"])
        entry.expires = 999999999

        cache = {service_name: [entry]}

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache, clock=clock
        )

        self.assertFalse(dns_client_mock.lookupService.called)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
예제 #12
0
    def test_from_cache(self):
        clock = MockClock()

        dns_client_mock = Mock(spec_set=['lookupService'])
        dns_client_mock.lookupService = Mock(spec_set=[])

        service_name = "test_service.example.com"

        entry = Mock(spec_set=["expires"])
        entry.expires = 999999999

        cache = {service_name: [entry]}

        servers = yield resolve_service(service_name,
                                        dns_client=dns_client_mock,
                                        cache=cache,
                                        clock=clock)

        self.assertFalse(dns_client_mock.lookupService.called)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
예제 #13
0
    def test_resolve(self):
        dns_client_mock = Mock()

        service_name = "test_service.examle.com"
        host_name = "example.com"
        ip_address = "127.0.0.1"

        answer_srv = dns.RRHeader(
            type=dns.SRV,
            payload=dns.Record_SRV(
                target=host_name,
            )
        )

        answer_a = dns.RRHeader(
            type=dns.A,
            payload=dns.Record_A(
                address=ip_address,
            )
        )

        dns_client_mock.lookupService.return_value = ([answer_srv], None, None)
        dns_client_mock.lookupAddress.return_value = ([answer_a], None, None)

        cache = {}

        servers = yield resolve_service(
            service_name, dns_client=dns_client_mock, cache=cache
        )

        dns_client_mock.lookupService.assert_called_once_with(service_name)
        dns_client_mock.lookupAddress.assert_called_once_with(host_name)

        self.assertEquals(len(servers), 1)
        self.assertEquals(servers, cache[service_name])
        self.assertEquals(servers[0].host, ip_address)