diff mbox

[lttng-tools] Fix: support for older versions of Babeltrace in test script

Message ID 1482269486-20433-1-git-send-email-francis.deslauriers@efficios.com
State Accepted, archived
Headers show

Commit Message

Francis Deslauriers Dec. 20, 2016, 9:31 p.m. UTC
A new context field was introduced in version LTTng 2.8 that is printed
by Babeltrace prior to v1.2.5. This regex thus fails to match the
output. Since the context fields are not used by the script, we create a
non-capturing group for these fields that matches on both old and new
Babeltrace.
This is causing problems on Ubuntu 14.04 Trusty when building
lttng-tools from source and using the Babeltrace package from the
official repository (v1.2.1) to run the test suite.

Also, this patch removes commented and used code in the function but
keeps the names of non-capturing groups for readability.

Signed-off-by: Francis Deslauriers <francis.deslauriers at efficios.com>
CC: Philippe Proulx <pproulx at efficios.com>
---
 tests/utils/babelstats.pl | 31 +++++++++----------------------
 1 file changed, 9 insertions(+), 22 deletions(-)

Comments

Jérémie Galarneau Jan. 9, 2017, 7:11 p.m. UTC | #1
Merged, thanks!

Jérémie

On 20 December 2016 at 16:31, Francis Deslauriers
<francis.deslauriers at efficios.com> wrote:
> A new context field was introduced in version LTTng 2.8 that is printed
> by Babeltrace prior to v1.2.5. This regex thus fails to match the
> output. Since the context fields are not used by the script, we create a
> non-capturing group for these fields that matches on both old and new
> Babeltrace.
> This is causing problems on Ubuntu 14.04 Trusty when building
> lttng-tools from source and using the Babeltrace package from the
> official repository (v1.2.1) to run the test suite.
>
> Also, this patch removes commented and used code in the function but
> keeps the names of non-capturing groups for readability.
>
> Signed-off-by: Francis Deslauriers <francis.deslauriers at efficios.com>
> CC: Philippe Proulx <pproulx at efficios.com>
> ---
>  tests/utils/babelstats.pl | 31 +++++++++----------------------
>  1 file changed, 9 insertions(+), 22 deletions(-)
>
> diff --git a/tests/utils/babelstats.pl b/tests/utils/babelstats.pl
> index 37a9b06..16766ba 100755
> --- a/tests/utils/babelstats.pl
> +++ b/tests/utils/babelstats.pl
> @@ -141,31 +141,18 @@ my @events;
>
>  while (<>)
>  {
> -       my $timestamp   = '\[(.*)\]';
> -       my $elapsed     = '\((.*)\)';
> -       my $hostname    = '.*';
> -       my $pname       = '.*';
> -       my $pinfo       = '.*';
> -       my $pid         = '\d+';
> -       my $tp_event    = '.*';
> -       my $cpu_info    = '{\scpu_id\s=\s(\d+)\s\}';
> -       my $fields      = '{(.*)}';
> +       my $timestamp   = '\[(?:.*)\]';
> +       my $elapsed     = '\((?:.*)\)';
> +       my $hostname    = '(?:.*)';
> +       my $tp_event    = '(.*)';
> +       my $pkt_context = '(?:\{[^}]*\},\s)*';
> +       my $fields      = '\{(.*)\}$';
>
>         # Parse babeltrace text output format
> -       if (/$timestamp\s$elapsed\s($pinfo)\s($tp_event):\s$cpu_info,\s$fields/) {
> +       if (/$timestamp\s$elapsed\s$hostname\s$tp_event:\s$pkt_context$fields/) {
>                 my %event_hash;
> -               $event_hash{'timestamp'}   = $1;
> -               $event_hash{'elapsed'}     = $2;
> -               $event_hash{'pinfo'}       = $3;
> -
> -#              my @split_pinfo = split(':', $3);
> -#              $event_hash{'hostname'}    = $split_pinfo[0];
> -#              $event_hash{'pname'}       = defined($split_pinfo[1]) ? $split_pinfo[1] : undef;
> -#              $event_hash{'pid'}         = defined($split_pinfo[2]) ? $split_pinfo[2] : undef;
> -
> -               $event_hash{'tp_event'}    = $4;
> -               $event_hash{'cpu_id'}      = $5;
> -               $event_hash{'fields'}      = parse_fields($6);
> +               $event_hash{'tp_event'}    = $1;
> +               $event_hash{'fields'}      = parse_fields($2);
>
>                 push @events, \%event_hash;
>         }
> --
> 2.7.4
>
diff mbox

Patch

diff --git a/tests/utils/babelstats.pl b/tests/utils/babelstats.pl
index 37a9b06..16766ba 100755
--- a/tests/utils/babelstats.pl
+++ b/tests/utils/babelstats.pl
@@ -141,31 +141,18 @@  my @events;
 
 while (<>)
 {
-	my $timestamp   = '\[(.*)\]';
-	my $elapsed     = '\((.*)\)';
-	my $hostname    = '.*';
-	my $pname       = '.*';
-	my $pinfo       = '.*';
-	my $pid         = '\d+';
-	my $tp_event    = '.*';
-	my $cpu_info    = '{\scpu_id\s=\s(\d+)\s\}';
-	my $fields      = '{(.*)}';
+	my $timestamp   = '\[(?:.*)\]';
+	my $elapsed     = '\((?:.*)\)';
+	my $hostname    = '(?:.*)';
+	my $tp_event    = '(.*)';
+	my $pkt_context = '(?:\{[^}]*\},\s)*';
+	my $fields      = '\{(.*)\}$';
 
 	# Parse babeltrace text output format
-	if (/$timestamp\s$elapsed\s($pinfo)\s($tp_event):\s$cpu_info,\s$fields/) {
+	if (/$timestamp\s$elapsed\s$hostname\s$tp_event:\s$pkt_context$fields/) {
 		my %event_hash;
-		$event_hash{'timestamp'}   = $1;
-		$event_hash{'elapsed'}     = $2;
-		$event_hash{'pinfo'}       = $3;
-
-#		my @split_pinfo = split(':', $3);
-#		$event_hash{'hostname'}    = $split_pinfo[0];
-#		$event_hash{'pname'}       = defined($split_pinfo[1]) ? $split_pinfo[1] : undef;
-#		$event_hash{'pid'}         = defined($split_pinfo[2]) ? $split_pinfo[2] : undef;
-
-		$event_hash{'tp_event'}    = $4;
-		$event_hash{'cpu_id'}      = $5;
-		$event_hash{'fields'}      = parse_fields($6);
+		$event_hash{'tp_event'}    = $1;
+		$event_hash{'fields'}      = parse_fields($2);
 
 		push @events, \%event_hash;
 	}