Пример #1
0
 def _create_event_classes(self):
     context_ft = bt2.StructureFieldType()
     context_ft.append_field('allo', bt2.StringFieldType())
     context_ft.append_field('zola', bt2.IntegerFieldType(18))
     payload_ft = bt2.StructureFieldType()
     payload_ft.append_field('zoom', bt2.StringFieldType())
     ec1 = bt2.EventClass('event23',
                          id=23,
                          context_field_type=context_ft,
                          payload_field_type=payload_ft)
     ec2 = bt2.EventClass('event17',
                          id=17,
                          context_field_type=payload_ft,
                          payload_field_type=context_ft)
     return ec1, ec2
    def test_iter(self):
        a_ft = bt2.IntegerFieldType(32)
        b_ft = bt2.StringFieldType()
        c_ft = bt2.FloatingPointNumberFieldType()
        fields = (
            ('a', a_ft),
            ('b', b_ft),
            ('c', c_ft),
        )

        for field in fields:
            self._ft.append_field(*field)

        for (name, ft_field_type), field in zip(self._ft.items(), fields):
            self.assertEqual(name, field[0])
            self.assertEqual(ft_field_type, field[1])
Пример #3
0
 def _create_stream_class(self, name, id):
     ec1, ec2 = self._create_event_classes()
     packet_context_ft = bt2.StructureFieldType()
     packet_context_ft.append_field('menu',
                                    bt2.FloatingPointNumberFieldType())
     packet_context_ft.append_field('sticker', bt2.StringFieldType())
     event_header_ft = bt2.StructureFieldType()
     event_header_ft.append_field('id', bt2.IntegerFieldType(19))
     event_context_ft = bt2.StructureFieldType()
     event_context_ft.append_field('msg', bt2.StringFieldType())
     return bt2.StreamClass(name=name,
                            id=id,
                            packet_context_field_type=packet_context_ft,
                            event_header_field_type=event_header_ft,
                            event_context_field_type=event_context_ft,
                            event_classes=(ec1, ec2))
 def test_iadd(self):
     struct_ft = bt2.StructureFieldType()
     c_field_type = bt2.StringFieldType()
     d_field_type = bt2.EnumerationFieldType(size=32)
     e_field_type = bt2.StructureFieldType()
     struct_ft.append_field('c_string', c_field_type)
     struct_ft.append_field('d_enum', d_field_type)
     struct_ft.append_field('e_struct', e_field_type)
     a_field_type = bt2.FloatingPointNumberFieldType()
     b_field_type = bt2.IntegerFieldType(17)
     self._ft.append_field('a_float', a_field_type)
     self._ft.append_field('b_int', b_field_type)
     self._ft += struct_ft
     self.assertEqual(self._ft['a_float'], a_field_type)
     self.assertEqual(self._ft['b_int'], b_field_type)
     self.assertEqual(self._ft['c_string'], c_field_type)
     self.assertEqual(self._ft['d_enum'], d_field_type)
     self.assertEqual(self._ft['e_struct'], e_field_type)
    def test_type(self):
        int_ft = bt2.IntegerFieldType(32)

        enum_ft = bt2.EnumerationFieldType(int_ft)
        enum_ft.append_mapping('corner', 23)
        enum_ft.append_mapping('zoom', 17, 20)
        enum_ft.append_mapping('mellotron', 1001)
        enum_ft.append_mapping('giorgio', 2000, 3000)

        array_ft = bt2.ArrayFieldType(int_ft, 5)
        seq_ft = bt2.SequenceFieldType(int_ft, 'the_len_field')
        float_ft = bt2.FloatingPointNumberFieldType()

        struct_ft = bt2.StructureFieldType()
        struct_ft.append_field('a', int_ft)
        struct_ft.append_field('b', int_ft)
        struct_ft.append_field('c', int_ft)

        _string_ft = bt2.StringFieldType()

        variant_ft = bt2.VariantFieldType('tag', enum_ft)
        variant_ft.append_field('corner', int_ft)
        variant_ft.append_field('zoom', array_ft)
        variant_ft.append_field('mellotron', float_ft)
        variant_ft.append_field('giorgio', struct_ft)

        expected_types = {
            babeltrace.CTFTypeId.INTEGER: int_ft,
            babeltrace.CTFTypeId.FLOAT: float_ft,
            babeltrace.CTFTypeId.ENUM: enum_ft,
            babeltrace.CTFTypeId.STRING: _string_ft,
            babeltrace.CTFTypeId.STRUCT: struct_ft,
            babeltrace.CTFTypeId.VARIANT: variant_ft,
            babeltrace.CTFTypeId.ARRAY: array_ft,
            babeltrace.CTFTypeId.SEQUENCE: seq_ft,
        }

        for type_id, ft in expected_types.items():
            declaration = self._get_declaration(ft)
            self.assertIsNotNone(declaration)
            self.assertEqual(declaration.type, type_id)
Пример #6
0
 def test_create_full(self):
     header_ft = bt2.StructureFieldType()
     header_ft.append_field('magic', bt2.IntegerFieldType(32))
     clock_classes = bt2.ClockClass('cc1'), bt2.ClockClass('cc2')
     sc = self._create_stream_class('sc1', 3)
     tc = bt2.Trace(name='my name',
                    native_byte_order=bt2.ByteOrder.LITTLE_ENDIAN,
                    env={
                        'the_string': 'value',
                        'the_int': 23
                    },
                    packet_header_field_type=header_ft,
                    clock_classes=clock_classes,
                    stream_classes=(sc, ))
     self.assertEqual(tc.name, 'my name')
     self.assertEqual(tc.native_byte_order, bt2.ByteOrder.LITTLE_ENDIAN)
     self.assertEqual(tc.env['the_string'], 'value')
     self.assertEqual(tc.env['the_int'], 23)
     self.assertEqual(tc.packet_header_field_type, header_ft)
     self.assertEqual(tc.clock_classes['cc1'], clock_classes[0])
     self.assertEqual(tc.clock_classes['cc2'], clock_classes[1])
     self.assertEqual(tc[3], sc)
    def test_at_index_invalid(self):
        self._ft.append_field('c', bt2.IntegerFieldType(32))

        with self.assertRaises(TypeError):
            self._ft.at_index('yes')
 def test_append_field_kwargs(self):
     int_field_type = bt2.IntegerFieldType(32)
     self._ft.append_field(name='int32', field_type=int_field_type)
     field_type = self._ft['int32']
     self.assertEqual(field_type, int_field_type)
 def test_integer_field_type_prop(self):
     int_ft = bt2.IntegerFieldType(23)
     enum_ft = bt2.EnumerationFieldType(int_ft)
     self.assertEqual(enum_ft.integer_field_type.addr, int_ft.addr)
Пример #10
0
 def test_create_from_int_ft(self):
     int_ft = bt2.IntegerFieldType(23)
     self._ft = bt2.EnumerationFieldType(int_ft)
Пример #11
0
 def test_create_neg_zero(self):
     with self.assertRaises(ValueError):
         ft = bt2.IntegerFieldType(0)
Пример #12
0
    def _create_packet(self, with_ph=True, with_pc=True):
        # event header
        eh = bt2.StructureFieldType()
        eh += OrderedDict((
            ('id', bt2.IntegerFieldType(8)),
            ('ts', bt2.IntegerFieldType(32)),
        ))

        # stream event context
        sec = bt2.StructureFieldType()
        sec += OrderedDict((
            ('cpu_id', bt2.IntegerFieldType(8)),
            ('stuff', bt2.FloatingPointNumberFieldType()),
        ))

        # packet context
        if with_pc:
            pc = bt2.StructureFieldType()
            pc += OrderedDict((
                ('something', bt2.IntegerFieldType(8)),
                ('something_else', bt2.FloatingPointNumberFieldType()),
            ))
        else:
            pc = None

        # stream class
        sc = bt2.StreamClass()
        sc.packet_context_field_type = pc
        sc.event_header_field_type = eh
        sc.event_context_field_type = sec

        # event context
        ec = bt2.StructureFieldType()
        ec += OrderedDict((
            ('ant', bt2.IntegerFieldType(16, is_signed=True)),
            ('msg', bt2.StringFieldType()),
        ))

        # event payload
        ep = bt2.StructureFieldType()
        ep += OrderedDict((
            ('giraffe', bt2.IntegerFieldType(32)),
            ('gnu', bt2.IntegerFieldType(8)),
            ('mosquito', bt2.IntegerFieldType(8)),
        ))

        # event class
        event_class = bt2.EventClass('ec')
        event_class.context_field_type = ec
        event_class.payload_field_type = ep
        sc.add_event_class(event_class)

        # packet header
        if with_ph:
            ph = bt2.StructureFieldType()
            ph += OrderedDict((
                ('magic', bt2.IntegerFieldType(32)),
                ('stream_id', bt2.IntegerFieldType(16)),
            ))
        else:
            ph = None

        # trace c;ass
        tc = bt2.Trace()
        tc.packet_header_field_type = ph
        tc.add_stream_class(sc)

        # stream
        stream = sc()

        # packet
        return stream.create_packet()
 def test_array_length(self):
     int_ft = bt2.IntegerFieldType(32)
     array_ft = bt2.ArrayFieldType(int_ft, 5)
     declaration = self._get_declaration(array_ft)
     self.assertEqual(declaration.length, 5)
Пример #14
0
 def test_assign_packet_header_field_type(self):
     header_ft = bt2.StructureFieldType()
     header_ft.append_field('magic', bt2.IntegerFieldType(32))
     self._tc.packet_header_field_type = header_ft
     self.assertEqual(self._tc.packet_header_field_type, header_ft)
Пример #15
0
 def _get_std_header(self):
     header_ft = bt2.StructureFieldType()
     header_ft.append_field('magic', bt2.IntegerFieldType(32))
     header_ft.append_field('stream_id', bt2.IntegerFieldType(32))
     return header_ft