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']))
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))
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))