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>
Michael Jeanson [Wed, 30 Aug 2017 18:54:23 +0000 (14:54 -0400)]
Fix: remove g_spawn_check_exit_status to support glib 2.22
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 30 Aug 2017 18:29:26 +0000 (14:29 -0400)]
Port: don't quote wc output in test scripts
The 'wc' command on macOS prefixes the count it returns with spaces, if
we quote the output it won't be properly converted to integer for the
comparison.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 30 Aug 2017 18:16:00 +0000 (14:16 -0400)]
Missing stamp file in .gitignore
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 29 Aug 2017 22:04:45 +0000 (18:04 -0400)]
Fix: import of ctf_writer in bt2.stream
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 29 Aug 2017 22:04:08 +0000 (18:04 -0400)]
Fix: typo in ctf_writer error msg
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 29 Aug 2017 22:36:32 +0000 (18:36 -0400)]
filter.lttng-utils.debug-info fix: wrong type used as function parameter
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 29 Aug 2017 21:59:11 +0000 (17:59 -0400)]
src.ctf.fs fix: wrong type specifier used in logging statement
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 29 Aug 2017 18:04:01 +0000 (14:04 -0400)]
Test fix: python plugin provider with new bindings
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 29 Aug 2017 16:17:36 +0000 (12:17 -0400)]
Fix: silence unused warning in native_bt
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 28 Aug 2017 21:00:41 +0000 (17:00 -0400)]
Fix: python bindings OOT build
All the source files required to build the python bindings with
distutils must be in the same directory, since some of them are
generated by the build system, copy the static ones to the build
directory when it is different from the source directory.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 23 Aug 2017 21:23:17 +0000 (17:23 -0400)]
Remove the python bindinds tests switch from configure
The bindings tests are automatically enabled when the bindings are.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 23 Aug 2017 21:19:41 +0000 (17:19 -0400)]
Add python tap runner to the tree
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 23 Aug 2017 15:43:05 +0000 (11:43 -0400)]
Build Python bindings with distutils for consistent installs
This patch changes the build system used to compile and install the
Python Bindings. Distutils is used to find the right install directory.
When the install directory generated from the install prefix is not in
the Python search path (PYTHONPATH), we print a warning explaining what
can be done to include it.
It uses Distutils which is part of the Python standard library.
Signed-off-by: Francis Deslauriers <francis.deslauriers@efficios.com>
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 29 Aug 2017 16:16:39 +0000 (12:16 -0400)]
Fix: add missing void param to bt_clock_class_priority_map_create
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 28 Aug 2017 21:08:28 +0000 (17:08 -0400)]
Fix: build lib before 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, 28 Aug 2017 19:04:28 +0000 (15:04 -0400)]
Test: run debug-info even with built-in plugins
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 28 Aug 2017 18:48:58 +0000 (14:48 -0400)]
Fix test: don't link tests directly with plugins
Move the debug-info code to a convenience library that is then used by
both the plugin and the test code. This fixes build with static
libraries disabled where it's not possible to link directly the plugin
shared object which is a module.
Reviewed-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 28 Aug 2017 16:12:08 +0000 (12:12 -0400)]
Fix test: OOT build of test_trace_copy and test_trimmer
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 21 Aug 2017 20:56:05 +0000 (16:56 -0400)]
Fix: support older pkg-config autoconf macros
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 21 Aug 2017 19:24:36 +0000 (15:24 -0400)]
Port: don't quote wc output in test scripts
The 'wc' command on macOS prefixes the count it returns with spaces, if
we quote the output it won't be properly converted to integer for the
comparison.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 18 Jul 2017 15:21:02 +0000 (11:21 -0400)]
Report plugins without a path as "built-in"
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 6 Jun 2017 18:56:30 +0000 (14:56 -0400)]
Port: replace literal '/' with G_DIR_SEPARATOR
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 6 Jun 2017 15:24:21 +0000 (11:24 -0400)]
Port: normalize windows path on Mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 31 May 2017 19:13:41 +0000 (15:13 -0400)]
Port: handle ctrl+c on Mingw
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Sun, 27 Aug 2017 19:57:30 +0000 (15:57 -0400)]
src.ctf.fs: implement stream indexing
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 22 Aug 2017 21:33:41 +0000 (17:33 -0400)]
src.ctf.fs: move internal util to ctf/common/utils
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 23 Aug 2017 20:46:25 +0000 (16:46 -0400)]
src.ctf.fs cleanup: unused page size variable
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 23 Aug 2017 20:41:53 +0000 (16:41 -0400)]
Fix: global logging symbols defined multiple times
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 22 Aug 2017 19:04:45 +0000 (15:04 -0400)]
Port fix: don't round mmap offset to next page
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Tue, 22 Aug 2017 18:35:13 +0000 (14:35 -0400)]
Port fix: Windows does not allow read-only mappings > file's size
Reported-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 18 Aug 2017 21:51:00 +0000 (17:51 -0400)]
Test fix: handle debug info disabled in test_convert_args
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 18 Aug 2017 18:28:58 +0000 (14:28 -0400)]
Test fix: use portable path code in test_plugin
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Thu, 17 Aug 2017 16:09:53 +0000 (12:09 -0400)]
Test fix: handle timestamps order in test_trace_copy
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 16 Aug 2017 19:06:19 +0000 (15:06 -0400)]
Test: rework shell test scripts
Moved common code to common.sh and lots of shellcheck syntax fixes and
cleanup.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Fri, 21 Jul 2017 15:44:07 +0000 (11:44 -0400)]
Port: use SIZE_MAX as max size_t value
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Mon, 14 Aug 2017 20:10:20 +0000 (16:10 -0400)]
Port: fix logging with C99 format specifiers on Mingw
On Mingw when __USE_MINGW_ANSI_STDIO is defined, the printf family of
functions expects C99 format specifiers instead of the MSVC specific
ones. This should be reflected in the logging code to get proper display
of C99 types.
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Mon, 21 Aug 2017 18:41:39 +0000 (14:41 -0400)]
Test fix: free() of uninitialized pointer on error path
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 15 Aug 2017 22:05:31 +0000 (18:05 -0400)]
Port: Replace fork() in test_ctf_writer
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Fri, 18 Aug 2017 23:43:11 +0000 (19:43 -0400)]
tests: add diag_multiline() helper to escape multi-line diagnostic info
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 9 Aug 2017 22:35:56 +0000 (18:35 -0400)]
Test: use static data in test_ctf_writer
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Wed, 9 Aug 2017 20:01:22 +0000 (16:01 -0400)]
Fix test: remove hardcoded /tmp path
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 9 Aug 2017 22:24:53 +0000 (18:24 -0400)]
Add Python plugin provider tests
This is a simple test for Python plugins. I'm using Python to load
the Python plugin for simplicity, but the C API could load it as well.
This tests both python-plugin-provider/python-plugin-provider.c and
bindings/python/bt2/py_plugin.py.
What happens is this:
1. test.sh executes Python which executes the test
(test_python_plugin_provider.py).
2. test_python_plugin_provider.py imports the bt2 Python package.
3. The bt2 Python package imports _native_bt.so.
4. _native_bt.so is linked with libbabeltrace.so.
5. libbabeltrace.so, on construction, loads
libbabeltrace-python-plugin-provider.so.
5. test_python_plugin_provider.py tries to load the Python plugin
with `bt2.find_plugins()`.
6. `bt2.find_plugins()` calls plugin_create_all_from_file(), which,
since the path points to a Python file, makes the Python plugin
provider try to initialize the Python interpreter (already
initialized by Python in step 1), import the `bt2.py_plugin` module,
and load the Python file to create a bt_plugin object.
Then the test makes sure that the returned Python plugin object has the
expected properties and component classes.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 9 Aug 2017 22:13:03 +0000 (18:13 -0400)]
Python plugin provider: log if Python interpreter is already initialized
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 9 Aug 2017 22:12:34 +0000 (18:12 -0400)]
lib/plugin/plugin.c: log more details when g_module_open() fails
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 9 Aug 2017 22:13:33 +0000 (18:13 -0400)]
python-plugin-provider/Makefile.am: link to libbabeltrace
Make the Python plugin provider dependent on libbabeltrace because
it needs symbols from the library.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 16 Aug 2017 19:40:02 +0000 (15:40 -0400)]
Fix sink.ctf.fs: NULL dereference in logging statement
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Wed, 16 Aug 2017 19:29:11 +0000 (15:29 -0400)]
Fix filter.utils.muxer: NULL dereference in logging statement
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Tue, 15 Aug 2017 21:54:34 +0000 (17:54 -0400)]
Fix: overflowed return value
Found by Coverity (attempt to fix, unsure it will convince Coverity of
the holiness of our code):
2. overflow: Subtract operation overflows on operands align and 1UL.
CID
1376162 (#1 of 1): Overflowed return value (INTEGER_OVERFLOW)3.
overflow_sink: Overflowed or truncated value (or a value computed from
an overflowed or truncated value) align != 0UL && !(align & align - 1UL)
used as return value.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Tue, 15 Aug 2017 21:36:19 +0000 (17:36 -0400)]
Fix: attempt to fix improper use of negative value
Found by Coverity, unsure that the fix will make it happy:
CID
1376189 (#1 of 1): Improper use of negative value
(NEGATIVE_RETURNS)negative_returns: Passing negative constant -1 to a
parameter that cannot be negative. [hide details]
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Tue, 15 Aug 2017 21:30:03 +0000 (17:30 -0400)]
Fix: add missing overflow check in bt_ctf_stream_pos_access_ok
Found by Coverity:
2. overflow: Subtract operation overflows on operands bit_offset and 1UL.
CID
1377278 (#1 of 1): Overflowed return value (INTEGER_OVERFLOW).
overflow_sink: Overflowed or truncated value (or a value computed from
an overflowed or truncated value) bt_ctf_stream_pos_move(pos, ({...}))
used as return value.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Tue, 15 Aug 2017 21:19:39 +0000 (17:19 -0400)]
Fix: uninitialized return value on error
Found by Coverity:
CID
1379248 (#1 of 1): Uninitialized scalar variable (UNINIT).
uninit_use: Using uninitialized value ret.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Tue, 15 Aug 2017 21:17:14 +0000 (17:17 -0400)]
Fix: handle unknown enum mapping
Found by Coverity:
At condition nr_mappings, the value of nr_mappings must be at least 1.
The condition !nr_mappings cannot be true.
CID
1376163 (#1 of 1): Logically dead code
(DEADCODE) dead_error_line: Execution cannot reach this statement:
if (pretty->use_colors) {
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Tue, 15 Aug 2017 21:10:26 +0000 (17:10 -0400)]
Cleanup: no need to check for NULL before g_free
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 15 Jun 2017 18:46:40 +0000 (14:46 -0400)]
Update Python bindings and tests to match the latest API
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Tue, 8 Aug 2017 20:37:42 +0000 (16:37 -0400)]
lib/plugin/plugin.c: do not use G_MODULE_BIND_LOCAL for Python plugin provider
Using g_module_open() with the G_MODULE_BIND_LOCAL flag when loading the
Python plugin provider makes it impossible for _native_bt.so (the Python
module, part of the `bt2` package, generated by SWIG) to find libpython
symbols because the Python plugin provider is linked with libpython, not
_native_bt.so.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 4 Aug 2017 23:07:24 +0000 (19:07 -0400)]
Add built-in colander sink component class
You can use this new built-in sink component class to create a component
which passes the consumed notification to the user through a pointer
passed as the initialization method data:
struct bt_notification *notif = NULL;
struct bt_component_class *colander_cc =
bt_component_class_sink_colander_get();
struct bt_component *colander_comp;
ret = bt_graph_add_component_with_init_method_data(graph,
colander_cc, "colander", NULL, ¬if, &colander_comp);
...
for (;;) {
ret = bt_graph_consume(graph);
if (ret != BT_GRAPH_STATUS_OK) {
...
}
/* Do something with notif */
BT_PUT(notif);
}
Everytime you call bt_graph_consume() and this function is successful,
your notification pointer contains a reference to the consumed
notification. You need to release this reference with bt_put(), as the
colander component won't do it. This is why you should not use
bt_graph_run() with a colander component because notifications will
leak.
bt_component_class_sink_colander_get() lazily creates the component
class the first time it is called and the uses this same reference for
future calls. The source file's destructor releases the global reference
when the library is destroyed.
The component class is built-in so that you do not need any installed
plugins to use this utility. Since it's not part of a plugin, you cannot
use it with the CLI, but this is okay because it needs custom
initialization method data anyway.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 4 Aug 2017 23:05:49 +0000 (19:05 -0400)]
Remove include of <babeltrace-internal.h> from public headers
notification-heap.h is not using anything in babeltrace-internal.h,
while plugin-dev.h only uses BT_HIDDEN, which is now part of the file
itself as _BT_HIDDEN.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 4 Aug 2017 23:04:39 +0000 (19:04 -0400)]
tests/lib/test-plugin-plugins/minimal.c: add missing <glib.h> include
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 4 Aug 2017 23:04:19 +0000 (19:04 -0400)]
cli/babeltrace-log.c: include <string.h> for strdup()
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 4 Aug 2017 21:42:03 +0000 (17:42 -0400)]
graph: check if graph has at least one sink to return the NO_SINK status
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 3 Aug 2017 20:34:10 +0000 (16:34 -0400)]
Fix: CC prio. map. leak in event notification
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 3 Aug 2017 20:33:39 +0000 (16:33 -0400)]
lib: do not finalize a non-initialized notification iterator
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 26 Jul 2017 20:45:07 +0000 (16:45 -0400)]
Fix: cli: Coverity issue: no need to check `status`
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 26 Jul 2017 19:58:37 +0000 (15:58 -0400)]
bt_ctf_clock_value_create(): freeze clock class
This is how other classes in the library work: when you instantiate a
class as a value (here a clock class as a clock value), the class is
frozen.
This patch does not seem to break the tests or change anything to the
CLI and plugins, which means all clock classes are already configured
before clock values are created out of them.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 21 Jul 2017 20:34:29 +0000 (16:34 -0400)]
Graph: pass remove listeners when adding listeners
With this patch, when you call bt_graph_add_*_listener(), you can also
provide a "remove listener" which is called when the added listener is
removed when the graph object is destroyed. This is useful when you
dynamically allocate data only for the listener to add and you are not
the only owner of the graph object: the remove listener is where to
free/release this data.
Existing CLIs and tests are modified to match this change.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Fri, 21 Jul 2017 20:13:16 +0000 (16:13 -0400)]
ir: trace: pass remove listeners when adding listeners
With this patch, when you call bt_ctf_trace_add_is_static_listener(),
you can also provide a "remove listener" which is called when the added
listener is removed, weither manually with
bt_ctf_trace_remove_is_static_listener(), or when the trace object is
destroyed. This is useful when you dynamically allocate data only for
the listener to add and you are not the only owner of the trace object:
the remove listener is where to free/release this data.
Existing plugins and tests are modified to match and test this change.
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Thu, 20 Jul 2017 22:30:05 +0000 (18:30 -0400)]
include/babeltrace/graph/private-component.h: add missing `extern`
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 17 Jul 2017 20:45:37 +0000 (16:45 -0400)]
Remove bt_notification_discarded_{events,packets}_set_count()
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 17 Jul 2017 20:36:19 +0000 (16:36 -0400)]
bt_notification_inactivity_create(): create an empty CC priority map when NULL
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 17 Jul 2017 19:36:21 +0000 (15:36 -0400)]
bt_notification_event_create(): create an empty CC priority map when NULL
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 17 Jul 2017 03:15:22 +0000 (23:15 -0400)]
lib: move bt_notification_iterator_next_return to component-class.h
This type is the return type of a callback which is part of a component
class definition (to define an implicit notification iterator class).
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Mon, 17 Jul 2017 00:51:02 +0000 (20:51 -0400)]
lib: use `enum bt_port_status` where possible
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Philippe Proulx [Wed, 14 Jun 2017 21:47:40 +0000 (17:47 -0400)]
Remove unused bt_port_remove_from_component()
This public version should not exist. Only the parent component can
remove one of its port with bt_private_port_remove_from_component().
Signed-off-by: Philippe Proulx <eeppeliteloop@gmail.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Jérémie Galarneau [Thu, 10 Aug 2017 19:24:20 +0000 (15:24 -0400)]
Update .gitignore to add newly generated test files
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Julien Desfossez [Tue, 8 Aug 2017 20:02:35 +0000 (16:02 -0400)]
Re-enable the bin-info and dward tests
During the development of the debug-info plugin, the old tests were
disabled. Re-adapt them to the new tree and re-enable them in the test
suite.
Reported-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Julien Desfossez <jdesfossez@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Michael Jeanson [Tue, 8 Aug 2017 19:19:12 +0000 (15:19 -0400)]
Port: Add glib checks for cross compilation
Signed-off-by: Michael Jeanson <mjeanson@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Thu, 3 Aug 2017 18:52:27 +0000 (14:52 -0400)]
Fix: ctf-testsuite variant-missing-fields
It is valid for an enumeration to contain labels that are missing in the
variant fields. For instance, an enumeration can be used for many
purposes in addition to being used as a selector for a variant, so we
don't want to enforce that a variant needs to have field names for cases
we never expect as enum field input.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Thu, 3 Aug 2017 17:28:36 +0000 (13:28 -0400)]
Fix: fallback on content size if packet size is missing
Fixes ctf-testsuite tests/1.8/regression/pass/2-packets-no-packet-size
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Thu, 3 Aug 2017 15:59:37 +0000 (11:59 -0400)]
Fix: unchecked return value of bt_value_array_append_string
CID
1376147 (#1 of 1): Unchecked return value (CHECKED_RETURN).
check_return: Calling bt_value_array_append_string without checking
return value (as is done elsewhere 49 out of 50 times).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Thu, 3 Aug 2017 15:43:18 +0000 (11:43 -0400)]
Fix: tests: offset_s * ns_per_s should not overflow uint64_t
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Thu, 3 Aug 2017 15:39:23 +0000 (11:39 -0400)]
Fix: unchecked return value in ctf-writer test
CID
1376151 (#1 of 1): Unchecked return value (CHECKED_RETURN)38.
check_return: Calling bt_ctf_field_type_enumeration_add_mapping_unsigned
without checking return value (as is done elsewhere 7 out of 8 times).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
Mathieu Desnoyers [Thu, 3 Aug 2017 14:03:32 +0000 (10:03 -0400)]
Fix: unchecked return value of bt_ctf_field_type_get_field_at_index
CID
1376152 (#1 of 1): Unchecked return value (CHECKED_RETURN).
check_return: Calling bt_ctf_field_type_structure_get_field_by_index
without checking return value (as is done elsewhere 23 out of 25 times).
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Signed-off-by: Jérémie Galarneau <jeremie.galarneau@efficios.com>
This page took 0.042973 seconds and 4 git commands to generate.