Пример #1
0
 def test_object_serialization(self):
     ser = base.ZunObjectSerializer()
     obj = MyObj(self.context)
     primitive = ser.serialize_entity(self.context, obj)
     self.assertIn('versioned_object.name', primitive)
     obj2 = ser.deserialize_entity(self.context, primitive)
     self.assertIsInstance(obj2, MyObj)
     self.assertEqual(self.context, obj2._context)
Пример #2
0
def _init_serializer():
    serializer = rpc.RequestContextSerializer(
        objects_base.ZunObjectSerializer())
    if osprofiler:
        serializer = rpc.ProfilerRequestContextSerializer(serializer)
    else:
        serializer = rpc.RequestContextSerializer(serializer)
    return serializer
Пример #3
0
 def __init__(self, topic, server, handlers, binary):
     super(Service, self).__init__()
     serializer = rpc.RequestContextSerializer(
         objects_base.ZunObjectSerializer())
     transport = messaging.get_transport(CONF)
     # TODO(asalkeld) add support for version='x.y'
     target = messaging.Target(topic=topic, server=server)
     self._server = messaging.get_rpc_server(transport,
                                             target,
                                             handlers,
                                             serializer=serializer)
     self.binary = binary
Пример #4
0
 def test_object_serialization_iterables(self):
     ser = base.ZunObjectSerializer()
     obj = MyObj(self.context)
     for iterable in (list, tuple, set):
         thing = iterable([obj])
         primitive = ser.serialize_entity(self.context, thing)
         self.assertEqual(1, len(primitive))
         for item in primitive:
             self.assertFalse(isinstance(item, base.ZunObject))
         thing2 = ser.deserialize_entity(self.context, primitive)
         self.assertEqual(1, len(thing2))
         for item in thing2:
             self.assertIsInstance(item, MyObj)
Пример #5
0
 def __init__(self,
              transport=None,
              context=None,
              topic=None,
              server=None,
              timeout=None):
     serializer = rpc.RequestContextSerializer(
         objects_base.ZunObjectSerializer())
     if transport is None:
         exmods = rpc.get_allowed_exmods()
         transport = messaging.get_transport(CONF,
                                             allowed_remote_exmods=exmods)
     self._context = context
     if topic is None:
         topic = ''
     target = messaging.Target(topic=topic, server=server)
     self._client = messaging.RPCClient(transport,
                                        target,
                                        serializer=serializer,
                                        timeout=timeout)
Пример #6
0
    def _test_deserialize_entity_newer(self, obj_version, backported_to,
                                       mock_indirection_api,
                                       my_version='1.6'):
        ser = base.ZunObjectSerializer()
        mock_indirection_api.object_backport_versions.side_effect \
            = NotImplementedError()
        mock_indirection_api.object_backport.return_value = 'backported'

        @base.ZunObjectRegistry.register
        class MyTestObj(MyObj):
            VERSION = my_version

        obj = MyTestObj()
        obj.VERSION = obj_version
        primitive = obj.obj_to_primitive()
        result = ser.deserialize_entity(self.context, primitive)
        if backported_to is None:
            self.assertFalse(mock_indirection_api.object_backport.called)
        else:
            self.assertEqual('backported', result)
            mock_indirection_api.object_backport.assert_called_with(
                self.context, primitive, backported_to)