예제 #1
0
def test_create_component():
    r"""Test dynamic creation of component instance."""
    x = components.create_component('serializer', seritype='direct')
    assert (components.isinstance_component(x, ['serializer']))
    assert (components.isinstance_component(x, ['comm', 'serializer']))
    assert (not components.isinstance_component(x, ['comm']))
    x = components.create_component('serializer')
    assert (components.isinstance_component(x, ['serializer']))
예제 #2
0
 def update_serializer(self, msg):
     r"""Update the serializer for the output comm based on input."""
     sinfo = self.icomm.serializer.typedef
     sinfo.update(self.icomm.serializer.serializer_info)
     sinfo.pop('seritype', None)
     self.debug(
         'Before update:\n' +
         '  icomm:\n    sinfo:\n%s\n    typedef:\n%s\n' +
         '  ocomm:\n    sinfo:\n%s\n    typedef:\n%s',
         self.pprint(self.icomm.serializer.serializer_info, 2),
         self.pprint(self.icomm.serializer.typedef, 2),
         self.pprint(self.ocomm.serializer.serializer_info, 2),
         self.pprint(self.ocomm.serializer.typedef, 2))
     for t in self.translator:
         if isinstance_component(t, 'transform'):
             t.set_original_datatype(sinfo)
             sinfo = t.transformed_datatype
     self.ocomm.serializer.initialize_serializer(sinfo)
     self.ocomm.serializer.update_serializer(skip_type=True,
                                             **self.icomm._last_header)
     if (((sinfo['type'] == 'array')
          and (self.ocomm.serializer.typedef['type'] != 'array')
          and (len(sinfo['items']) == 1))):
         # if (((self.icomm.serializer.typedef['type'] == 'array')
         #      and (self.ocomm.serializer.typedef['type'] != 'array')
         #      and (len(self.icomm.serializer.typedef['items']) == 1))):
         self.translator.insert(0, _translate_list2element)
     self.debug(
         'After update:\n' +
         '  icomm:\n    sinfo:\n%s\n    typedef:\n%s\n' +
         '  ocomm:\n    sinfo:\n%s\n    typedef:\n%s',
         self.pprint(self.icomm.serializer.serializer_info, 2),
         self.pprint(self.icomm.serializer.typedef, 2),
         self.pprint(self.ocomm.serializer.serializer_info, 2),
         self.pprint(self.ocomm.serializer.typedef, 2))
예제 #3
0
 def update_serializer(self, msg):
     r"""Update the serializer for the output comm based on input."""
     self.debug(
         'Before update:\n' +
         '  icomm:\n    sinfo:\n%s\n    typedef:\n%s\n' +
         '  ocomm:\n    sinfo:\n%s\n    typedef:\n%s',
         self.pprint(self.icomm.serializer.serializer_info, 2),
         self.pprint(self.icomm.serializer.typedef, 2),
         self.pprint(self.ocomm.serializer.serializer_info, 2),
         self.pprint(self.ocomm.serializer.typedef, 2))
     for t in self.translator:
         if isinstance_component(t, 'transform'):
             t.set_original_datatype(msg.stype)
             msg.stype = t.transformed_datatype
     # This can be removed if send_message is set up to update and send the
     # received message rather than create a new one by sending msg.args
     self.ocomm.update_serializer_from_message(msg)
     if (((msg.stype['type'] == 'array')
          and (self.ocomm.serializer.typedef['type'] != 'array')
          and (len(msg.stype['items']) == 1))):
         # if (((self.icomm.serializer.typedef['type'] == 'array')
         #      and (self.ocomm.serializer.typedef['type'] != 'array')
         #      and (len(self.icomm.serializer.typedef['items']) == 1))):
         self.translator.insert(0, _translate_list2element)
     self.debug(
         'After update:\n' +
         '  icomm:\n    sinfo:\n%s\n    typedef:\n%s\n' +
         '  ocomm:\n    sinfo:\n%s\n    typedef:\n%s',
         self.pprint(self.icomm.serializer.serializer_info, 2),
         self.pprint(self.icomm.serializer.typedef, 2),
         self.pprint(self.ocomm.serializer.serializer_info, 2),
         self.pprint(self.ocomm.serializer.typedef, 2))