From b24c2ac9458c92b34dcb7df28cb8d0a65bf3810e Mon Sep 17 00:00:00 2001 From: Piotr Gregor <piotrek.gregor@gmail.com> Date: Fri, 30 Sep 2016 14:28:34 +0100 Subject: [PATCH] FS-9595 [avmd] Extend avmd show api Add number of sessions currently running to output of avmd show api. --- src/mod/applications/mod_avmd/mod_avmd.c | 1 + .../scripts/avmd_originate_multiple.pl | 2 +- .../avmd_originate_multiple_loopback.pl | 78 +++++++++++++++++++ .../mod_avmd/scripts/avmd_test.pl | 2 +- 4 files changed, 81 insertions(+), 2 deletions(-) create mode 100644 src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl diff --git a/src/mod/applications/mod_avmd/mod_avmd.c b/src/mod/applications/mod_avmd/mod_avmd.c index 3fbab37730..9ed6676f09 100644 --- a/src/mod/applications/mod_avmd/mod_avmd.c +++ b/src/mod/applications/mod_avmd/mod_avmd.c @@ -943,6 +943,7 @@ static void avmd_show(switch_stream_handle_t *stream, switch_mutex_t *mutex) { stream->write_function(stream, "inbound channel \t%u\n", avmd_globals.settings.inbound_channnel); stream->write_function(stream, "outbound channel \t%u\n", avmd_globals.settings.outbound_channnel); stream->write_function(stream, "detection mode \t%u\n", avmd_globals.settings.mode); + stream->write_function(stream, "sessions \t%"PRId64"\n", avmd_globals.session_n); stream->write_function(stream, "\n\n"); if (mutex != NULL) { diff --git a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl index ace73e0570..bc30477cc0 100644 --- a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl +++ b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple.pl @@ -16,7 +16,7 @@ use Time::HiRes; my $host = "127.0.0.1"; my $port = "8021"; my $pass = "ClueCon"; -my $extension_base = "sofia/internal/1000\@192.168.1.60"; +my $extension_base = "sofia/internal/1000\@192.168.1.1"; my $playback = 'local_stream://moh'; my $context = 'default'; diff --git a/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl new file mode 100644 index 0000000000..1baf5b2d70 --- /dev/null +++ b/src/mod/applications/mod_avmd/scripts/avmd_originate_multiple_loopback.pl @@ -0,0 +1,78 @@ +#!/usr/bin/perl -w + + +#brief Call (possibly) multiple voicemails +# and print detection result to the console. +#author Piotr Gregor <piotrgregor@rsyncme.org> +#date 15 Sept 2016 02:44 PM + + +use strict; +use warnings; +require ESL; +use POSIX; +use Time::HiRes; + +my $host = "127.0.0.1"; +my $port = "8021"; +my $pass = "ClueCon"; +my $extension_base = "sofia/internal/1000\@192.168.1.1"; + +my $playback = 'local_stream://moh'; +my $context = 'default'; +my $gateway; +my $dest; +my $callerid; +my $thread_n; +my $idx = 0; + + +if ($#ARGV + 1 eq 3) { + $dest = $ARGV[0]; + $callerid = $ARGV[1]; + $thread_n = $ARGV[2]; + print "Dialing [" .$thread_n ."] calls simultaneously to [loopback][" .$dest ."] as [" .$callerid ."]\n"; +} else { + die "Please specify destination number, caller id and number of calls to make\n"; +} + +my $con = new ESL::ESLconnection($host, $port, $pass); +if (!$con) { + die "Unable to establish connection to $host:$port\n"; +} +if ($con->connected()) { + print "OK, Connected.\n"; +} else { + die "Connection failure.\n"; +} + +while($con->connected() && ($idx < $thread_n)) { + call_once($dest, $callerid, $idx); + $idx++; + Time::HiRes::sleep(0.11); # avoid switch_core_session.c:2265 Throttle Error! 33, switch_time.c:1227 Over Session Rate of 30! +} + +print "Disconnected.\n\n"; + +sub call_once { + my ($dest, $callerid, $idx) = @_; + my $uuid = + my $originate_string = + 'originate ' . + '{ignore_early_media=true,' . + 'originator_codec=PCMA,' . + 'origination_uuid=%s,' . + 'originate_timeout=60,' . + 'origination_caller_id_number=' . $callerid . ',' . + 'origination_caller_id_name=' . $callerid . '}'; + + $originate_string .= 'loopback/' . $dest . '/' . $context; + $originate_string .= ' ' . '&playback(' . $playback . ')'; + + my $uuid = $con->api('create_uuid')->getBody(); + my ($time_epoch, $time_hires) = Time::HiRes::gettimeofday(); + printf("[%s]\tCalling with uuid [%s] [%s]... [%s]\n", $idx + 1, $uuid, POSIX::strftime('%Y-%m-%d %H:%M:%S', localtime($time_epoch)), $originate_string); + + $con->bgapi(sprintf($originate_string, $uuid)); + $con->api('uuid_setvar ' . $uuid .' execute_on_answer avmd_start'); +} diff --git a/src/mod/applications/mod_avmd/scripts/avmd_test.pl b/src/mod/applications/mod_avmd/scripts/avmd_test.pl index 06b91f4be1..6f6ac0f5fd 100644 --- a/src/mod/applications/mod_avmd/scripts/avmd_test.pl +++ b/src/mod/applications/mod_avmd/scripts/avmd_test.pl @@ -169,7 +169,7 @@ $con->events("plain", "CHANNEL_HANGUP"); print "OK.\n\n"; printf("\nRunning [" .keys(%numbers) ."] tests.\n\n"); -printf("outbound uuid | destination number | timestamp | expectation | test result | freq | f-variance | amplitude | a-variance\n\n"); +printf("outbound uuid | destination number | timestamp | expectation | test result | freq | f-variance | amplitude | a-variance | resolution | offset | idx\n\n"); foreach $dest (sort keys %numbers) { if (!$con->connected()) { last;