Пример #1
0
    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
Пример #2
0
    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)
Пример #3
0
    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)
Пример #4
0
    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)
Пример #5
0
    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())