Introduce new barectf configuration API and YAML configuration schema
authorPhilippe Proulx <eeppeliteloop@gmail.com>
Mon, 27 Jul 2020 19:38:11 +0000 (15:38 -0400)
committerPhilippe Proulx <eeppeliteloop@gmail.com>
Tue, 28 Jul 2020 11:53:29 +0000 (07:53 -0400)
commit4810b70759001e6a40631e6dea3be31d31894d6c
tree446ba1a83cf7783a988a6974bc89ad0269806cb2
parent3720fb9207da9dacaf095c082011c746ba149a92
Introduce new barectf configuration API and YAML configuration schema

This patch:

* Updates the configuration API (breaking change) to:

  * Match, more or less, Babeltrace 2's terminology.
  * Be more clear and consistent.
  * Prepare for CTF 2.

* Adds support for a new type of YAML configuration to match the updated
  configuration API.

  Internally, the new schema is named "v3" as it will be barectf 3's
  configuration format. The (now) old schema is named "v2".

* Updates all the existing code to deal with the updated configuration
  API.

I admit that this is a very big change, but it was too arduous to split
in various patches. This message explains what changes and why.

Configuration API changes (metadata)
====================================
barectf 2's metadata API has existed for five years now.

During those five years, I had the chance to work on Babeltrace 2,
CTF 2, and LTTng, and polished CTF's concepts, type relations, and
terminology.

The main goal of this patch is, as much as possible, to make barectf's
configuration API match what was done in Babeltrace 2's trace IR API [1]
at the metadata level.

A few examples:

* All metadata objects are "types" (classes in Babeltrace 2): field
  type, clock type, event type, stream type, and so on.

* A signed enumeration field type inherits an enumeration field type
  (which inherits an integer field type) and a signed integer field
  type.

* Integer and string field types have no encoding property.

  If we need them, we can introduce text array field types in the
  future.

  A string field type has a fixed UTF-8 (a superset of ASCII) encoding.

With this patch, an integer field type doesn't have any property
mapping. Instead, when you create a stream type, you can specify a
default clock type: the event time and packet beginning/end time members
refer to this default clock type in the generated TSDL metadata stream
so that each stream has an instance of it.

One other important change is that, with this patch, you cannot specify:

* The packet header field type of a trace type.
* The packet context field type of a stream type.
* The event header field type of a stream type.

I believe it was an error to let the user control those structure field
types as, fundamentally, they are "format" field types (reserved by
CTF).

As of this patch, you can enable/disable trace type and stream type
features which eventually translate to the automatic creation of the
field types listed above. For example, the "discarded events counter
field type" feature of a stream type controls whether or not the packets
of its instances (streams) contain a discarded events counter field. You
can either:

* Disable the feature (`None`).

* Enable the feature with a default field type (`DEFAULT_FIELD_TYPE`).

* Enable the feature with a custom field type
  (`UnsignedIntegerFieldType` instance).

The packet context field type is a bit of an exception here as it can
contain both format (total size, content size, beginning/end times, and
the rest) and user members. As such, when you create a stream type, you
can specify extra packet context field type members.

This feature approach hides all the reserved CTF member names (`id`,
`magic`, `uuid`, `timestamp_begin`, and the rest): barectf deals with
this internally. There are sane defaults, for example:

* The "magic" and "stream type ID" trace type features are enabled by
  default.

* If, when you create a stream type, you specify a default clock type
  and default features, then the event time and packet beginning/end
  times features are enabled.

All the configuration names are in `config.py` (removing `metadata.py`).

The big picture is:

* A configuration has a trace and options (prefixes and other generation
  options).

* A trace has an environment (think TSDL environment) and a type.

* A trace type has a default byte order, a UUID, features, and one or
  more stream types.

* A stream type has an ID, a name, an default clock type,
  features, extra packet context field type members, a common event
  context field type, and one or more event types.

* A clock type has a name, a frequency, a UUID, a description, a
  precision, an offset, and whether or not its origin is the Unix epoch.

* An event type has an ID, a name, a log level, and specific context and
  payload field types.

* A field type (abstract) has an alignment.

* A bit array field type (abstract) adds the size (bits) and byte order
  properties to a field type.

* An integer field type adds the preferred display base properties to a
  bit array field type.

* An enumeration field type adds the mappings property to an integer
  field type.

* A real field type is a bit array field type.

  The only valid sizes are 32 (single-precision) and 64
  (double-precision).

* An array field type (abstract) adds element field type property to a
  field type.

* A static array field type adds the length property to an array field
  type.

  This field type is only used for the "UUID field type" trace type
  feature.

* A structure field type has named members.

  Each member has a field type.

  In the future (CTF 2), a structure field type member could also
  contain custom user attributes.

New YAML configuration schema
=============================
The barectf 3 YAML configuration format mirrors the new configuration
API, with some sugar to make it easier to write a YAML configuration
file.

The most significant changes are:

* There's no configuration version property.

  Starting from barectf 3, a barectf YAML configuration node is a map
  with the YAML tag [2] `tag:barectf.org,2020/3/config`. Consequently, a
  barectf 3 YAML configuration file will typically start like this:

      %YAML 1.2
      --- !<tag:barectf.org,2020/3/config>

  As you can see, the barectf major version is encoded within the tag.
  The major version is enough: minor bumps of barectf 3 will only add
  features without breaking the schema.

  Only the configuration node needs an explicit tag: all the nodes under
  it have implicit tags according to the schema. This top-level tag
  makes it possible to integrate a barectf 3 configuration node within
  another YAML document, if this ever becomes a use case.

* The terminology, the property names, and, in general, the object
  layouts, are the same as with the configuration API.

* There are two ways to specify prefixes:

  Single prefix:
      Use `PREFIX_` for C identifiers, where `PREFIX` is the single
      prefix, and `PREFIX` for file names.

      For example, with

          prefix: hello

      identifiers start with `hello_` and file names with `hello`.

  Explicit prefixes:
      Specify the exact prefixes to be used for C identifiers and file
      names.

      For example, with

          prefix:
            identifier: lol_
            file-name: meow

      identifiers start with `lol_` and file names with `meow`.

* For the trace type and stream types, specify features in the
  `$features` property.

  Example:

      $features:
        magic-field-type: true
        uuid-field-type: false
        stream-type-id-field-type:
          class: unsigned-int
          size: 8
          byte-order: le

  A field type feature can be one of:

  True:
      Use the default field type.

  False:
      Disable the feature.

  Field type node:
      Use a specific field type.

* The only way to make a stream type the default stream type is with its
  `$is-default` property.

  Example:

      my_stream:
        $is-default: true

  Only one stream type can have this property set to true.

* Specify field type aliases with any order, whatever the dependencies.

  Example:

      $field-type-aliases:
        hello:
          $inherit: meow
          alignment: 32
        meow:
          class: signed-int
          size: 32

* An enumeration field type is an integer field type; there's no concept
  of "value field type" anymore.

  Example:

      class: unsigned-enum
      size: 32
      byte-order: le
      mappings:
        # ...

* An enumeration field type's `mappings` property is a map of labels to
  lists of integer ranges.

  The order of individual mappings is not important.

  An integer range is either a single integer or a pair of integers
  (lower and upper).

  Example:

      class: unsigned-enum
      size: 32
      mappings:
        HOLA: [2]
        MEOW:
          - 23
          - [4, 17]
        ROCK:
          - [1000, 2000]
          - [3000, 4000]
          - [5000, 6000]

* A real field type is a bit array field type.

  Example (single-precision):

      class: real
      size: 32

* Specify the members of a structure field type like a YAML ordered
  map [3], without having to specify the `tag:yaml.org,2002:omap`
  tag.

  This fixes a "bug" which exists since barectf 2.0: a YAML map is not
  ordered per se; as such, the members of a structure field type cannot
  be a simple map. It works in barectf 2 because PyYAML parses the map
  entries in order, but there's no requirement to do so.

  Example:

      class: struct
      members:
        - sup:
            field-type: uint32
        - meow:
            field-type:
              class: string
        - bob:
            field-type:
              $inherit: double
              byte-order: be

  It might seem silly to specify `field-type` for each member, but CTF 2
  might bring user attributes for individual structure field type
  members, so barectf 3 will be ready. For example:

      class: struct
      members:
        - sup:
            field-type: uint32
        - meow:
            field-type:
              class: string
            user-attributes:
              'https://example.com/ns/ctf':
                type: user-name
                color: blue
        - bob:
            field-type:
              $inherit: double
              byte-order: be

Internally, barectf detects the YAML configuration file's version. If
it's a barectf 2 configuration node, it converts it to a barectf 3
configuration node, and then it decodes it, as such:

    barectf 2 YAML    barectf 3 YAML
    config. node   -> config node.   -> barectf config. object (API)

What you get with `--dump-config` occurs after step 1.

barectf 3 will remain fully backward compatible regarding barectf 2 YAML
configurations and the CLI. This is why the `barectf/include` directory
contains inclusion files for both barectf 2 and 3: the CLI selects the
appropriate directory based on the detected version.

`barectf/schemas` also contains JSON schemas for both versions of the
configuration, as well as common schemas.

Configuration API changes (functions)
=====================================
The configuration API functions are now:

configuration_file_major_version():
    Returns the major version (2 or 3) of a YAML configuration file-like
    object.

effective_configuration_file():
    Returns the effective configuration file (YAML string) using a
    file-like object and a list of inclusion directories.

    An effective configuration file is a file where:

    * All field type nodes are expanded (aliases and inheritance).

    * Log level aliases are substituted for their integral equivalents.

    * Some properties are normalized.

      For example, the `be` byte order becomes `big-endian` (both are
      valid). Also, null properties are simply removed.

configuration_from_file():
    Returns a `barectf.Configuration` object from a YAML configuration
    file-like object.

Code generation API
===================
This patch also brings changes to the code generation API.

Now you create a `barectf.CodeGenerator` object, passing a barectf
configuration.

With such a code generator object, call its generate_c_headers(),
generate_c_sources(), and generate_metadata_stream() methods to generate
code.

generate_c_headers() and generate_c_sources() return lists of
`barectf.gen._GeneratedFile` objects. Such an object contains the name
of the file and its (UTF-8 text) contents.

generate_metadata_stream() returns a single `barectf.gen._GeneratedFile`
object.

`__init__.py`
=============
The whole barectf API is now available directly under its package.

`__init__.py` picks what needs to be exposed from its different modules.

Tests
=====
Tests which were directly under `tests/config` are moved to
`tests/config/2` as we could add barectf 3 configuration tests in the
future.

[1]: https://babeltrace.org/docs/v2.0/libbabeltrace2/group__api-tir.html
[2]: https://yaml.org/spec/1.2/spec.html#id2761292

Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
450 files changed:
barectf/__init__.py
barectf/cli.py
barectf/codegen.py
barectf/config.py
barectf/config_parse.py
barectf/config_parse_common.py [new file with mode: 0644]
barectf/config_parse_v2.py [new file with mode: 0644]
barectf/config_parse_v3.py [new file with mode: 0644]
barectf/gen.py
barectf/include/2/lttng-ust-log-levels.yaml [new file with mode: 0644]
barectf/include/2/stdfloat.yaml [new file with mode: 0644]
barectf/include/2/stdint.yaml [new file with mode: 0644]
barectf/include/2/stdmisc.yaml [new file with mode: 0644]
barectf/include/2/trace-basic.yaml [new file with mode: 0644]
barectf/include/3/lttng-ust-log-levels.yaml [new file with mode: 0644]
barectf/include/3/stdint.yaml [new file with mode: 0644]
barectf/include/3/stdmisc.yaml [new file with mode: 0644]
barectf/include/3/stdreal.yaml [new file with mode: 0644]
barectf/include/lttng-ust-log-levels.yaml [deleted file]
barectf/include/stdfloat.yaml [deleted file]
barectf/include/stdint.yaml [deleted file]
barectf/include/stdmisc.yaml [deleted file]
barectf/include/trace-basic.yaml [deleted file]
barectf/metadata.py [deleted file]
barectf/schemas/2/config/byte-order-prop.yaml [deleted file]
barectf/schemas/2/config/clock-pre-include.yaml [deleted file]
barectf/schemas/2/config/clock-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/2/config/config-min.yaml [new file with mode: 0644]
barectf/schemas/2/config/config-pre-field-type-expansion.yaml
barectf/schemas/2/config/config-pre-log-level-expansion.yaml [deleted file]
barectf/schemas/2/config/config.yaml
barectf/schemas/2/config/event-pre-include.yaml [deleted file]
barectf/schemas/2/config/event-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/2/config/field-type.yaml
barectf/schemas/2/config/metadata-pre-include.yaml
barectf/schemas/2/config/stream-pre-include.yaml [deleted file]
barectf/schemas/2/config/stream-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/2/config/trace-pre-include.yaml [deleted file]
barectf/schemas/2/config/trace-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/2/config/uuid-prop.yaml [deleted file]
barectf/schemas/3/config/clock-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/3/config/config-pre-field-type-expansion.yaml [new file with mode: 0644]
barectf/schemas/3/config/config-pre-include.yaml [new file with mode: 0644]
barectf/schemas/3/config/config-pre-log-level-alias-sub.yaml [new file with mode: 0644]
barectf/schemas/3/config/config.yaml [new file with mode: 0644]
barectf/schemas/3/config/event-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/3/config/field-type.yaml [new file with mode: 0644]
barectf/schemas/3/config/include-prop.yaml [new file with mode: 0644]
barectf/schemas/3/config/stream-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/3/config/trace-pre-include.yaml [new file with mode: 0644]
barectf/schemas/3/config/trace-type-pre-include.yaml [new file with mode: 0644]
barectf/schemas/common/config/common.yaml [new file with mode: 0644]
barectf/schemas/config/config-min.yaml [deleted file]
barectf/tsdl182gen.py
barectf/version.py [new file with mode: 0644]
tests/config/.gitignore
tests/config/2/fail/clock/absolute-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/description-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/ec-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/ec-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/clock/fail.bats [new file with mode: 0644]
tests/config/2/fail/clock/freq-0.yaml [new file with mode: 0644]
tests/config/2/fail/clock/freq-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/freq-neg.yaml [new file with mode: 0644]
tests/config/2/fail/clock/offset-cycles-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/offset-cycles-neg.yaml [new file with mode: 0644]
tests/config/2/fail/clock/offset-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/offset-seconds-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/offset-seconds-neg.yaml [new file with mode: 0644]
tests/config/2/fail/clock/offset-unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/clock/rct-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/clock/uuid-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/clock/uuid-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/config/fail.bats [new file with mode: 0644]
tests/config/2/fail/config/metadata-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/config/metadata-no.yaml [new file with mode: 0644]
tests/config/2/fail/config/options-gen-default-stream-def-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/config/options-gen-prefix-def-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/config/options-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/config/options-unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/config/prefix-invalid-identifier.yaml [new file with mode: 0644]
tests/config/2/fail/config/prefix-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/config/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/config/version-invalid-19.yaml [new file with mode: 0644]
tests/config/2/fail/config/version-invalid-23.yaml [new file with mode: 0644]
tests/config/2/fail/config/version-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/config/version-no.yaml [new file with mode: 0644]
tests/config/2/fail/event/ct-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/event/ct-not-struct.yaml [new file with mode: 0644]
tests/config/2/fail/event/fail.bats [new file with mode: 0644]
tests/config/2/fail/event/ll-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/event/ll-non-existing.yaml [new file with mode: 0644]
tests/config/2/fail/event/no-fields-at-all.yaml [new file with mode: 0644]
tests/config/2/fail/event/pt-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/event/pt-not-struct.yaml [new file with mode: 0644]
tests/config/2/fail/event/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/include/cycle-sym.yaml [new file with mode: 0644]
tests/config/2/fail/include/cycle.yaml [new file with mode: 0644]
tests/config/2/fail/include/fail.bats [new file with mode: 0644]
tests/config/2/fail/include/file-not-found-abs.yaml [new file with mode: 0644]
tests/config/2/fail/include/file-not-found-in-array.yaml [new file with mode: 0644]
tests/config/2/fail/include/file-not-found-recursive.yaml [new file with mode: 0644]
tests/config/2/fail/include/file-not-found.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-empty.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-inc-not-found.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-recursive-sym1.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-recursive-sym2.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-recursive1.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-recursive2.yaml [new file with mode: 0644]
tests/config/2/fail/include/inc-recursive3.yaml [new file with mode: 0644]
tests/config/2/fail/include/include-include-replace.yaml [new file with mode: 0644]
tests/config/2/fail/include/invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/include/replace-file-not-found-in-array.yaml [new file with mode: 0644]
tests/config/2/fail/include/replace-file-not-found.yaml [new file with mode: 0644]
tests/config/2/fail/stream/default-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/stream/ect-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/stream/ect-not-struct.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-id-no-multiple-events.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-id-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-id-too-small.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-id-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-not-struct.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-timestamp-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-timestamp-wrong-pm.yaml [new file with mode: 0644]
tests/config/2/fail/stream/eht-timestamp-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/events-empty.yaml [new file with mode: 0644]
tests/config/2/fail/stream/events-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/stream/events-key-invalid-identifier.yaml [new file with mode: 0644]
tests/config/2/fail/stream/events-no.yaml [new file with mode: 0644]
tests/config/2/fail/stream/fail.bats [new file with mode: 0644]
tests/config/2/fail/stream/pct-cs-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-cs-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-cs-yes-ps-no.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-ed-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-ed-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-no.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-not-struct.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-ps-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-ps-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-ps-yes-cs-no.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-tb-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-tb-te-different-clocks.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-tb-wrong-pm.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-tb-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-tb-yes-te-no.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-te-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-te-wrong-pm.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-te-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/stream/pct-te-yes-tb-no.yaml [new file with mode: 0644]
tests/config/2/fail/stream/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/trace/bo-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/trace/bo-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/trace/bo-no.yaml [new file with mode: 0644]
tests/config/2/fail/trace/fail.bats [new file with mode: 0644]
tests/config/2/fail/trace/ph-magic-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-magic-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-magic-wrong-size.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-not-struct.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-streamid-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-streamid-too-small.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-streamid-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-uuid-et-not-int.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-uuid-et-wrong-align.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-uuid-et-wrong-signed.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-uuid-et-wrong-size.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-uuid-not-array.yaml [new file with mode: 0644]
tests/config/2/fail/trace/ph-uuid-wrong-length.yaml [new file with mode: 0644]
tests/config/2/fail/trace/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/trace/uuid-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/trace/uuid-invalid-uuid.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/fail.bats [new file with mode: 0644]
tests/config/2/fail/type-enum/members-el-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-el-member-label-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-el-member-unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-el-member-value-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-el-member-value-outside-range-signed.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-el-member-value-outside-range-unsigned.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-empty.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-no.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/members-overlap.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/vt-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-enum/vt-no.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/align-0.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/align-3.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/align-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/bo-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/bo-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/fail.bats [new file with mode: 0644]
tests/config/2/fail/type-float/size-exp-mant-wrong-sum.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/size-exp-no.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/size-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/size-mant-no.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/size-no.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/size-unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type-float/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/align-0.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/align-3.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/align-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/base-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/base-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/bo-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/bo-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/fail.bats [new file with mode: 0644]
tests/config/2/fail/type-int/pm-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/pm-property-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/pm-type-invalid.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/pm-unknown-clock.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/signed-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/size-0.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/size-65.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/size-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/size-no.yaml [new file with mode: 0644]
tests/config/2/fail/type-int/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type-string/fail.bats [new file with mode: 0644]
tests/config/2/fail/type-string/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type-struct/fail.bats [new file with mode: 0644]
tests/config/2/fail/type-struct/fields-field-invalid-identifier.yaml [new file with mode: 0644]
tests/config/2/fail/type-struct/fields-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-struct/ma-0.yaml [new file with mode: 0644]
tests/config/2/fail/type-struct/ma-3.yaml [new file with mode: 0644]
tests/config/2/fail/type-struct/ma-invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type-struct/unknown-prop.yaml [new file with mode: 0644]
tests/config/2/fail/type/fail.bats [new file with mode: 0644]
tests/config/2/fail/type/inherit-forward.yaml [new file with mode: 0644]
tests/config/2/fail/type/inherit-unknown.yaml [new file with mode: 0644]
tests/config/2/fail/type/invalid-type.yaml [new file with mode: 0644]
tests/config/2/fail/type/no-class.yaml [new file with mode: 0644]
tests/config/2/fail/yaml/fail.bats [new file with mode: 0644]
tests/config/2/fail/yaml/invalid.yaml [new file with mode: 0644]
tests/config/2/pass/everything/config.yaml [new file with mode: 0644]
tests/config/2/pass/everything/inc-clock.yaml [new file with mode: 0644]
tests/config/2/pass/everything/inc-event.yaml [new file with mode: 0644]
tests/config/2/pass/everything/inc-metadata.yaml [new file with mode: 0644]
tests/config/2/pass/everything/inc-stream.yaml [new file with mode: 0644]
tests/config/2/pass/everything/inc-trace.yaml [new file with mode: 0644]
tests/config/2/pass/everything/pass.bats [new file with mode: 0644]
tests/config/common.bash
tests/config/fail/clock/absolute-invalid-type.yaml [deleted file]
tests/config/fail/clock/description-invalid-type.yaml [deleted file]
tests/config/fail/clock/ec-invalid-type.yaml [deleted file]
tests/config/fail/clock/ec-invalid.yaml [deleted file]
tests/config/fail/clock/fail.bats [deleted file]
tests/config/fail/clock/freq-0.yaml [deleted file]
tests/config/fail/clock/freq-invalid-type.yaml [deleted file]
tests/config/fail/clock/freq-neg.yaml [deleted file]
tests/config/fail/clock/offset-cycles-invalid-type.yaml [deleted file]
tests/config/fail/clock/offset-cycles-neg.yaml [deleted file]
tests/config/fail/clock/offset-invalid-type.yaml [deleted file]
tests/config/fail/clock/offset-seconds-invalid-type.yaml [deleted file]
tests/config/fail/clock/offset-seconds-neg.yaml [deleted file]
tests/config/fail/clock/offset-unknown-prop.yaml [deleted file]
tests/config/fail/clock/rct-invalid-type.yaml [deleted file]
tests/config/fail/clock/unknown-prop.yaml [deleted file]
tests/config/fail/clock/uuid-invalid-type.yaml [deleted file]
tests/config/fail/clock/uuid-invalid.yaml [deleted file]
tests/config/fail/config/fail.bats [deleted file]
tests/config/fail/config/metadata-invalid-type.yaml [deleted file]
tests/config/fail/config/metadata-no.yaml [deleted file]
tests/config/fail/config/options-gen-default-stream-def-invalid-type.yaml [deleted file]
tests/config/fail/config/options-gen-prefix-def-invalid-type.yaml [deleted file]
tests/config/fail/config/options-invalid-type.yaml [deleted file]
tests/config/fail/config/options-unknown-prop.yaml [deleted file]
tests/config/fail/config/prefix-invalid-identifier.yaml [deleted file]
tests/config/fail/config/prefix-invalid-type.yaml [deleted file]
tests/config/fail/config/unknown-prop.yaml [deleted file]
tests/config/fail/config/version-invalid-19.yaml [deleted file]
tests/config/fail/config/version-invalid-23.yaml [deleted file]
tests/config/fail/config/version-invalid-type.yaml [deleted file]
tests/config/fail/config/version-no.yaml [deleted file]
tests/config/fail/event/ct-invalid-type.yaml [deleted file]
tests/config/fail/event/ct-not-struct.yaml [deleted file]
tests/config/fail/event/fail.bats [deleted file]
tests/config/fail/event/ll-invalid-type.yaml [deleted file]
tests/config/fail/event/ll-non-existing.yaml [deleted file]
tests/config/fail/event/no-fields-at-all.yaml [deleted file]
tests/config/fail/event/pt-invalid-type.yaml [deleted file]
tests/config/fail/event/pt-not-struct.yaml [deleted file]
tests/config/fail/event/unknown-prop.yaml [deleted file]
tests/config/fail/include/cycle-sym.yaml [deleted file]
tests/config/fail/include/cycle.yaml [deleted file]
tests/config/fail/include/fail.bats [deleted file]
tests/config/fail/include/file-not-found-abs.yaml [deleted file]
tests/config/fail/include/file-not-found-in-array.yaml [deleted file]
tests/config/fail/include/file-not-found-recursive.yaml [deleted file]
tests/config/fail/include/file-not-found.yaml [deleted file]
tests/config/fail/include/inc-empty.yaml [deleted file]
tests/config/fail/include/inc-inc-not-found.yaml [deleted file]
tests/config/fail/include/inc-recursive-sym1.yaml [deleted file]
tests/config/fail/include/inc-recursive-sym2.yaml [deleted file]
tests/config/fail/include/inc-recursive1.yaml [deleted file]
tests/config/fail/include/inc-recursive2.yaml [deleted file]
tests/config/fail/include/inc-recursive3.yaml [deleted file]
tests/config/fail/include/include-include-replace.yaml [deleted file]
tests/config/fail/include/invalid-type.yaml [deleted file]
tests/config/fail/include/replace-file-not-found-in-array.yaml [deleted file]
tests/config/fail/include/replace-file-not-found.yaml [deleted file]
tests/config/fail/metadata/clocks-invalid-type.yaml [deleted file]
tests/config/fail/metadata/clocks-key-invalid-identifier.yaml [deleted file]
tests/config/fail/metadata/default-stream-invalid-type.yaml [deleted file]
tests/config/fail/metadata/default-stream-stream-default-duplicate.yaml [deleted file]
tests/config/fail/metadata/default-stream-unknown-stream.yaml [deleted file]
tests/config/fail/metadata/env-invalid-type.yaml [deleted file]
tests/config/fail/metadata/env-key-invalid-identifier.yaml [deleted file]
tests/config/fail/metadata/env-value-invalid-type.yaml [deleted file]
tests/config/fail/metadata/fail.bats [deleted file]
tests/config/fail/metadata/ll-invalid-type.yaml [deleted file]
tests/config/fail/metadata/ll-value-invalid-type.yaml [deleted file]
tests/config/fail/metadata/multiple-streams-trace-ph-no-stream-id.yaml [deleted file]
tests/config/fail/metadata/streams-empty.yaml [deleted file]
tests/config/fail/metadata/streams-invalid-type.yaml [deleted file]
tests/config/fail/metadata/streams-key-invalid-identifier.yaml [deleted file]
tests/config/fail/metadata/streams-no.yaml [deleted file]
tests/config/fail/metadata/ta-invalid-type.yaml [deleted file]
tests/config/fail/metadata/trace-empty.yaml [deleted file]
tests/config/fail/metadata/trace-invalid-type.yaml [deleted file]
tests/config/fail/metadata/trace-no.yaml [deleted file]
tests/config/fail/metadata/unknown-prop.yaml [deleted file]
tests/config/fail/stream/default-invalid-type.yaml [deleted file]
tests/config/fail/stream/ect-invalid-type.yaml [deleted file]
tests/config/fail/stream/ect-not-struct.yaml [deleted file]
tests/config/fail/stream/eht-id-no-multiple-events.yaml [deleted file]
tests/config/fail/stream/eht-id-not-int.yaml [deleted file]
tests/config/fail/stream/eht-id-too-small.yaml [deleted file]
tests/config/fail/stream/eht-id-wrong-signed.yaml [deleted file]
tests/config/fail/stream/eht-invalid-type.yaml [deleted file]
tests/config/fail/stream/eht-not-struct.yaml [deleted file]
tests/config/fail/stream/eht-timestamp-not-int.yaml [deleted file]
tests/config/fail/stream/eht-timestamp-wrong-pm.yaml [deleted file]
tests/config/fail/stream/eht-timestamp-wrong-signed.yaml [deleted file]
tests/config/fail/stream/events-empty.yaml [deleted file]
tests/config/fail/stream/events-invalid-type.yaml [deleted file]
tests/config/fail/stream/events-key-invalid-identifier.yaml [deleted file]
tests/config/fail/stream/events-no.yaml [deleted file]
tests/config/fail/stream/fail.bats [deleted file]
tests/config/fail/stream/pct-cs-gt-ps.yaml [deleted file]
tests/config/fail/stream/pct-cs-not-int.yaml [deleted file]
tests/config/fail/stream/pct-cs-wrong-signed.yaml [deleted file]
tests/config/fail/stream/pct-cs-yes-ps-no.yaml [deleted file]
tests/config/fail/stream/pct-ed-not-int.yaml [deleted file]
tests/config/fail/stream/pct-ed-wrong-signed.yaml [deleted file]
tests/config/fail/stream/pct-invalid-type.yaml [deleted file]
tests/config/fail/stream/pct-no.yaml [deleted file]
tests/config/fail/stream/pct-not-struct.yaml [deleted file]
tests/config/fail/stream/pct-ps-not-int.yaml [deleted file]
tests/config/fail/stream/pct-ps-wrong-signed.yaml [deleted file]
tests/config/fail/stream/pct-ps-yes-cs-no.yaml [deleted file]
tests/config/fail/stream/pct-tb-not-int.yaml [deleted file]
tests/config/fail/stream/pct-tb-te-different-clocks.yaml [deleted file]
tests/config/fail/stream/pct-tb-wrong-pm.yaml [deleted file]
tests/config/fail/stream/pct-tb-wrong-signed.yaml [deleted file]
tests/config/fail/stream/pct-tb-yes-te-no.yaml [deleted file]
tests/config/fail/stream/pct-te-not-int.yaml [deleted file]
tests/config/fail/stream/pct-te-wrong-pm.yaml [deleted file]
tests/config/fail/stream/pct-te-wrong-signed.yaml [deleted file]
tests/config/fail/stream/pct-te-yes-tb-no.yaml [deleted file]
tests/config/fail/stream/unknown-prop.yaml [deleted file]
tests/config/fail/trace/bo-invalid-type.yaml [deleted file]
tests/config/fail/trace/bo-invalid.yaml [deleted file]
tests/config/fail/trace/bo-no.yaml [deleted file]
tests/config/fail/trace/fail.bats [deleted file]
tests/config/fail/trace/ph-magic-not-int.yaml [deleted file]
tests/config/fail/trace/ph-magic-wrong-signed.yaml [deleted file]
tests/config/fail/trace/ph-magic-wrong-size.yaml [deleted file]
tests/config/fail/trace/ph-not-struct.yaml [deleted file]
tests/config/fail/trace/ph-streamid-not-int.yaml [deleted file]
tests/config/fail/trace/ph-streamid-too-small.yaml [deleted file]
tests/config/fail/trace/ph-streamid-wrong-signed.yaml [deleted file]
tests/config/fail/trace/ph-uuid-et-not-int.yaml [deleted file]
tests/config/fail/trace/ph-uuid-et-wrong-align.yaml [deleted file]
tests/config/fail/trace/ph-uuid-et-wrong-signed.yaml [deleted file]
tests/config/fail/trace/ph-uuid-et-wrong-size.yaml [deleted file]
tests/config/fail/trace/ph-uuid-not-array.yaml [deleted file]
tests/config/fail/trace/ph-uuid-wrong-length.yaml [deleted file]
tests/config/fail/trace/unknown-prop.yaml [deleted file]
tests/config/fail/trace/uuid-invalid-type.yaml [deleted file]
tests/config/fail/trace/uuid-invalid-uuid.yaml [deleted file]
tests/config/fail/type-enum/fail.bats [deleted file]
tests/config/fail/type-enum/members-el-invalid-type.yaml [deleted file]
tests/config/fail/type-enum/members-el-member-label-invalid-type.yaml [deleted file]
tests/config/fail/type-enum/members-el-member-unknown-prop.yaml [deleted file]
tests/config/fail/type-enum/members-el-member-value-invalid-type.yaml [deleted file]
tests/config/fail/type-enum/members-el-member-value-outside-range-signed.yaml [deleted file]
tests/config/fail/type-enum/members-el-member-value-outside-range-unsigned.yaml [deleted file]
tests/config/fail/type-enum/members-empty.yaml [deleted file]
tests/config/fail/type-enum/members-invalid-type.yaml [deleted file]
tests/config/fail/type-enum/members-no.yaml [deleted file]
tests/config/fail/type-enum/members-overlap.yaml [deleted file]
tests/config/fail/type-enum/unknown-prop.yaml [deleted file]
tests/config/fail/type-enum/vt-invalid-type.yaml [deleted file]
tests/config/fail/type-enum/vt-no.yaml [deleted file]
tests/config/fail/type-float/align-0.yaml [deleted file]
tests/config/fail/type-float/align-3.yaml [deleted file]
tests/config/fail/type-float/align-invalid-type.yaml [deleted file]
tests/config/fail/type-float/bo-invalid-type.yaml [deleted file]
tests/config/fail/type-float/bo-invalid.yaml [deleted file]
tests/config/fail/type-float/fail.bats [deleted file]
tests/config/fail/type-float/size-exp-mant-wrong-sum.yaml [deleted file]
tests/config/fail/type-float/size-exp-no.yaml [deleted file]
tests/config/fail/type-float/size-invalid-type.yaml [deleted file]
tests/config/fail/type-float/size-mant-no.yaml [deleted file]
tests/config/fail/type-float/size-no.yaml [deleted file]
tests/config/fail/type-float/size-unknown-prop.yaml [deleted file]
tests/config/fail/type-float/unknown-prop.yaml [deleted file]
tests/config/fail/type-int/align-0.yaml [deleted file]
tests/config/fail/type-int/align-3.yaml [deleted file]
tests/config/fail/type-int/align-invalid-type.yaml [deleted file]
tests/config/fail/type-int/base-invalid-type.yaml [deleted file]
tests/config/fail/type-int/base-invalid.yaml [deleted file]
tests/config/fail/type-int/bo-invalid-type.yaml [deleted file]
tests/config/fail/type-int/bo-invalid.yaml [deleted file]
tests/config/fail/type-int/fail.bats [deleted file]
tests/config/fail/type-int/pm-invalid-type.yaml [deleted file]
tests/config/fail/type-int/pm-property-invalid.yaml [deleted file]
tests/config/fail/type-int/pm-type-invalid.yaml [deleted file]
tests/config/fail/type-int/pm-unknown-clock.yaml [deleted file]
tests/config/fail/type-int/signed-invalid-type.yaml [deleted file]
tests/config/fail/type-int/size-0.yaml [deleted file]
tests/config/fail/type-int/size-65.yaml [deleted file]
tests/config/fail/type-int/size-invalid-type.yaml [deleted file]
tests/config/fail/type-int/size-no.yaml [deleted file]
tests/config/fail/type-int/unknown-prop.yaml [deleted file]
tests/config/fail/type-string/fail.bats [deleted file]
tests/config/fail/type-string/unknown-prop.yaml [deleted file]
tests/config/fail/type-struct/fail.bats [deleted file]
tests/config/fail/type-struct/fields-field-invalid-identifier.yaml [deleted file]
tests/config/fail/type-struct/fields-invalid-type.yaml [deleted file]
tests/config/fail/type-struct/ma-0.yaml [deleted file]
tests/config/fail/type-struct/ma-3.yaml [deleted file]
tests/config/fail/type-struct/ma-invalid-type.yaml [deleted file]
tests/config/fail/type-struct/unknown-prop.yaml [deleted file]
tests/config/fail/type/fail.bats [deleted file]
tests/config/fail/type/inherit-forward.yaml [deleted file]
tests/config/fail/type/inherit-unknown.yaml [deleted file]
tests/config/fail/type/invalid-type.yaml [deleted file]
tests/config/fail/type/no-class.yaml [deleted file]
tests/config/fail/yaml/fail.bats [deleted file]
tests/config/fail/yaml/invalid.yaml [deleted file]
tests/config/pass/everything/config.yaml [deleted file]
tests/config/pass/everything/inc-clock.yaml [deleted file]
tests/config/pass/everything/inc-event.yaml [deleted file]
tests/config/pass/everything/inc-metadata.yaml [deleted file]
tests/config/pass/everything/inc-stream.yaml [deleted file]
tests/config/pass/everything/inc-trace.yaml [deleted file]
tests/config/pass/everything/pass.bats [deleted file]
tests/test.bash
This page took 0.053247 seconds and 4 git commands to generate.