From ac4165878cfd004805605d99e61c6c015ede5b49 Mon Sep 17 00:00:00 2001 From: Victor Seva Date: Fri, 15 May 2020 13:14:32 +0200 Subject: [PATCH] TT#81700 bin/show_flow_diff.pl * shows differences between test_yml and cfgt_json > # ./bin/show_flow_diff.pl scenarios/invite/0007_test.yml log/scenarios/invite/0007.json > # ./bin/show_flow_diff.pl scenarios/invite/0007_test.yml log/scenarios/invite/0008.json > @@ -6,8 +6,12 @@ > - return|ROUTE_APPLY_HEADER_RULES: > - start|ROUTE_PREPARE_UA: > - return|ROUTE_PREPARE_UA: > + - start|REPLY_ROUTE_RTPENGINE: > + - return|REPLY_ROUTE_RTPENGINE: > - start|REPLY_ROUTE_NAT_CONTINUE: > - start|ROUTE_EXIT: > - start|ROUTE_RUNTIME: > - return|ROUTE_RUNTIME: > - - exit|ROUTE_EXIT: > + - start|dialog:start: > + - return|dialog:start: > + - return|dialog:start: Change-Id: If2241c9a313f7bda71d3179cab8d9390fa21d9b9 --- bin/show_flow.pl | 4 +-- bin/show_flow_diff.pl | 82 +++++++++++++++++++++++++++++++++++++++++++ debian/control | 2 ++ 3 files changed, 86 insertions(+), 2 deletions(-) create mode 100755 bin/show_flow_diff.pl diff --git a/bin/show_flow.pl b/bin/show_flow.pl index d9b6265c..f0cef100 100755 --- a/bin/show_flow.pl +++ b/bin/show_flow.pl @@ -1,6 +1,6 @@ #!/usr/bin/env perl # -# Copyright: 2013 Sipwise Development Team +# Copyright: 2013-2020 Sipwise Development Team # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -69,7 +69,7 @@ foreach my $i (@{$inlog->{'flow'}}) { foreach my $key (keys %{$i}) { - if($yml) { print "- ".$key.":\n"; } + if($yml) { print " - ".$key.":\n"; } else { print "$key\n"; } } } diff --git a/bin/show_flow_diff.pl b/bin/show_flow_diff.pl new file mode 100755 index 00000000..76ecffd6 --- /dev/null +++ b/bin/show_flow_diff.pl @@ -0,0 +1,82 @@ +#!/usr/bin/env perl +# +# Copyright: 2020 Sipwise Development Team +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This package is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# On Debian systems, the complete text of the GNU General +# Public License version 3 can be found in "/usr/share/common-licenses/GPL-3". +# +use 5.014; +use strict; +use warnings; +use Cwd 'abs_path'; +use Data::Dumper; +use Getopt::Long; +use English; +use YAML::XS; +use utf8; +use JSON; +use Text::Diff; + +sub usage +{ + my $output = "usage: show_flow_diff.pl [-h] test_yml log_json\n"; + $output .= "\tOptions:\n"; + $output .= "-h --help: this help\n"; + return $output +} + +my $help = 0; +GetOptions ("h|help" => \$help) + or die("Error in command line arguments\n".usage()); + +if($#ARGV!=1 || $help) +{ + die(usage()) +} +my $file_yml = abs_path($ARGV[0]); +my $test = YAML::XS::LoadFile($file_yml); + +my $file_json = abs_path($ARGV[1]); +my $log; +{ + local $INPUT_RECORD_SEPARATOR = undef; #Enable 'slurp' mode + open my $fh, "<", $file_json; + my $json = <$fh>; + close $fh; + $log = decode_json($json); +} + +my $text_yml = ""; +foreach my $i (@{$test->{'flow'}}) +{ + foreach my $key (keys %{$i}) + { + $text_yml .= " - ".$key.":\n"; + } +} + +my $text_json = ""; +foreach my $i (@{$log->{'flow'}}) +{ + foreach my $key (keys %{$i}) + { + $text_json .= " - ".$key.":\n"; + } +} + +my $diff = diff(\$text_yml, \$text_json, { STYLE => "Unified" }); +print $diff; +#EOF diff --git a/debian/control b/debian/control index 6a9df0bb..2889df40 100644 --- a/debian/control +++ b/debian/control @@ -10,6 +10,7 @@ Build-Depends: libjson-perl, libtemplate-perl, libtext-csv-perl, + libtext-diff-perl, libyaml-libyaml-perl, python3:any, Recommends: @@ -28,6 +29,7 @@ Depends: libjson-perl, libtemplate-perl, libtext-csv-perl, + libtext-diff-perl, libyaml-libyaml-perl, ngcp-provisioning-tools, parallel,