Merge pull request #468 from nathanielmanistaatgoogle/server_server_credentials

Server server credentials
pull/490/head
Tim Emiola 10 years ago
commit fed9186f54
  1. 31
      src/python/src/_adapter/_c_test.py
  2. 4
      src/python/src/_adapter/_low_test.py
  3. 24
      src/python/src/_adapter/_server.c
  4. 2
      src/python/src/_adapter/fore.py

@ -92,7 +92,7 @@ class _CTest(unittest.TestCase):
_c.init()
completion_queue = _c.CompletionQueue()
server = _c.Server(completion_queue)
server = _c.Server(completion_queue, None)
server.add_http2_addr('[::]:0')
server.start()
server.stop()
@ -102,7 +102,7 @@ class _CTest(unittest.TestCase):
service_tag = object()
completion_queue = _c.CompletionQueue()
server = _c.Server(completion_queue)
server = _c.Server(completion_queue, None)
server.add_http2_addr('[::]:0')
server.start()
server.service(service_tag)
@ -119,7 +119,7 @@ class _CTest(unittest.TestCase):
del completion_queue
completion_queue = _c.CompletionQueue()
server = _c.Server(completion_queue)
server = _c.Server(completion_queue, None)
server.add_http2_addr('[::]:0')
server.start()
thread = threading.Thread(target=completion_queue.get, args=(_FUTURE,))
@ -162,6 +162,31 @@ class _CTest(unittest.TestCase):
_c.shut_down()
@unittest.skip('TODO(nathaniel): find and use real-enough test credentials')
def test_secure_server(self):
_c.init()
server_credentials = _c.ServerCredentials(
'root certificate', (('private key', 'certificate chain'),))
completion_queue = _c.CompletionQueue()
server = _c.Server(completion_queue, server_credentials)
server.add_http2_addr('[::]:0')
server.start()
thread = threading.Thread(target=completion_queue.get, args=(_FUTURE,))
thread.start()
time.sleep(1)
server.stop()
completion_queue.stop()
for _ in range(_IDEMPOTENCE_DEMONSTRATION):
event = completion_queue.get(time.time() + _TIMEOUT)
self.assertIs(event.kind, _datatypes.Event.Kind.STOP)
thread.join()
del server
del completion_queue
_c.shut_down()
if __name__ == '__main__':
unittest.main()

@ -82,7 +82,7 @@ class EchoTest(unittest.TestCase):
self.host = 'localhost'
self.server_completion_queue = _low.CompletionQueue()
self.server = _low.Server(self.server_completion_queue)
self.server = _low.Server(self.server_completion_queue, None)
port = self.server.add_http2_addr('[::]:0')
self.server.start()
@ -260,7 +260,7 @@ class CancellationTest(unittest.TestCase):
self.host = 'localhost'
self.server_completion_queue = _low.CompletionQueue()
self.server = _low.Server(self.server_completion_queue)
self.server = _low.Server(self.server_completion_queue, None)
port = self.server.add_http2_addr('[::]:0')
self.server.start()

@ -38,18 +38,30 @@
#include "_adapter/_completion_queue.h"
#include "_adapter/_error.h"
#include "_adapter/_server_credentials.h"
static int pygrpc_server_init(Server *self, PyObject *args, PyObject *kwds) {
const PyObject *completion_queue;
if (!(PyArg_ParseTuple(args, "O!", &pygrpc_CompletionQueueType,
&completion_queue))) {
PyObject *server_credentials;
if (!(PyArg_ParseTuple(args, "O!O", &pygrpc_CompletionQueueType,
&completion_queue, &server_credentials))) {
self->c_server = NULL;
return -1;
}
if (server_credentials == Py_None) {
self->c_server = grpc_server_create(
((CompletionQueue *)completion_queue)->c_completion_queue, NULL);
return 0;
} else if (PyObject_TypeCheck(server_credentials,
&pygrpc_ServerCredentialsType)) {
self->c_server = grpc_secure_server_create(
((ServerCredentials *)server_credentials)->c_server_credentials,
((CompletionQueue *)completion_queue)->c_completion_queue, NULL);
return 0;
} else {
self->c_server = NULL;
return -1;
}
self->c_server = grpc_server_create(
((CompletionQueue *)completion_queue)->c_completion_queue, NULL);
return 0;
}
static void pygrpc_server_dealloc(Server *self) {

@ -265,7 +265,7 @@ class ForeLink(ticket_interfaces.ForeLink):
"""
with self._condition:
self._completion_queue = _low.CompletionQueue()
self._server = _low.Server(self._completion_queue)
self._server = _low.Server(self._completion_queue, None)
port = self._server.add_http2_addr(
'[::]:%d' % (0 if self._port is None else self._port))
self._server.start()

Loading…
Cancel
Save