Jérémie Galarneau [Tue, 30 Oct 2018 23:19:14 +0000 (00:19 +0100)]
Fix: invalid alignment of enumeration fields
Issue
---
According to the CTF specification, the alignment of an enumeration is
that of its container integer field type. However, ctf-ir does not
forward the alignment of an enumeration field type's alignment in
bt_field_type_get_alignment().
This causes babeltrace to fail to read traces produced by lttng-ust
following a fix that causes it to generate extended event headers. The
problem is observed on ARM platforms since lttng-ust will produce
a layout that does not result in unaligned memory accesses.
Solution
---
The alignment of the enumeration field type's container is sampled
when the enumeration field type is frozen.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 1 May 2018 18:30:02 +0000 (14:30 -0400)]
Add git version string
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jonathan Rajotte [Fri, 24 Nov 2017 20:48:31 +0000 (15:48 -0500)]
Fix live-comm: merge TCP socket write-write sequence in a single write
The live protocol implementation is often sending content
on TCP sockets in two separate writes. One to send a command header,
and the second one sending the command's payload. This was presumably
done under the assumption that it would not result in two separate
TCP packets being sent on the network (or that it would not matter).
Delayed ACK-induced delays were observed [1] on the second write of the
"write header, write payload" sequence and result in problematic
latency build-ups for live clients connected to moderately/highly
active sessions.
Fundamentally, this problem arises due to the combination of Nagle's
algorithm and the delayed ACK mechanism which make write-write-read
sequences on TCP sockets problematic as near-constant latency is
expected when clients can keep-up with the event production rate.
In such a write-write-read sequence, the second write is held up until
the first write is acknowledged (TCP ACK). The solution implemented
by this patch bundles the writes into a single one [2].
[1] https://github.com/tbricks/wireshark-lttng-plugin
Basic Wireshark dissector for lttng-live by Anto Smyk from Itiviti
[2] https://lists.freebsd.org/pipermail/freebsd-net/2006-January/009527.html
Reported-by: Anton Smyk <anton.smyk@itiviti.com>
Signed-off-by: Jonathan Rajotte <jonathan.rajotte-julien@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Fri, 18 May 2018 17:58:31 +0000 (13:58 -0400)]
Fix: wrong type specifier used with long argument
clang reports "format specifies type 'long long' but the argument has
type 'long' [-Wformat]" which is correct. retry_duration has
changed types from long long to long in the previous commit.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 17 May 2018 19:35:17 +0000 (15:35 -0400)]
Fix: POPT_ARG_LONGLONG does not exist in popt 1.13
The retry duration parameter is currently declared as a long long,
which popt 1.13 does not support. The support for that type was only
added in popt 1.14.
Using POPT_ARG_LONG instead of the 'long long' variant makes no real
difference in this case (or at least, not enough to justify bumping
the minimal popt version).
This fixes a build failure that was reported on Red Hat 7 where
1.13 is the default version.
Reported-by: Abderrahmane Benbachir <abenbach@ciena.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 26 Mar 2018 15:47:44 +0000 (11:47 -0400)]
Fix: Use bash for all test scripts
We already use bash in most test scripts shebang and the sh binary on
Solaris 10 doesn't like some of our "modern" scripts syntax.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 30 Jan 2018 15:51:59 +0000 (10:51 -0500)]
Add missing clock.h compatiblity header under ctf-ir
Babeltrace 1.5 exposes a clock.h header under ctf-ir which
is equivalent to what is now ctf-writer/clock.h.
This commit adds a compatiblity header which includes
ctf-writer/clock.h in order to maintain the backward
compatibility with the 1.x API.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 29 Nov 2017 17:02:29 +0000 (12:02 -0500)]
babeltrace-filter.lttng-utils.debug-info(7): fix LTTng prerequisites
Add:
* Enable LTTng-UST state dump events.
* Enable LTTng-UST dynamic linker tracing helper events.
Convert some prose to procedures.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sat, 2 Dec 2017 13:41:15 +0000 (14:41 +0100)]
bt2 tests: add unit tests for __str__ implementation of Fields
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 26 Nov 2017 10:46:19 +0000 (11:46 +0100)]
Implement __repr__ instead of __str__ for python Value
Implement the __repr__ method for the various Value classes
as it provides a fallback for __str__ and provides both a
non-ambiguous and human-readable string representation of those
objects.
The Array and Map values' implementation is made more compact by
using list comprehensions, as is done for the Fields API.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 20:39:29 +0000 (15:39 -0500)]
Return 'Unset' on unset field __repr__()
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 19:43:04 +0000 (14:43 -0500)]
Implement __repr__ for _StringField
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 19:41:25 +0000 (14:41 -0500)]
Implement __repr__ instead of __str__ for _NumericField
__repr__ provides a generic fallback for __str__ and, in the
case of IntegerFields the representation is both human readable
and unambiguous.
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 16:57:26 +0000 (11:57 -0500)]
Implement __repr__ for _ArraySequenceField
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 16:57:02 +0000 (11:57 -0500)]
Implement __repr__ for _VariantField
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 16:56:46 +0000 (11:56 -0500)]
Implement __repr__ for _StructureField
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 23 Nov 2017 16:56:23 +0000 (11:56 -0500)]
Implement __repr__ for _EnumerationField
Reviewed-by: Philippe Proulx <eeppeliteloop@gmail.com>
Reviewed-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Francis Deslauriers [Tue, 21 Nov 2017 19:29:35 +0000 (14:29 -0500)]
Fix: typo using bt2.ClockClassOffset constructor
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 9 Nov 2017 17:38:40 +0000 (12:38 -0500)]
Add bindings/python/babeltrace/test_ctf_writer.py test
This test ensures that we can use the legacy Python bindings to create a
CTF trace without caring about timestamp fields (they should be
automatically updated from the stream's class's clock value).
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 9 Nov 2017 17:35:27 +0000 (12:35 -0500)]
Fix: stream.c: autopopulate timestamp fields even when not mapped to CC
To remain backward compatible with Babeltrace 1's CTF writer,
automatically set the event header `timestamp` fields (when appending
the event) and packet context `timestamp_begin` and `timestamp_end`
fields (on stream flush) when the stream's class has a registered CTF
writer clock, even if the field's types are not mapped to a clock class.
If the field is mapped to a clock class, then it is automatically set
when this mapped clock class is the same as the stream's class's clock's
class.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 9 Nov 2017 16:24:30 +0000 (11:24 -0500)]
Fix: writer.py: make `uint64_ft` a 64-bit (instead of 32-bit) int FT
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 13 Nov 2017 20:17:47 +0000 (15:17 -0500)]
Fix: Replace bt_timegm with a thread-safe implementation
The current compat wrapper for timegm is not thread-safe, it modifies
the process wide time settings with tzset. This was not a problem in bt1
as it was only used in the cli binary but it is now used in the trimmer
plugin which is used by the library.
Replace the wrapper with a basic implementation and add more tests.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 13 Nov 2017 23:23:56 +0000 (18:23 -0500)]
Typo: informations -> information
Information is an uncountable noun in english.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 13 Nov 2017 23:22:42 +0000 (18:22 -0500)]
Typo: paramater -> parameter
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 12 Oct 2017 21:15:25 +0000 (17:15 -0400)]
Typo: priorty -> priority
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 8 Nov 2017 15:55:16 +0000 (10:55 -0500)]
Fix: uninitialized variable may be used warning
gcc 7.2 warns of potentially uninitialized variables being
used as the callers rely on output parameters being
initialized by the callees on error. This behaviour is not
specified as part of the API so relying on this is iffy.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 7 Nov 2017 19:57:32 +0000 (14:57 -0500)]
cli: support --output opt. for -o ctf-metadata and -i lttng-live
Babeltrace 1 supports the -w/--output option to print the metadata text
or the available LTTng live sessions to a file instead of the standard
output.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 2 Nov 2017 17:37:47 +0000 (13:37 -0400)]
Fix: doc/man/Makefile.am: use appropriate variable for sources
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 2 Nov 2017 17:20:18 +0000 (13:20 -0400)]
Add basic flt.lttng-utils.debug-info tests
This new test uses the bt2 Python bindings to test the
flt.lttng-utils.debug-info component class. The test opens the
tests/debug-info-data/trace trace and makes it pass through a
flt.lttng-utils.debug-info component to inject debugging information.
The test then checks that specific debugging information fields in
specific event notifications have the expected values.
This patch also removes the old tests/cli/test_debug_info.in test which
is not even enabled and relied on the output of sink.text.pretty.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 2 Nov 2017 17:14:54 +0000 (13:14 -0400)]
bt2: TraceCollectionNotificationIterator: support custom filter CCs
This patch adds an optional `filter_component_specs` parameter to
TraceCollectionNotificationIterator's constructor so that the trace
collection notification iterator supports a chain of custom filter
components. The filter chain is connected to the implicit muxer's output
port or to the implicit trimmer's output port if it exists.
This is useful to add debugging information, for example:
src = bt2.ComponentSpec('ctf', 'fs', trace_path)
flt = bt2.ComponentSpec('lttng-utils', 'debug-info')
it = bt2.TraceCollectionNotificationIterator(src, flt)
for notif in it:
...
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 2 Nov 2017 15:30:38 +0000 (11:30 -0400)]
Fix: debug-info: remove `_` prefix when finding fields by name
The CTF plugin source components now remove the `_` prefix from field
names, so that other downstream components should not expect it as it's
an escaping mechanism in CTF 1.8.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 5 Oct 2017 21:02:15 +0000 (17:02 -0400)]
Remove doc/API.txt (Babeltrace 1.x API documentation)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 28 Feb 2017 19:41:57 +0000 (14:41 -0500)]
Add modern Babeltrace man pages
The configuration to generate man pages from their AsciiDoc sources is
the same as the LTTng-tools setup, although doc/man/README.adoc is
specific to the Babeltrace project.
See doc/man/README.adoc for more details.
This patch also removes legacy documentation files of which the content
is now in the new man pages.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 5 Oct 2017 18:05:42 +0000 (14:05 -0400)]
Remove `PLUGIN` from component class log level environment variables
For example, `BABELTRACE_PLUGIN_CTF_FS_SRC_LOG_LEVEL` becomes
`BABELTRACE_SRC_CTF_FS_LOG_LEVEL`. This is in line with the way we
specify the component classes in the CLI and documentation, for
example `src.ctf.fs`.
The log level environment variables common to a whole plugin are still
prefixed with `PLUGIN`, for example
`BABELTRACE_PLUGIN_CTF_METADATA_LOG_LEVEL`.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 5 Oct 2017 04:15:23 +0000 (00:15 -0400)]
sink.text.dmesg: remove `read-from-stdin` parameter, use absent `path`
We don't need separate `path` and `read-from-stdin` parameters for
this component class: if `path` is absent, read from standard input.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 2 Oct 2017 21:28:17 +0000 (17:28 -0400)]
Lazy load the python plugin provider
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 2 Oct 2017 18:12:43 +0000 (14:12 -0400)]
Port: no sighandlers on Windows
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 2 Oct 2017 17:52:14 +0000 (13:52 -0400)]
Port: normalize path in test_plugin_bt2
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 2 Oct 2017 17:11:42 +0000 (13:11 -0400)]
Port: fix library load in python tests on Windows
On Windows, the PATH variable is used to load library dependencies at runtime.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 2 Oct 2017 16:59:30 +0000 (12:59 -0400)]
Fix: use configured python in test_python_plugin_provider
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 15 Sep 2016 15:11:29 +0000 (15:11 +0000)]
Port: open files in binary mode on Windows
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 4 Oct 2017 00:10:17 +0000 (20:10 -0400)]
Fix: ctf: notif-iter: do not call request_medium_bytes() when not needed
Do not systematically call request_medium_bytes(), that is, at the
beginning of read_dscope_begin_state(), because the scope field which is
about to be decoded might be empty, an already aligned structure
field or the equivalent (through a variant field for example, of which
the tag is outside this scope).
To do this we also need to make bt_btr_start() accept a size of 0. In
this case, if the field to decode is an empty structure which is already
aligned, then bt_btr_start() does not need to consume any bit and
returns BT_BTR_STATUS_OK with 0 consumed bits. In this case, the next
notif-iter state is not a continuing state, thus request_medium_bytes()
is not called yet.
Checking for a bad state when request_medium_bytes() receives
BT_NOTIF_ITER_MEDIUM_STATUS_EOF from the medium is easier. Good states
are:
* If the current packet size is set:
** Current packet offset is current packet size.
* Otherwise:
** Current packet offset is 0.
** Last event header offset is set and current offset is equal to it.
All other states are invalid.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 2 Oct 2017 20:03:40 +0000 (16:03 -0400)]
flt.lttng-utils.debug-info: `dir`/`debug-dir` param -> `debug-info-dir`
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 2 Oct 2017 17:18:39 +0000 (13:18 -0400)]
cli: do not automatically create an implicit filter.lttng-utils.debug-info comp.
Remove --no-debug-info option, and add --debug-info option to explicitly
enable this filter.
Fix tests/cli/test_convert_args.in which now does not depend on
ENABLE_DEBUG_INFO.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 2 Oct 2017 16:57:12 +0000 (12:57 -0400)]
ctf, ir: escape and unescape enumeration FT labels starting with `_`
This is a solution to work with TSDL 1.8 which asks identifiers starting
with `_` to be named without the `_` for viewing and analysis purposes.
Since a variant FT can refer to an enumeration FT tag which also has its
labels starting with `_`, we systematically remove leading `_` in
enumeration FT labels too.
For example:
enum {
_salut,
hello,
__zoom,
_integer,
} tag;
variant <tag> {
A _salut;
B hello;
C __zoom;
D _integer;
} var;
Once in CTF IR, the equivalent is:
enum {
salut,
hello,
_zoom,
integer,
} tag;
variant <tag> {
A salut;
B hello;
C _zoom;
D integer;
} var;
Once back to TSDL (through CTF writer), it is:
enum {
salut,
hello,
__zoom,
_integer,
} tag;
variant <tag> {
A salut;
B hello;
C __zoom;
D _integer;
} var;
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 28 Sep 2017 13:36:22 +0000 (09:36 -0400)]
cli: --stream-intersection is not an implicit src.ctf.fs component's option
You can use the --stream-intersection option with any source component
class which supports the `trace-info` query, not just with src.ctf.fs.
Also, using --stream-intersection does not imply a src.ctf.fs component
like --clock-class-offset-s does for example.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 20 Sep 2017 00:04:03 +0000 (20:04 -0400)]
cli: do not use --component in help command, only use leftover argument
Options should be used for optional arguments. In the case of
`babeltrace help`, the component class specification is mandatory when
you don't want help about a plugin, so use the first positional
"leftover" argument.
First try the TYPE.PLUGIN.COMPCLS form, then fallback to PLUGIN if it's
invalid.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 19 Sep 2017 20:10:08 +0000 (16:10 -0400)]
Add compat layer's log level env. var. to CLI's list of known env. vars
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 25 Sep 2017 19:44:47 +0000 (15:44 -0400)]
cli: put the project's version on the first line with no args.
This is to ensure backward compatibility with Babeltrace 1.x, especially
for the LTTng analyses project which check the Babeltrace's version this
way because of a missing --version option.
Reported-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 21 Sep 2017 19:09:38 +0000 (15:09 -0400)]
Fix: legacy python bindings Makefile
No need for build_ext, this is a pure python module.
Add missing stamp file to CLEANFILES.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 22 Sep 2017 19:37:52 +0000 (15:37 -0400)]
bt2, babeltrace: apply PEP 8 except for E501 and E722
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 22 Sep 2017 19:08:14 +0000 (15:08 -0400)]
Fix: babeltrace: writer.py: do not use += on bt2.trace._TraceEnv
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 22 Sep 2017 05:24:04 +0000 (01:24 -0400)]
bindings/python/babeltrace/Makefile.am: do not clean __init__.py
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 22 Sep 2017 00:51:34 +0000 (20:51 -0400)]
Rename bt_ctf_X -> bt_X, maintain backward compat. for pre-2.0 CTF writer
This patch replaces the `bt_ctf_` prefix with `bt_` for all the
functions, types, and enumerations. It also replaces the `BT_CTF_`
prefix with `BT_` for all the preprocessor definitions and enumerators.
Since there is only one IR as of Babeltrace 2, there is no need for this
superfluous prefix: there's no confusion without it, and it might even
be more straightforward for the newcomer to see `bt_trace` instead of
`bt_ctf_trace`, for example.
Backward compatibility is maintained with the help of specific
preprocessor definitions placed in each relevant public header file to
create aliases for legacy function names, type names, enumerator names,
and preprocessor definition names. Because Babeltrace 2 asks current
applications to be rebuilt anyway (soname is bumped), it is okay to lose
some symbol names as long as the API is equivalent.
The only possible issue that I can see is if an application uses a new
API name as a variable name, for example:
struct bt_ctf_trace bt_ctf_trace;
struct something_else bt_trace;
This is an error after this patch is applied because, after the
preprocessor pass, it is the equivalent of:
struct bt_trace bt_trace;
struct something_else bt_trace;
because of (include/babeltrace/ctf-ir/trace.h):
#define bt_ctf_trace bt_trace
which affects both the type name and the variable name. This should not
be a problem in most cases, and it is easy to fix otherwise.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 5 Oct 2017 20:39:39 +0000 (16:39 -0400)]
Fix: variable declaration shadows previously declared variable
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Wed, 20 Sep 2017 17:58:43 +0000 (13:58 -0400)]
Fix: use tabs rather than spaces in makefile
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Reported-by: Jonah Caplan <jcaplan@blackberry.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 19 Sep 2017 20:26:30 +0000 (16:26 -0400)]
Port: do not depend on GNU readlink
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 18 Sep 2017 21:28:13 +0000 (17:28 -0400)]
Fix: use the configured swig executable
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 21:36:38 +0000 (17:36 -0400)]
Tests python: reference ctf traces are not copied to the build dir
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 18 Sep 2017 21:27:28 +0000 (17:27 -0400)]
Fix: tests/Makefile.am: add missing LOG_DRIVER
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 21:15:49 +0000 (17:15 -0400)]
Tests: moved files pointed-to in Makefile
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 21:14:59 +0000 (17:14 -0400)]
Python babeltrace docs: Add missing sphinx dist file
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 18 Sep 2017 20:30:39 +0000 (16:30 -0400)]
Doc: babeltrace: update the Read the Docs Sphinx theme
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 18 Sep 2017 20:29:27 +0000 (16:29 -0400)]
Doc: babeltrace: mention _legacy_ Python bindings
This is to avoid confusion with the _new_ Babeltrace Python bindings
which are under the `bt2` package (not documented yet).
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 18 Sep 2017 20:22:47 +0000 (16:22 -0400)]
Fix: doc/bindings/python: make the doc buildable
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 18 Sep 2017 19:52:12 +0000 (15:52 -0400)]
Fix: bt2: do not assign an exception to a local variable
According to <https://docs.python.org/3/reference/compound_stmts.html#try>:
> Exceptions are cleared because with the traceback attached to them,
> they form a reference cycle with the stack frame, keeping all locals
> in that frame alive until the next garbage collection occurs.
According to <http://portingguide.readthedocs.io/en/latest/exceptions.html>:
> As discussed previously, in Python 3, all information about an
> exception, including the traceback, is contained in the exception
> object. Since the traceback holds references to the values of all
> local variables, storing an exception in a local variable usually
> forms a reference cycle, keeping all local variables allocated until
> the next garbage collection pass.
This reference cycle can make some tests fail because, with the
Babeltrace Python bindings, some operations are performed when a
Babeltrace native object is destroyed: this means the Python reference
count must be "stable" and as deterministic as possible so as to avoid
gc.collect() when using the bindings.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 19:55:31 +0000 (15:55 -0400)]
Python bt2 fix: missing import in CtfWriter
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 19:55:06 +0000 (15:55 -0400)]
Python babeltrace fix: handle bt2.Error exception on stream flush
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 19:54:37 +0000 (15:54 -0400)]
Python babeltrace fix: allow None for event header and packet context setters
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 19:53:55 +0000 (15:53 -0400)]
Python babeltrace fix: missing return statement in field accessor
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 15:36:05 +0000 (11:36 -0400)]
Set version to 2.0-pre4
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 03:41:19 +0000 (23:41 -0400)]
Python babeltrace fix: initialize stream class with default values
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 18 Sep 2017 03:40:56 +0000 (23:40 -0400)]
Python babeltrace: use long form attribute names
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 22:01:03 +0000 (18:01 -0400)]
Tests babeltrace: adapt python tests to use unittest
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 19:27:17 +0000 (15:27 -0400)]
Fix: ctf-writertype serialization must 'escape' '_'-prefixed field names
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 18:51:17 +0000 (14:51 -0400)]
Cleanup: use tabs for code indentation
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 18:44:22 +0000 (14:44 -0400)]
Fix: NULL dereference on sampling and restoration of graph's 'can_consume'
Found by Coverity Scan. A graph's 'can_consume' state must only
be sampled after the graph argument's validation. The error paths
must also repeat that check on restoration of the state.
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 18:35:58 +0000 (14:35 -0400)]
Tests: confusion between python bindings and plugins tests
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 18:09:14 +0000 (14:09 -0400)]
Update .gitignore: ignore generated API doc files
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 17 Sep 2017 18:07:42 +0000 (14:07 -0400)]
Update .gitignore: ignore generated __init__.py file
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 19:32:14 +0000 (15:32 -0400)]
cli: do not use --component in query command, use leftover argument
Options should be used for optional arguments. In the case of
`babeltrace query`, the component class specification is mandatory,
so use a positional "leftover" argument:
babeltrace [GEN OPTS] query [OPTS] TYPE.PLUGIN.CLS OBJECT
Example:
babeltrace query src.ctf.fs trace-info -p 'path="/path/to/trace"'
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 19:12:34 +0000 (15:12 -0400)]
tests/lib/test_ctf_writer.c: test structure field name is a keyword
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 19:12:13 +0000 (15:12 -0400)]
tests/lib/test_ctf_writer.c: open trace with `-o dummy` to make it faster
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 19:11:54 +0000 (15:11 -0400)]
tests/lib/test_ctf_writer.c: update number of tests
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 18:26:19 +0000 (14:26 -0400)]
Add bindings/python/babeltrace/.gitignore
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 18:20:40 +0000 (14:20 -0400)]
Fix: remove underscores from CTF IR field names at the source
The CTF spec. states that if a structure field type's field name or a
variant field type's choice name starts with `_` in the TSDL metadata
stream, then this underscore should be removed from the effective
field/choice name.
This patch applies this at the source (src.ctf plugin), in the TSDL
metadata text to CTF IR objects visitor. To do so it must also remove
such underscore characters from the components of field references (tag
and length names).
The behaviour is removed from plugins/text/pretty/print.c which did it
at the output level.
A potential issue is that a variant field type can have its enumeration
tag field type contain mappings which still have the underscore
prefixes. To circumvent this, we add the field names and the field names
with underscores to the field types's hash tables of field names to
field indexes, so that `field_name` and `_field_name` refer to the same
index within the structure/variant field type, for example.
When serializing the structure/variant field types to TSDL (for the CTF
writer API), we prefix each field with `_` if it's a CTF identifier so
as to avoid conflicts. We also remove the check that structure/variant
field type field names must not be CTF identifiers since it is safe to
serialize them now.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 05:05:20 +0000 (01:05 -0400)]
bt2: trace collection notif. iter.: try to check the query result
This could fail if the structure is not as expected: just raise
bt2.Error in this case.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 04:59:49 +0000 (00:59 -0400)]
ctf: do not add `intersection-range-ns` in `trace-info` query with no intersect.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 16 Sep 2017 04:58:25 +0000 (00:58 -0400)]
Fix: ctf: notif-iter: accept EOF at beginning of packet context with no PH
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 30 Aug 2017 20:02:54 +0000 (16:02 -0400)]
Tests: add tests for the babeltrace python package
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 30 Aug 2017 20:01:57 +0000 (16:01 -0400)]
python: reimplement the babeltrace package as a bt2 wrapper
This is how the old bindings work with the new bindings:
* A `babeltrace.TraceCollection` contains a set of
`babeltrace.TraceHandle`, each of which only contains a CTF trace path
and a generated ID, unique within the trace collection.
* When you call `babeltrace.TraceCollection.add_trace()`, the function
makes sure that you're adding a single CTF trace. It creates a trace
handle, adds it to the trace collection's set, and returns it.
* When you call `babeltrace.TraceCollection.remove_trace()`, the
function removes the given trace handle from the trace collection's
set.
* The `timestamp_begin()`, `timestamp_end()`, and `_has_intersection()`
methods of `babeltrace.TraceHandle` perform the `trace-info` query
with their path to retrieve the information.
* The `babeltrace.TraceHandle.events` property creates a `bt2` trace
collection notification iterator, gets the first notification of the
trace (which is expected to be a stream beginning notification), and
finds the CTF IR trace object to generate all the event declarations
from event classes using
`babeltrace.reader_event_declaration._create_event_declaration()`.
* The `babeltrace.TraceCollection.events` property creates a `bt2` trace
collection notification iterator, in stream intersection mode if
needed, and with a beginning and end time if needed, and generates
event objects using `babeltrace.reader_event._create_event()`.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 30 Aug 2017 18:26:35 +0000 (14:26 -0400)]
python: Remove native code from babeltrace package
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 15 Sep 2017 23:24:38 +0000 (19:24 -0400)]
Add `bt2.TraceCollectionNotificationIterator` tests
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 15 Sep 2017 23:23:48 +0000 (19:23 -0400)]
bt2: __init__.py: remove unused NoSuchPlugin
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 15 Sep 2017 23:18:24 +0000 (19:18 -0400)]
bt2: add trace collection notification iterator
A trace collection notification iterator is a special notification
iterator which iterates on the multiplexed notifications of all the
output ports of one or more traces. The new notification iterator
supports a stream intersection mode and trimming the whole multiplexed
stream.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 15 Sep 2017 23:12:46 +0000 (19:12 -0400)]
flt.utils.trimmer: allow `begin`/`end` params. to be integers
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 13 Sep 2017 23:05:29 +0000 (19:05 -0400)]
bt2: values: remove public `value` getter
The public `value` getter (e.g., `my_int_value.value`) is redundant here
since the `bt2.values` object already act like their Python equivalent.
If you need an `int` value out of a `bt2.IntegerValue` object, for
example, you can just use `int(bt_value)` instead of `bt_value.value`.
We keep the `value` setter because this is used to set the underlying
raw value.
Internally, we keep the private `_value` getter to access the object's
raw value.
In the tests, we copy the value to modify instead of using the `value`
property with this pattern:
orig_value = copy.copy(value)
# modify value
self.assertEqual(value, orig_value)
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sat, 16 Sep 2017 02:49:01 +0000 (22:49 -0400)]
Python bt2 fix: erroneous imports following split of clock class and value
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sat, 16 Sep 2017 02:12:32 +0000 (22:12 -0400)]
Omit 'value' from is_set and reset field functions
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Fri, 15 Sep 2017 04:07:45 +0000 (00:07 -0400)]
Python bt2: remove type restriction on structure __setitem__
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
This page took 0.042579 seconds and 4 git commands to generate.