Ejemplo n.º 1
0
    def setUp(self):
        self._test_messages = generate_test_messages(
        ) + generate_test_messages_binary()

        self._test_serializers = []

        # JSON serializer is always available
        self._test_serializers.append(serializer.JsonSerializer())
        self._test_serializers.append(serializer.JsonSerializer(batched=True))

        # MsgPack serializer is optional
        if hasattr(serializer, 'MsgPackSerializer'):
            self._test_serializers.append(serializer.MsgPackSerializer())
            self._test_serializers.append(
                serializer.MsgPackSerializer(batched=True))

        # CBOR serializer is optional
        if hasattr(serializer, 'CBORSerializer'):
            self._test_serializers.append(serializer.CBORSerializer())
            self._test_serializers.append(
                serializer.CBORSerializer(batched=True))

        # UBJSON serializer is optional
        if hasattr(serializer, 'UBJSONSerializer'):
            self._test_serializers.append(serializer.UBJSONSerializer())
            self._test_serializers.append(
                serializer.UBJSONSerializer(batched=True))

        print('Testing WAMP serializers {} with {} WAMP test messages'.format(
            [ser.SERIALIZER_ID for ser in self._test_serializers],
            len(self._test_messages)))
def create_serializers(decimal_support=False):
    _serializers = []

    _serializers.append(
        serializer.JsonSerializer(use_decimal_from_str=decimal_support))
    _serializers.append(
        serializer.JsonSerializer(batched=True,
                                  use_decimal_from_str=decimal_support))

    _serializers.append(serializer.CBORSerializer())
    _serializers.append(serializer.CBORSerializer(batched=True))

    if not decimal_support:
        # builtins.OverflowError: Integer value out of range
        _serializers.append(serializer.MsgPackSerializer())
        _serializers.append(serializer.MsgPackSerializer(batched=True))

        # roundtrip error
        _serializers.append(serializer.UBJSONSerializer())
        _serializers.append(serializer.UBJSONSerializer(batched=True))

    # FIXME: implement full FlatBuffers serializer for WAMP
    # WAMP-FlatBuffers currently only supports Python 3
    # _serializers.append(serializer.FlatBuffersSerializer())
    # _serializers.append(serializer.FlatBuffersSerializer(batched=True))

    return _serializers
Ejemplo n.º 3
0
    def setUp(self):
        self.serializers = []

        # JSON serializer is always available
        self.serializers.append(serializer.JsonSerializer())
        self.serializers.append(serializer.JsonSerializer(batched=True))

        # MsgPack serializers are optional
        if hasattr(serializer, 'MsgPackSerializer'):
            self.serializers.append(serializer.MsgPackSerializer())
            self.serializers.append(serializer.MsgPackSerializer(batched=True))
Ejemplo n.º 4
0
    def setUp(self):
        self.serializers = []
        self.serializers.append(serializer.JsonSerializer())
        self.serializers.append(serializer.JsonSerializer(batched=True))

        self.serializers.append(serializer.MsgPackSerializer())

        try:
            self.serializers.append(serializer.MsgPackSerializer())
            self.serializers.append(serializer.MsgPackSerializer(batched=True))
        except Exception:
            ## MsgPack not installed
            pass
    def test_dict_keys_msgpack(self):
        """
        dict keys should always be strings. the data provided is from
        calling msgpack encode on a dict in python2 with
        `use_bin_type=True` and the following message:

            print(ser.serialize(
                message.Call(
                    123456, u"com.myapp.procedure1",
                    args=(),
                    kwargs={u'unicode': 23, 'str': 42}
                )
            ))
        """

        if not hasattr(serializer, 'MsgPackSerializer'):
            self.skipTest("no msgpack")

        ser = serializer.MsgPackSerializer()
        payload = b'\x960\xce\x00\x01\xe2@\x80\xb4com.myapp.procedure1\x90\x82\xc4\x03str*\xa7unicode\x17'
        msg_out = ser.unserialize(payload, True)[0]

        for k in msg_out.kwargs.keys():
            self.assertEqual(type(k), six.text_type)
        self.assertTrue('str' in msg_out.kwargs)
        self.assertTrue('unicode' in msg_out.kwargs)
def create_serializers():
    _serializers = []

    _serializers.append(serializer.JsonSerializer())
    _serializers.append(serializer.JsonSerializer(batched=True))

    _serializers.append(serializer.MsgPackSerializer())
    _serializers.append(serializer.MsgPackSerializer(batched=True))

    _serializers.append(serializer.CBORSerializer())
    _serializers.append(serializer.CBORSerializer(batched=True))

    _serializers.append(serializer.UBJSONSerializer())
    _serializers.append(serializer.UBJSONSerializer(batched=True))

    # FIXME: implement full FlatBuffers serializer for WAMP
    # WAMP-FlatBuffers currently only supports Python 3
    # _serializers.append(serializer.FlatBuffersSerializer())
    # _serializers.append(serializer.FlatBuffersSerializer(batched=True))

    return _serializers
Ejemplo n.º 7
0
    def test_dict_keys_msgpack_batched(self):
        """
        dict keys should always be strings. the data provided is from
        calling msgpack encode on a dict in python2 with
        `use_bin_type=True`
        """
        if not hasattr(serializer, 'MsgPackSerializer'):
            self.skip("no msgpack")

        ser = serializer.MsgPackSerializer(batched=True)
        payload = b'\x00\x00\x001\x960\xce\x00\x01\xe2@\x80\xb4com.myapp.procedure1\x93\x01\x02\x03\x82\xa7unicode\x17\xc4\x03str*'
        msg_out = ser.unserialize(payload, True)[0]
        for k in msg_out.kwargs.keys():
            self.assertEqual(type(k), six.text_type)
Ejemplo n.º 8
0
if __name__ == '__main__':

    PROFILE_FILE = 'vmprof_{}_{}.dat'
    RUNTIME = 5

    tests = [test_serialize, test_unserialize]
    serializers = []

    # JSON serializer is always available
    serializers.append(serializer.JsonSerializer())
    #serializers.append(serializer.JsonSerializer(batched=True))

    # MsgPack serializers are optional
    if hasattr(serializer, 'MsgPackSerializer'):
        serializers.append(serializer.MsgPackSerializer())
        #serializers.append(serializer.MsgPackSerializer(batched=True))
    else:
        print("MsgPack not installed (pip install msgpack-python)")

    for test in tests:
        for ser in serializers:

            print("Running {} on serializer {} for {} seconds ..".format(
                test.__name__, ser.__class__, RUNTIME))

            profile = PROFILE_FILE.format(test.__name__, ser.SERIALIZER_ID)

            outfd = os.open(profile, os.O_RDWR | os.O_CREAT | os.O_TRUNC)
            vmprof.enable(outfd, period=0.01)
            runtime, total_bytes, total_cnt = test(ser, RUNTIME)
Ejemplo n.º 9
0
 def setUp(self):
     self.serializers = []
     self.serializers.append(serializer.JsonSerializer())
     self.serializers.append(serializer.MsgPackSerializer())