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
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))
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
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)
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)
def setUp(self): self.serializers = [] self.serializers.append(serializer.JsonSerializer()) self.serializers.append(serializer.MsgPackSerializer())