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>
Jérémie Galarneau [Mon, 18 Sep 2017 22:03:41 +0000 (18:03 -0400)]
Update version to v2.0.0-pre4
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>
Jérémie Galarneau [Thu, 14 Sep 2017 19:03:55 +0000 (15:03 -0400)]
Cleanup: line exceeds 80 chars
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 14 Sep 2017 16:13:33 +0000 (12:13 -0400)]
Fix: ensure sequence length field value is set and freeze it
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 14 Sep 2017 16:12:48 +0000 (12:12 -0400)]
Cleanup: coding style mandates space after cast operator
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 14 Sep 2017 16:09:16 +0000 (12:09 -0400)]
Fix Python bt2: sequence length field may be NULL
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 14 Sep 2017 15:47:36 +0000 (11:47 -0400)]
Python bt2: value is a write-only property
This commit turns 'value' into a write-only property. The
value property is needed to distinguish between:
my_var = bt2.IntegerFieldType(32)(123456)
my_var = 123
my_var = bt2.IntegerFieldType(32)(123456)
my_var.value = 123
The value 'getter' is not necessary since the various field types
implement the interfaces needed to act as native Python types
(collections.abc.Sequence, collections.abc.Mapping, numbers.Integral,
etc.)
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 14 Sep 2017 15:44:51 +0000 (11:44 -0400)]
Python bt2: add reset and is_set to fields
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 13 Sep 2017 20:52:16 +0000 (16:52 -0400)]
Docs: structure_set_field_by_name doesn't garantee field replacement
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 13 Sep 2017 20:51:38 +0000 (16:51 -0400)]
Add field value is_set and reset functions to the public API
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 13 Sep 2017 19:19:02 +0000 (15:19 -0400)]
Allocate structure fields on creation
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 13 Sep 2017 16:06:07 +0000 (12:06 -0400)]
Python test: remove useless test
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 13 Sep 2017 16:05:36 +0000 (12:05 -0400)]
Python bt2: value properties for sequence and struct
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 13 Sep 2017 15:47:05 +0000 (11:47 -0400)]
Use boolean for frozen and set field states
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 5 Sep 2017 22:40:34 +0000 (18:40 -0400)]
Update .gitignore exclusions
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 5 Sep 2017 22:39:04 +0000 (18:39 -0400)]
Tests: use of non-existant API in bt2 python package test
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sat, 16 Sep 2017 01:48:54 +0000 (21:48 -0400)]
Python bt2 fix: _ClockValue is no longer part of bt2.clock_class
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sat, 16 Sep 2017 01:47:49 +0000 (21:47 -0400)]
Enumeration mapping iterator's initial position is inconsistent
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 19:29:10 +0000 (15:29 -0400)]
CONTRIBUTING.adoc: add step to add env. var. name to cli/babeltrace.c
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 19:28:55 +0000 (15:28 -0400)]
CONTRIBUTING.adoc: MY_MODULE_LOGGING_H -> BABELTRACE_MY_MODULE_LOGGING_H
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 19:28:36 +0000 (15:28 -0400)]
CONTRIBUTING.adoc: document BT_LOG*_ERRNO() macros
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 19:15:16 +0000 (15:15 -0400)]
Add CONTRIBUTING.adoc
This new Babeltrace contributor's guide documents the internals of the
Babeltrace project for its developers and contributors. It overrides
doc/logging-guide.adoc, doc/ref-counting.md, and doc/development.txt,
which is why those files are removed.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 01:09:13 +0000 (21:09 -0400)]
lib/ctf-ir/utils.c: lazy-initialize the hash table of reserved keywords
This fixes bugs in static build context on platforms where the calling
order of library constructors is undefined: this constructor could be
called before GLib's constructor, in which case you cannot call
g_hash_table_new() because GLib's slice allocator is not initialized.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 00:30:00 +0000 (20:30 -0400)]
Implement bt_private_connection_notification_iterator_from_private()
The function waas declared but not implemented yet.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 6 Sep 2017 00:27:30 +0000 (20:27 -0400)]
Rename bt_X_from_private_X() -> bt_X_from_private()
The second object's name is redundant in this context and only makes the
function name longer (sometimes much longer).
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 5 Sep 2017 23:58:22 +0000 (19:58 -0400)]
Avoid unnecessary inclusions in public headers
Featured in this patch:
* In public headers, only include what is really needed by the
declarations of the header itself. Copy forward declarations when
possible instead of including just for the included file's forward
declaration. Also indicate above each included header why it is
included to justify it.
This should prevent future bugs where we could, for example, remove an
included header to replace it by a forward declaration, breaking some
builds which relied on indirect inclusion (e.g. my project does not
need to include <babeltrace/values.h> because it includes
<babeltrace/ctf-ir/event-class.h>).
* Make all the plugin C source/header files include
<babeltrace/babeltrace.h> instead of a bunch of public headers. This
does not significantly increase the build time while making the source
file much cleaner.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 5 Sep 2017 23:01:03 +0000 (19:01 -0400)]
bt2: split clock value module from clock class module
This doesn't change anything from the package's user's perspective, but
it's more in line with the C API.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 5 Sep 2017 22:09:49 +0000 (18:09 -0400)]
Split clock value API from clock class API
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 2 Sep 2017 02:59:01 +0000 (22:59 -0400)]
tests: remove `check` targets in subdirectories
Use a single `check` target at the `tests/` level like the project did
before to avoid stopping when a subdirectory fails and run all the
tests anyway. Use custom targets to run the tests of specific
directories (this only works from `tests/`) , for example:
make check-cli check-plugins
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 2 Sep 2017 02:03:57 +0000 (22:03 -0400)]
Test bt2._OutputPort.create_notification_iterator()
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 2 Sep 2017 02:03:14 +0000 (22:03 -0400)]
bt2: add bt2._OutputPort.create_notification_iterator()
This is the interface to create an output port notification iterator
from a given (public) output port.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 2 Sep 2017 02:00:11 +0000 (22:00 -0400)]
Test output port notification iterator
Added tests are:
* You can create an output port notification iterator and the
notifications it consumes and returns are the expected ones.
* You cannot run a graph once you have created a notification iterator
on the output port of one of its components.
* You can create an output port notification iterator, subscribe to
specific types of notifications, and the notifications it consumes and
returns are the expected ones.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Sat, 2 Sep 2017 01:38:26 +0000 (21:38 -0400)]
lib: add output port notification iterator
As of this patch, you can create an output port notification iterator
with a component's output port with
bt_output_port_notification_iterator_create(). This function, on
success:
1. Creates a notification iterator object, which contains a
notification pointer.
2. Adds (creates) a colander sink component, passing this notification
pointer's address to its initialization method data, along with
a list of notification types to subscribe to received as a
parameter.
3. Connects the passed output port to the colander component's input
port.
4. Makes the targeted graph nonconsumable. This means, at this point,
only bt_notification_iterator_next() can consume the graph, not the
user.
5. Returns the created notification iterator.
When you call bt_notification_iterator_next() with this new notification
iterator, it puts its current notification and consumes its specific
colander sink within the graph to make it store the next notification,
forwarding any exceptional graph status as a notification iterator
status.
More than one output port notification iterators on a single graph are
supported: multiple colander sinks are added to the graph and each one
makes its own colander sink consume.
To avoid immediate or eventual component name clashes,
bt_output_port_notification_iterator_create() accepts an optional
colander name parameter. If you use NULL, then `colander` is used.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 24 Aug 2017 20:52:12 +0000 (16:52 -0400)]
Split notification iterator API into base and specialized functions
This patch splits the notification iterator API into base functions
(<babeltrace/graph/notification-iterator.h>) shared by all notification
iterators:
* bt_notification_iterator_next()
* bt_notification_iterator_get_notification()
and specialized functions
(<babeltrace/graph/private-connection-notification-iterator.h>):
* bt_private_connection_notification_iterator_get_component()
This allows the future creation of specialized notification iterators
which can use the common API for basic operations. A "private connection
notification iterator", the only type of notification iterator as of
this patch, is a notification iterator created from a private connection
with bt_private_connection_create_notification_iterator().
The bt2 Python package is updated accordingly.
_GenericNotificationIterator has only the __next__() method, while
_PrivateConnectionNotificationIterator extends
_GenericNotificationIterator with the `component` property.
The name "private connection" is excluded from component class type
definitions and functions, and also from plugin development macros,
because this is the only type of notification iterator which a user can
provide anyway, for example:
* bt_component_class_notification_iterator_init_method
* bt_component_class_source_set_notification_iterator_init_method()
`bt_notification_iterator_next_return` is renamed to
`bt_notification_iterator_next_method_return` to indicate that this is
the user notification iterator's "next" method return type.
`bt_component_class_query_return` is renamed to
`bt_component_class_query_method_return` to match this convention.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 24 Aug 2017 20:40:55 +0000 (16:40 -0400)]
Remove notification iterator seeking API until it's supported
Remove everything related to seeking a notification iterator until the
actual seeking operation is supported by the library. This ensures that
Babeltrace 2.0 plugins (including third-party ones) do not have seeking
methods until we are sure about the correct API.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 18 Aug 2017 20:43:18 +0000 (16:43 -0400)]
lib: graph: disallow recursive consuming
Do not allow a user component to consume or run its parent graph if the
graph is in one of the following states (operations):
* Consuming (running)
* Connection ports
* Adding (creating) a component
test_graph.py tests this feature through the Python bindings.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 18 Aug 2017 20:03:17 +0000 (16:03 -0400)]
lib: graph.c: call bt_graph_consume_no_check() in bt_graph_run()
This is why bt_graph_consume_no_check() exists in the first place, to
avoid checking arguments and the cancel state every time considering
that it's already checked.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 17 Aug 2017 22:00:27 +0000 (18:00 -0400)]
ir: stream.c: do not truncate file at each packet flush
The whole stream file is truncated in bt_ctf_stream_destroy() anyway so
truncating at each packet flush is redundant.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 17 Aug 2017 00:57:36 +0000 (20:57 -0400)]
Fix: bindings/python/bt2: use appropriate log level variable names
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 17 Aug 2017 00:54:30 +0000 (20:54 -0400)]
Python plugin provider: only finalize interpreter if we initialized it
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 16 Aug 2017 19:06:55 +0000 (15:06 -0400)]
Fix: common: improve color support handling
With this patch, terminal color codes are emitted by Babeltrace modules
if the `BABELTRACE_TERM_COLOR` environment variable is set to `ALWAYS`
or if all the following conditions are satisfied:
1. The `BABELTRACE_TERM_COLOR` environement variable is not set to
`NEVER`.
2. The `TERM` environment variable starts with `xterm`, `rxvt`,
`konsole`, `gnome`, `screen`, `tmux`, or `putty`.
3. For both the standard output and error streams: its file descriptor
is a TTY.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 15 Aug 2017 23:20:12 +0000 (19:20 -0400)]
Fix: component.py: pass `other_port`, not `other_port_ptr` to user
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 14 Aug 2017 21:55:53 +0000 (17:55 -0400)]
Add query executor
Use a new object, a query executor, to query a component class:
struct bt_query_executor *query_exec = bt_query_executor_create();
enum bt_query_status status = bt_query_executor_query(query_exec,
comp_cls, "object", params, &result);
The user's query method receives this query executor as a parameter so
that some state can be shared between the user who queries (calls
bt_query_executor_query()) and the user's method. Currently, only a
cancellation flag is part of the query executor's state, so that, if you
wish to cancel a query during a signal handler, you can call
bt_query_executor_cancel(): then, when the user's method's current
system call sets the EINTR error (or the equivalent on other supported
platforms), it can check the state of the query executor with
bt_query_executor_is_canceled() to know whether to retry the system call
(debugging mode, query executor is not canceled) or to return an error
(application mode, query executor is canceled).
This is the same mechanism that is used with the graph object and
component objects: bt_graph_cancel() and bt_graph_is_canceled().
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 31 Aug 2017 20:59:48 +0000 (16:59 -0400)]
Tests: erroneous usage of if preprocessor directive
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
This page took 0.0438 seconds and 4 git commands to generate.