def MakeFileDescriptor(self, package): """Helper method to construct FileDescriptors. Creates FileDescriptor with a MessageDescriptor and an EnumDescriptor. Args: package: Package name to give new file descriptors. Returns: New FileDescriptor instance. """ enum_descriptor = descriptor.EnumDescriptor() enum_descriptor.name = u'MyEnum' message_descriptor = descriptor.MessageDescriptor() message_descriptor.name = u'MyMessage' service_descriptor = descriptor.ServiceDescriptor() service_descriptor.name = u'MyService' file_descriptor = descriptor.FileDescriptor() file_descriptor.package = package file_descriptor.enum_types = [enum_descriptor] file_descriptor.message_types = [message_descriptor] file_descriptor.service_types = [service_descriptor] return file_descriptor
def testDefineService(self): """Test service definition from descriptor.""" method_descriptor = descriptor.MethodDescriptor() method_descriptor.name = 'get_quote' method_descriptor.request_type = 'GetQuoteRequest' method_descriptor.response_type = 'GetQuoteResponse' service_descriptor = descriptor.ServiceDescriptor() service_descriptor.name = 'Stocks' service_descriptor.methods = [method_descriptor] StockService = definition.define_service(service_descriptor, self.module) self.assertTrue(issubclass(StockService, remote.Service)) self.assertTrue(issubclass(StockService.Stub, remote.StubBase)) request = self.module.GetQuoteRequest() service = StockService() self.assertRaises(NotImplementedError, service.get_quote, request) self.assertEquals(self.module.GetQuoteRequest, service.get_quote.remote.request_type) self.assertEquals(self.module.GetQuoteResponse, service.get_quote.remote.response_type)
def testDescribe(self): class Request1(messages.Message): pass class Response1(messages.Message): pass class Request2(messages.Message): pass class Response2(messages.Message): pass class MyService(remote.Service): @remote.method(Request1, Response1) def method1(self, request): pass @remote.method(Request2, Response2) def method2(self, request): pass expected = descriptor.ServiceDescriptor() expected.name = 'MyService' expected.methods = [] expected.methods.append(descriptor.describe_method(MyService.method1)) expected.methods.append(descriptor.describe_method(MyService.method2)) described = descriptor.describe_service(MyService) described.check_initialized() self.assertEquals(expected, described)
def testServices(self): """Test that services are described.""" module = self.LoadModule( 'my.package', 'class Service1(remote.Service): pass\n' 'class Service2(remote.Service): pass\n') service1 = descriptor.ServiceDescriptor() service1.name = 'Service1' service2 = descriptor.ServiceDescriptor() service2.name = 'Service2' expected = descriptor.FileDescriptor() expected.package = 'my.package' expected.service_types = [service1, service2] described = descriptor.describe_file(module) described.check_initialized() self.assertEquals(expected, described)
def testService(self): service = descriptor.ServiceDescriptor() service.name = 'TheService' method1 = descriptor.MethodDescriptor() method1.name = 'method1' method1.request_type = 'protorpc.descriptor.FileDescriptor' method1.response_type = 'protorpc.descriptor.MethodDescriptor' service.methods = [method1] file_descriptor = descriptor.FileDescriptor() file_descriptor.service_types = [service] self.DoPythonTest(file_descriptor) # Test to make sure that implementation methods raise an exception. import blank service_instance = blank.TheService() self.assertRaisesWithRegexpMatch(NotImplementedError, 'Method method1 is not implemented', service_instance.method1, descriptor.FileDescriptor())