def setUp(self): self._trace = bt2.Trace() self._sc = bt2.StreamClass() self._ec = bt2.EventClass('salut') self._my_int_fc = bt2.IntegerFieldClass(32) self._ec.payload_field_class = bt2.StructureFieldClass() self._ec.payload_field_class += collections.OrderedDict([ ('my_int', self._my_int_fc), ]) self._sc.add_event_class(self._ec) self._clock_class = bt2.ClockClass('allo', 1000) self._trace.add_clock_class(self._clock_class) self._trace.packet_header_field_class = bt2.StructureFieldClass() self._trace.packet_header_field_class += collections.OrderedDict([ ('hello', self._my_int_fc), ]) self._trace.add_stream_class(self._sc) self._cc_prio_map = bt2.ClockClassPriorityMap() self._cc_prio_map[self._clock_class] = 231 self._stream = self._sc() self._packet = self._stream.create_packet() self._packet.header_field['hello'] = 19487 self._event = self._ec() self._event.clock_snapshots.add(self._clock_class(1772)) self._event.payload_field['my_int'] = 23 self._event.packet = self._packet
def _set_value(self, values): original_length_field = self.length_field if original_length_field is not None: original_values = self._value if len(values) != self.length_field: if self.length_field is not None: length_fc = self.length_field.field_class else: length_fc = bt2.IntegerFieldClass(size=64, is_signed=False) self.length_field = length_fc(len(values)) try: for index, value in enumerate(values): if value is not None: self[index].value = value else: self[index].reset() except: if original_length_field is not None: self.length_field = original_length_field self.value = original_values else: self.reset() raise
def test_at_index(self): a_fc = bt2.IntegerFieldClass(32) b_fc = bt2.StringFieldClass() c_fc = bt2.FloatingPointNumberFieldClass() self._fc.append_field('c', c_fc) self._fc.append_field('a', a_fc) self._fc.append_field('b', b_fc) self.assertEqual(self._fc.at_index(1), a_fc)
def test_stream(self): tc = bt2.Trace() tc.packet_header_field_class = bt2.StructureFieldClass() tc.packet_header_field_class.append_field('magic', bt2.IntegerFieldClass(32)) tc.packet_header_field_class.append_field('stream_id', bt2.IntegerFieldClass(16)) tc.add_stream_class(self._ec.stream_class) ev = self._ec() self._fill_ev(ev) stream = self._ec.stream_class() packet = stream.create_packet() packet.header_field['magic'] = 0xc1fc1fc1 packet.header_field['stream_id'] = 0 packet.context_field['something'] = 154 packet.context_field['something_else'] = 17.2 ev.packet = packet self.assertEqual(ev.stream.addr, stream.addr)
def setUp(self): self._context_fc = bt2.StructureFieldClass() self._context_fc.append_field('allo', bt2.StringFieldClass()) self._context_fc.append_field('zola', bt2.IntegerFieldClass(18)) self._payload_fc = bt2.StructureFieldClass() self._payload_fc.append_field('zoom', bt2.StringFieldClass()) self._ec = bt2.EventClass('my_event') self._ec.id = 18 self._ec.emf_uri = 'yes' self._ec.log_level = bt2.EventClassLogLevel.INFO self._ec.context_field_class = self._context_fc self._ec.payload_field_class = self._payload_fc
def setUp(self): self._trace = bt2.Trace() self._sc = bt2.StreamClass() self._ec = bt2.EventClass('salut') self._clock_class = bt2.ClockClass('yo', 1000) self._uint64_int_fc = bt2.IntegerFieldClass(64, mapped_clock_class=self._clock_class) self._my_int_fc = bt2.IntegerFieldClass(32) self._ec.payload_field_class = bt2.StructureFieldClass() self._ec.payload_field_class += collections.OrderedDict([ ('my_int', self._my_int_fc), ]) self._sc.add_event_class(self._ec) self._sc.packet_context_field_class = bt2.StructureFieldClass() self._sc.packet_context_field_class += collections.OrderedDict([ ('events_discarded', self._my_int_fc), ('timestamp_begin', self._uint64_int_fc), ('timestamp_end', self._uint64_int_fc), ]) self._trace.add_clock_class(self._clock_class) self._trace.add_stream_class(self._sc) self._stream = self._sc()
def _build_meta(self): self._trace = bt2.Trace() self._sc = bt2.StreamClass() self._ec = bt2.EventClass('salut') self._my_int_fc = bt2.IntegerFieldClass(32) self._ec.payload_field_class = bt2.StructureFieldClass() self._ec.payload_field_class += collections.OrderedDict([ ('my_int', self._my_int_fc), ]) self._sc.add_event_class(self._ec) self._trace.add_stream_class(self._sc) self._stream = self._sc() self._packet = self._stream.create_packet()
def test_create_full(self): cc = bt2.ClockClass('name', 1000) fc = bt2.IntegerFieldClass(24, alignment=16, byte_order=bt2.ByteOrder.BIG_ENDIAN, is_signed=True, base=bt2.Base.OCTAL, encoding=bt2.Encoding.NONE, mapped_clock_class=cc) self.assertEqual(fc.size, 24) self.assertEqual(fc.alignment, 16) self.assertEqual(fc.byte_order, bt2.ByteOrder.BIG_ENDIAN) self.assertTrue(fc.is_signed) self.assertEqual(fc.base, bt2.Base.OCTAL) self.assertEqual(fc.encoding, bt2.Encoding.NONE) self.assertEqual(fc.mapped_clock_class, cc)
def test_getitem(self): tc = bt2.Trace() tc.packet_header_field_class = bt2.StructureFieldClass() tc.packet_header_field_class.append_field('magic', bt2.IntegerFieldClass(32)) tc.packet_header_field_class.append_field('stream_id', bt2.IntegerFieldClass(16)) tc.add_stream_class(self._ec.stream_class) ev = self._ec() self._fill_ev(ev) stream = self._ec.stream_class() packet = stream.create_packet() packet.header_field['magic'] = 0xc1fc1fc1 packet.header_field['stream_id'] = 0 packet.context_field['something'] = 154 packet.context_field['something_else'] = 17.2 with self.assertRaises(KeyError): ev['magic'] ev.packet = packet self.assertEqual(ev['mosquito'], 42) self.assertEqual(ev['gnu'], 23) self.assertEqual(ev['giraffe'], 1) self.assertEqual(ev['msg'], 'hellooo') self.assertEqual(ev['ant'], -1) self.assertEqual(ev['stuff'], 13.194) self.assertEqual(ev['cpu_id'], 1) self.assertEqual(ev['ts'], 1234) self.assertEqual(ev['id'], 23) self.assertEqual(ev['something_else'], 17.2) self.assertEqual(ev['something'], 154) self.assertEqual(ev['stream_id'], 0) self.assertEqual(ev['magic'], 0xc1fc1fc1) with self.assertRaises(KeyError): ev['yes']
def _create_event_classes(self): context_fc = bt2.StructureFieldClass() context_fc.append_field('allo', bt2.StringFieldClass()) context_fc.append_field('zola', bt2.IntegerFieldClass(18)) payload_fc = bt2.StructureFieldClass() payload_fc.append_field('zoom', bt2.StringFieldClass()) ec1 = bt2.EventClass('event23', id=23, context_field_class=context_fc, payload_field_class=payload_fc) ec2 = bt2.EventClass('event17', id=17, context_field_class=payload_fc, payload_field_class=context_fc) return ec1, ec2
def test_iter(self): a_fc = bt2.IntegerFieldClass(32) b_fc = bt2.StringFieldClass() c_fc = bt2.FloatingPointNumberFieldClass() fields = ( ('a', a_fc), ('b', b_fc), ('c', c_fc), ) for field in fields: self._fc.append_field(*field) for (name, fc_field_class), field in zip(self._fc.items(), fields): self.assertEqual(name, field[0]) self.assertEqual(fc_field_class, field[1])
def _create_stream_class(self, name, id): ec1, ec2 = self._create_event_classes() packet_context_fc = bt2.StructureFieldClass() packet_context_fc.append_field('menu', bt2.FloatingPointNumberFieldClass()) packet_context_fc.append_field('sticker', bt2.StringFieldClass()) event_header_fc = bt2.StructureFieldClass() event_header_fc.append_field('id', bt2.IntegerFieldClass(19)) event_context_fc = bt2.StructureFieldClass() event_context_fc.append_field('msg', bt2.StringFieldClass()) return bt2.StreamClass(name=name, id=id, packet_context_field_class=packet_context_fc, event_header_field_class=event_header_fc, event_context_field_class=event_context_fc, event_classes=(ec1, ec2))
def setUp(self): self._packet_context_fc = bt2.StructureFieldClass() self._packet_context_fc.append_field( 'menu', bt2.FloatingPointNumberFieldClass()) self._packet_context_fc.append_field('sticker', bt2.StringFieldClass()) self._event_header_fc = bt2.StructureFieldClass() self._event_header_fc.append_field('id', bt2.IntegerFieldClass(19)) self._event_context_fc = bt2.StructureFieldClass() self._event_context_fc.append_field('msg', bt2.StringFieldClass()) self._ec1, self._ec2 = self._create_event_classes() self._sc = bt2.StreamClass( name='my_stream_class', id=12, packet_context_field_class=self._packet_context_fc, event_header_field_class=self._event_header_fc, event_context_field_class=self._event_context_fc, event_classes=(self._ec1, self._ec2))
def test_iadd(self): struct_fc = bt2.StructureFieldClass() c_field_class = bt2.StringFieldClass() d_field_class = bt2.EnumerationFieldClass(size=32) e_field_class = bt2.StructureFieldClass() struct_fc.append_field('c_string', c_field_class) struct_fc.append_field('d_enum', d_field_class) struct_fc.append_field('e_struct', e_field_class) a_field_class = bt2.FloatingPointNumberFieldClass() b_field_class = bt2.IntegerFieldClass(17) self._fc.append_field('a_float', a_field_class) self._fc.append_field('b_int', b_field_class) self._fc += struct_fc self.assertEqual(self._fc['a_float'], a_field_class) self.assertEqual(self._fc['b_int'], b_field_class) self.assertEqual(self._fc['c_string'], c_field_class) self.assertEqual(self._fc['d_enum'], d_field_class) self.assertEqual(self._fc['e_struct'], e_field_class)
def setUp(self): self._elem_fc = bt2.IntegerFieldClass(23) self._fc = bt2.ArrayFieldClass(self._elem_fc, 45)
def test_at_index_out_of_bounds_after(self): self._fc.append_field('c', bt2.IntegerFieldClass(32)) with self.assertRaises(IndexError): self._fc.at_index(len(self._fc))
def test_at_index_invalid(self): self._fc.append_field('c', bt2.IntegerFieldClass(32)) with self.assertRaises(TypeError): self._fc.at_index('yes')
def _create_ec(self, with_eh=True, with_sec=True, with_ec=True, with_ep=True): # event header if with_eh: eh = bt2.StructureFieldClass() eh += OrderedDict(( ('id', bt2.IntegerFieldClass(8)), ('ts', bt2.IntegerFieldClass(32)), )) else: eh = None # stream event context if with_sec: sec = bt2.StructureFieldClass() sec += OrderedDict(( ('cpu_id', bt2.IntegerFieldClass(8)), ('stuff', bt2.FloatingPointNumberFieldClass()), )) else: sec = None # packet context pc = bt2.StructureFieldClass() pc += OrderedDict(( ('something', bt2.IntegerFieldClass(8)), ('something_else', bt2.FloatingPointNumberFieldClass()), )) # stream class sc = bt2.StreamClass() sc.packet_context_field_class = pc sc.event_header_field_class = eh sc.event_context_field_class = sec # event context if with_ec: ec = bt2.StructureFieldClass() ec += OrderedDict(( ('ant', bt2.IntegerFieldClass(16, is_signed=True)), ('msg', bt2.StringFieldClass()), )) else: ec = None # event payload if with_ep: ep = bt2.StructureFieldClass() ep += OrderedDict(( ('giraffe', bt2.IntegerFieldClass(32)), ('gnu', bt2.IntegerFieldClass(8)), ('mosquito', bt2.IntegerFieldClass(8)), )) else: ep = None # event class event_class = bt2.EventClass('ec') event_class.context_field_class = ec event_class.payload_field_class = ep sc.add_event_class(event_class) return event_class
def _get_std_header(self): header_fc = bt2.StructureFieldClass() header_fc.append_field('magic', bt2.IntegerFieldClass(32)) header_fc.append_field('stream_id', bt2.IntegerFieldClass(32)) return header_fc
def test_append_field_kwargs(self): int_field_class = bt2.IntegerFieldClass(32) self._fc.append_field(name='int32', field_class=int_field_class) field_class = self._fc['int32'] self.assertEqual(field_class, int_field_class)
def test_assign_packet_header_field_class(self): header_fc = bt2.StructureFieldClass() header_fc.append_field('magic', bt2.IntegerFieldClass(32)) self._tc.packet_header_field_class = header_fc self.assertEqual(self._tc.packet_header_field_class, header_fc)
def test_create_invalid_size(self): with self.assertRaises(TypeError): fc = bt2.IntegerFieldClass('yes')
def setUp(self): self._elem_fc = bt2.IntegerFieldClass(23) self._fc = bt2.SequenceFieldClass(self._elem_fc, 'the.length')
def test_create_neg_zero(self): with self.assertRaises(ValueError): fc = bt2.IntegerFieldClass(0)
def setUp(self): self._fc = bt2.IntegerFieldClass(35)
def test_create_from_int_fc(self): int_fc = bt2.IntegerFieldClass(23) self._fc = bt2.EnumerationFieldClass(int_fc)
def test_integer_field_class_prop(self): int_fc = bt2.IntegerFieldClass(23) enum_fc = bt2.EnumerationFieldClass(int_fc) self.assertEqual(enum_fc.integer_field_class.addr, int_fc.addr)
def _create_packet(self, with_ph=True, with_pc=True): # event header eh = bt2.StructureFieldClass() eh += OrderedDict(( ('id', bt2.IntegerFieldClass(8)), ('ts', bt2.IntegerFieldClass(32)), )) # stream event context sec = bt2.StructureFieldClass() sec += OrderedDict(( ('cpu_id', bt2.IntegerFieldClass(8)), ('stuff', bt2.FloatingPointNumberFieldClass()), )) # packet context if with_pc: pc = bt2.StructureFieldClass() pc += OrderedDict(( ('something', bt2.IntegerFieldClass(8)), ('something_else', bt2.FloatingPointNumberFieldClass()), )) else: pc = None # stream class sc = bt2.StreamClass() sc.packet_context_field_class = pc sc.event_header_field_class = eh sc.event_context_field_class = sec # event context ec = bt2.StructureFieldClass() ec += OrderedDict(( ('ant', bt2.IntegerFieldClass(16, is_signed=True)), ('msg', bt2.StringFieldClass()), )) # event payload ep = bt2.StructureFieldClass() ep += OrderedDict(( ('giraffe', bt2.IntegerFieldClass(32)), ('gnu', bt2.IntegerFieldClass(8)), ('mosquito', bt2.IntegerFieldClass(8)), )) # event class event_class = bt2.EventClass('ec') event_class.context_field_class = ec event_class.payload_field_class = ep sc.add_event_class(event_class) # packet header if with_ph: ph = bt2.StructureFieldClass() ph += OrderedDict(( ('magic', bt2.IntegerFieldClass(32)), ('stream_id', bt2.IntegerFieldClass(16)), )) else: ph = None # trace c;ass tc = bt2.Trace() tc.packet_header_field_class = ph tc.add_stream_class(sc) # stream stream = sc() # packet return stream.create_packet()