Пример #1
0
    def sendAndReceive(self, factory):
        self.sent = Message()
        self.sent.ParseFromString(factory.setId(555).setSessionId("555").build())

        if len(self.reply_with) > 0:
            return self.reply_with.pop(0)
        else:
            return None
Пример #2
0
    def testItShouldBuildNullFromArgument(self):
        argument = Message.Argument(type=Message.Argument.NULL)

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedNull)
Пример #3
0
    def buildErrorReply(self, error_message):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.ERROR
        message.reflection_response.errormessage = error_message

        return message
Пример #4
0
    def buildObjectReply(self, ref):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.SUCCESS
        message.reflection_response.result.type = Message.Argument.OBJECT
        message.reflection_response.result.object.reference = ref

        return message
Пример #5
0
    def testItShouldBuildStringFromArgument(self):
        argument = Message.Argument(type=Message.Argument.STRING)
        argument.string = "Hello, World!"

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedString)
        assert type.native() == "Hello, World!"
Пример #6
0
    def testItShouldBuildObjectFromArgument(self):
        argument = Message.Argument(type=Message.Argument.OBJECT)
        argument.object.reference = 987654321

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedObject)
        assert type._ref == 987654321
Пример #7
0
    def buildPrimitiveReply(self, type, int):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.SUCCESS
        message.reflection_response.result.type = Message.Argument.PRIMITIVE
        message.reflection_response.result.primitive.type = type
        message.reflection_response.result.primitive.int = int

        return message
Пример #8
0
    def testItShouldBuildPrimitiveFromArgument(self):
        argument = Message.Argument(type=Message.Argument.PRIMITIVE)
        argument.primitive.type = Message.Primitive.BOOL
        argument.primitive.bool = True

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedPrimitive)
        assert type.type() == "boolean"
        assert type.native() == True
Пример #9
0
class MockReflector(reflection.Reflector):

    def __init__(self, session):
        reflection.Reflector.__init__(self, session)

        self.sent = None
        self.reply_with = []

    def buildErrorReply(self, error_message):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.ERROR
        message.reflection_response.errormessage = error_message

        return message

    def buildObjectReply(self, ref):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.SUCCESS
        message.reflection_response.result.type = Message.Argument.OBJECT
        message.reflection_response.result.object.reference = ref

        return message

    def buildPrimitiveReply(self, type, int):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.SUCCESS
        message.reflection_response.result.type = Message.Argument.PRIMITIVE
        message.reflection_response.result.primitive.type = type
        message.reflection_response.result.primitive.int = int

        return message

    def buildSuccessReply(self):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.SUCCESS

        return message

    def replyWith(self, message):
        self.reply_with.append(message)

    def sendAndReceive(self, factory):
        self.sent = Message()
        self.sent.ParseFromString(factory.setId(555).setSessionId("555").build())

        if len(self.reply_with) > 0:
            return self.reply_with.pop(0)
        else:
            return None
Пример #10
0
    def testItShouldBuildObjectArrayFromArgument(self):
        argument = Message.Argument(type=Message.Argument.ARRAY)
        argument.array.type = Message.Array.OBJECT

        for i in range(0, 3):
            element = argument.array.element.add(type=Message.Argument.OBJECT)
            element.object.reference = i

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedArray)
        assert len(type.native()) == 3

        for i in range(0, 3):
            assert isinstance(type.native()[i], reflection.ReflectedObject)
            assert type.native()[i]._ref == i
Пример #11
0
    def testItShouldBuildStringArrayFromArgument(self):
        argument = Message.Argument(type=Message.Argument.ARRAY)
        argument.array.type = Message.Array.STRING

        for i in range(0, 3):
            element = argument.array.element.add(type=Message.Argument.STRING)
            element.string = "Hello, World! (" + str(i) + ")"

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedArray)
        assert len(type.native()) == 3

        for i in range(0, 3):
            assert isinstance(type.native()[i], reflection.ReflectedString)
            assert type.native()[i].native(
            ) == "Hello, World! (" + str(i) + ")"
Пример #12
0
    def testItShouldBuildPrimitiveArrayFromArgument(self):
        argument = Message.Argument(type=Message.Argument.ARRAY)
        argument.array.type = Message.Array.PRIMITIVE

        for i in range(0, 3):
            element = argument.array.element.add(
                type=Message.Argument.PRIMITIVE)
            element.primitive.type = Message.Primitive.BOOL
            element.primitive.bool = True

        type = reflection.ReflectedType.fromArgument(argument,
                                                     reflector=self.reflector)

        assert isinstance(type, reflection.ReflectedArray)
        assert len(type.native()) == 3

        for i in range(0, 3):
            assert isinstance(type.native()[i], reflection.ReflectedPrimitive)
            assert type.native()[i].type() == "boolean"
Пример #13
0
    def testItShouldRaiseTypeErrorIfArrayIsMixedTypes(self):
        argument = Message.Argument(type=Message.Argument.ARRAY)
        argument.array.type = Message.Array.PRIMITIVE

        for i in range(0, 3):
            element = argument.array.element.add(
                type=Message.Argument.PRIMITIVE)
            element.primitive.type = Message.Primitive.BOOL
            element.primitive.bool = True
        for i in range(0, 3):
            element = argument.array.element.add(type=Message.Argument.OBJECT)
            element.object.reference = i

        try:
            type = reflection.ReflectedType.fromArgument(
                argument, reflector=self.reflector)

            assert False, "should have caused a TypeError building a mixed array"
        except TypeError as e:
            assert e.message == "mismatched array element types"
Пример #14
0
    def testItShouldShowTheMessageTypeAsSystemResponse(self):
        message = Message(id=1,
                          type=Message.SYSTEM_RESPONSE).SerializeToString()

        assert frame.Frame(2, len(message),
                           message).messageType() == "SYSTEM_RESPONSE"
Пример #15
0
    def testItShouldShowTheMessageTypeAsReflectionResponse(self):
        message = Message(
            id=1, type=Message.REFLECTION_RESPONSE).SerializeToString()

        assert frame.Frame(2, len(message),
                           message).messageType() == "REFLECTION_RESPONSE"
Пример #16
0
    def testItShouldExtractTheMessage(self):
        message = Message(id=1,
                          type=Message.REFLECTION_REQUEST).SerializeToString()

        assert isinstance(
            frame.Frame(2, len(message), message).message(), Message)
Пример #17
0
    def testItShouldBuildFrameFromMessage(self):
        message = Message(id=1,
                          type=Message.REFLECTION_REQUEST).SerializeToString()

        assert frame.Frame.fromMessage(message).length == len(message)
Пример #18
0
    def buildSuccessReply(self):
        message = Message(id=555, type=Message.REFLECTION_RESPONSE)
        message.reflection_response.session_id = "555"
        message.reflection_response.status = Message.ReflectionResponse.SUCCESS

        return message