From: Mathieu Desnoyers Date: Tue, 22 Feb 2011 22:49:17 +0000 (-0500) Subject: Add basic CTF metadata unit tests as "fail" and "succeed" X-Git-Tag: v0.1~191 X-Git-Url: http://git.efficios.com/?p=babeltrace.git;a=commitdiff_plain;h=632f35fe3c439750db5d94e627eb840939fabcf6 Add basic CTF metadata unit tests as "fail" and "succeed" Signed-off-by: Mathieu Desnoyers --- diff --git a/formats/ctf/metadata/ctf-test.txt b/formats/ctf/metadata/ctf-test.txt deleted file mode 100644 index b051a79f..00000000 --- a/formats/ctf/metadata/ctf-test.txt +++ /dev/null @@ -1,159 +0,0 @@ - -enum name <32> { - ZERO, - ONE, - TWO, - TEN = 10, - ELEVEN, -}; - -enum name { ONE, TWO }; - -enum name { ONE, TWO }; - -enum name { - string = 1 ... 2, - "other string" = 3...4, - yet_another_string, /* will be assigned to end_value2 + 1 */ - "some other string" = 10, -}; - -enum name { "int" = 1, }; - -typealias floating_point { - exp_dig = 8; /* sizeof(float) * CHAR_BIT - FLT_MANT_DIG */ - mant_dig = 24; /* FLT_MANT_DIG */ - byte_order = native; -} : float; - -typealias integer { - size = 32; - align = 32; - sign = false; -} : struct page *; - -stream { - typealias integer { size = 64; align = 64; signed = false; } : uint64_t; - typealias integer { size = 16; align = 16; signed = false; } : uint16_t; - typealias integer { size = 32; align = 32; signed = true; } : int; - typedef int pid_t; - - id = 5; - /* Type 1 - Few event IDs; Type 2 - Many event IDs. See section 6.2. */ - event.header := struct { uint64_t timestamp; uint16_t id; }; - event.context := struct { pid_t pid; }; -}; - -struct example { - short a:12; - short b:5; -}; - -struct name { - typealias integer { size = 64; align = 64; signed = false; } : uint64_t; - typealias integer { size = 32; align = 32; signed = false; } : uint32_t; - typealias integer { size = 32; align = 32; signed = true; } : int32_t; - typealias integer { size = 2; align = 8; signed = false; } : uint2_t; - typealias integer { size = 16; align = 16; signed = true; } : short; - typealias uint32_t : unsigned int; - - enum { a, b, c, d } choice; - /* Unrelated fields can be added between the variant and its tag */ - int32_t somevalue; - variant { - uint32_t a; - uint64_t b; - short c; - struct { - unsigned int field1; - uint64_t field2; - } d; - } s; -}; - -typealias integer { - size = 32; - signed = false; - align = 32; -} : uint32_t; - -typealias string { encoding = UTF8; } : test; - -struct event_packet_header { - typealias integer { size = 32; align = 32; signed = false; } : uint32_t; - typealias integer { size = 8; align = 8; signed = false; } : uint8_t; - - uint32_t magic; - uint8_t trace_uuid[16]; - uint32_t stream_id; -}; - -struct event_packet_context { - typealias integer { size = 64; align = 64; signed = false; } : uint64_t; - typealias integer { size = 32; align = 32; signed = false; } : uint32_t; - typealias integer { size = 16; align = 16; signed = false; } : uint16_t; - typealias integer { size = 8; align = 8; signed = false; } : uint8_t; - - uint64_t timestamp_begin; - uint64_t timestamp_end; - uint32_t checksum; - uint32_t stream_packet_count; - uint32_t events_discarded; - uint32_t cpu_id; - uint16_t content_size; - uint16_t packet_size; - uint8_t stream_packet_count_bits; /* Significant counter bits */ - uint8_t compression_scheme; - uint8_t encryption_scheme; - uint8_t checksum_scheme; -}; - -struct event_header_1 { - typealias integer { size = 64; align = 64; signed = false; } : uint64_t; - typealias integer { size = 32; align = 32; signed = false; } : uint32_t; - typealias integer { size = 5; align = 1; signed = false; } : uint5_t; - typealias integer { size = 27; align = 1; signed = false; } : uint27_t; - - /* - * id: range: 0 - 30. - * id 31 is reserved to indicate an extended header. - */ - enum { compact = 0 ... 30, extended = 31 } id; - variant { - struct { - uint27_t timestamp; - } compact; - struct { - uint32_t id; /* 32-bit event IDs */ - uint64_t timestamp; /* 64-bit timestamps */ - } extended; - } v; -}; - -struct event_header_2 { - typealias integer { size = 64; align = 64; signed = false; } : uint64_t; - typealias integer { size = 32; align = 32; signed = false; } : uint32_t; - typealias integer { size = 16; align = 16; signed = false; } : uint16_t; - - /* - * id: range: 0 - 65534. - * id 65535 is reserved to indicate an extended header. - */ - enum { compact = 0 ... 65534, extended = 65535 } id; - variant { - struct { - uint32_t timestamp; - } compact; - struct { - uint32_t id; /* 32-bit event IDs */ - uint64_t timestamp; /* 64-bit timestamps */ - } extended; - } v; -}; - -typedef int rootscopetest; - -event { a.b.c.d.e = f.g.h->i->j; }; - -typealias integer { size = 32; align = 32; signed = false; } : unsigned long long *; -typealias integer { size = 32; align = 32; signed = false; } : unsigned const long []; diff --git a/formats/ctf/metadata/ctf-test/fail/enum-with-non-numeric-range.txt b/formats/ctf/metadata/ctf-test/fail/enum-with-non-numeric-range.txt new file mode 100644 index 00000000..557fa665 --- /dev/null +++ b/formats/ctf/metadata/ctf-test/fail/enum-with-non-numeric-range.txt @@ -0,0 +1 @@ +enum{X = array[2].N ... 1, }; diff --git a/formats/ctf/metadata/ctf-test/readme.txt b/formats/ctf/metadata/ctf-test/readme.txt new file mode 100644 index 00000000..8dbb1314 --- /dev/null +++ b/formats/ctf/metadata/ctf-test/readme.txt @@ -0,0 +1,4 @@ +These are the CTF metadata parser test. Those under succeed/ should successfully +parse. Those under fail/ should provide an appropriate failure message. + +Mathieu Desnoyers diff --git a/formats/ctf/metadata/ctf-test/succeed/ctf-test.txt b/formats/ctf/metadata/ctf-test/succeed/ctf-test.txt new file mode 100644 index 00000000..b051a79f --- /dev/null +++ b/formats/ctf/metadata/ctf-test/succeed/ctf-test.txt @@ -0,0 +1,159 @@ + +enum name <32> { + ZERO, + ONE, + TWO, + TEN = 10, + ELEVEN, +}; + +enum name { ONE, TWO }; + +enum name { ONE, TWO }; + +enum name { + string = 1 ... 2, + "other string" = 3...4, + yet_another_string, /* will be assigned to end_value2 + 1 */ + "some other string" = 10, +}; + +enum name { "int" = 1, }; + +typealias floating_point { + exp_dig = 8; /* sizeof(float) * CHAR_BIT - FLT_MANT_DIG */ + mant_dig = 24; /* FLT_MANT_DIG */ + byte_order = native; +} : float; + +typealias integer { + size = 32; + align = 32; + sign = false; +} : struct page *; + +stream { + typealias integer { size = 64; align = 64; signed = false; } : uint64_t; + typealias integer { size = 16; align = 16; signed = false; } : uint16_t; + typealias integer { size = 32; align = 32; signed = true; } : int; + typedef int pid_t; + + id = 5; + /* Type 1 - Few event IDs; Type 2 - Many event IDs. See section 6.2. */ + event.header := struct { uint64_t timestamp; uint16_t id; }; + event.context := struct { pid_t pid; }; +}; + +struct example { + short a:12; + short b:5; +}; + +struct name { + typealias integer { size = 64; align = 64; signed = false; } : uint64_t; + typealias integer { size = 32; align = 32; signed = false; } : uint32_t; + typealias integer { size = 32; align = 32; signed = true; } : int32_t; + typealias integer { size = 2; align = 8; signed = false; } : uint2_t; + typealias integer { size = 16; align = 16; signed = true; } : short; + typealias uint32_t : unsigned int; + + enum { a, b, c, d } choice; + /* Unrelated fields can be added between the variant and its tag */ + int32_t somevalue; + variant { + uint32_t a; + uint64_t b; + short c; + struct { + unsigned int field1; + uint64_t field2; + } d; + } s; +}; + +typealias integer { + size = 32; + signed = false; + align = 32; +} : uint32_t; + +typealias string { encoding = UTF8; } : test; + +struct event_packet_header { + typealias integer { size = 32; align = 32; signed = false; } : uint32_t; + typealias integer { size = 8; align = 8; signed = false; } : uint8_t; + + uint32_t magic; + uint8_t trace_uuid[16]; + uint32_t stream_id; +}; + +struct event_packet_context { + typealias integer { size = 64; align = 64; signed = false; } : uint64_t; + typealias integer { size = 32; align = 32; signed = false; } : uint32_t; + typealias integer { size = 16; align = 16; signed = false; } : uint16_t; + typealias integer { size = 8; align = 8; signed = false; } : uint8_t; + + uint64_t timestamp_begin; + uint64_t timestamp_end; + uint32_t checksum; + uint32_t stream_packet_count; + uint32_t events_discarded; + uint32_t cpu_id; + uint16_t content_size; + uint16_t packet_size; + uint8_t stream_packet_count_bits; /* Significant counter bits */ + uint8_t compression_scheme; + uint8_t encryption_scheme; + uint8_t checksum_scheme; +}; + +struct event_header_1 { + typealias integer { size = 64; align = 64; signed = false; } : uint64_t; + typealias integer { size = 32; align = 32; signed = false; } : uint32_t; + typealias integer { size = 5; align = 1; signed = false; } : uint5_t; + typealias integer { size = 27; align = 1; signed = false; } : uint27_t; + + /* + * id: range: 0 - 30. + * id 31 is reserved to indicate an extended header. + */ + enum { compact = 0 ... 30, extended = 31 } id; + variant { + struct { + uint27_t timestamp; + } compact; + struct { + uint32_t id; /* 32-bit event IDs */ + uint64_t timestamp; /* 64-bit timestamps */ + } extended; + } v; +}; + +struct event_header_2 { + typealias integer { size = 64; align = 64; signed = false; } : uint64_t; + typealias integer { size = 32; align = 32; signed = false; } : uint32_t; + typealias integer { size = 16; align = 16; signed = false; } : uint16_t; + + /* + * id: range: 0 - 65534. + * id 65535 is reserved to indicate an extended header. + */ + enum { compact = 0 ... 65534, extended = 65535 } id; + variant { + struct { + uint32_t timestamp; + } compact; + struct { + uint32_t id; /* 32-bit event IDs */ + uint64_t timestamp; /* 64-bit timestamps */ + } extended; + } v; +}; + +typedef int rootscopetest; + +event { a.b.c.d.e = f.g.h->i->j; }; + +typealias integer { size = 32; align = 32; signed = false; } : unsigned long long *; +typealias integer { size = 32; align = 32; signed = false; } : unsigned const long [];