mirror of
https://github.com/Telecominfraproject/wlan-lanforge-scripts.git
synced 2025-11-02 19:58:03 +00:00
l3_video: less output, better optional argument handling
This commit is contained in:
@@ -6,6 +6,7 @@ use diagnostics;
|
||||
use Carp;
|
||||
$SIG{ __DIE__ } = sub { Carp::confess( @_ ) };
|
||||
$SIG{ __WARN__ } = sub { Carp::confess( @_ ) };
|
||||
use Data::Dumper;
|
||||
|
||||
# Un-buffer output
|
||||
$| = 1;
|
||||
@@ -157,9 +158,10 @@ our %avail_stream_res = (
|
||||
|
||||
our $avail_stream_desc = join(", ", keys(%avail_stream_res));
|
||||
our $resolution = "720p";
|
||||
my $list_streams = 0;
|
||||
my $list_streams = undef;
|
||||
|
||||
our $usage = "$0 # modulates a Layer 3 CX to emulate a video server
|
||||
our $usage = "$0: # modulates a Layer 3 CX to emulate a video server
|
||||
# Expects an existing L3 connection
|
||||
--mgr {hostname | IP}
|
||||
--mgr_port {ip port}
|
||||
--tx_style { constant | bufferfill }
|
||||
@@ -174,32 +176,34 @@ our $usage = "$0 # modulates a Layer 3 CX to emulate a video server
|
||||
# default $resolution
|
||||
--log_cli {0|1} # use this to record cli commands
|
||||
|
||||
Example: $0 --cx_name bursty-udp --stream 720p --buf_size 8M --max_tx 40000000
|
||||
Example:
|
||||
1) create the L3 connection:
|
||||
./lf_firemod.pl --resource 1 --action create_endp bursty-udp-A --speed 0 --endp_type lf_udp --port_name eth1 --report_timer 500
|
||||
./lf_firemod.pl --resource 1 --action create_endp bursty-udp-B --speed 0 --endp_type lf_udp --port_name eth2 --report_timer 500
|
||||
./lf_firemod.pl --resource 1 --action create_cx --cx_name bursty-udp --cx_endps bursty-udp-A,bursty-udp-B
|
||||
$0 --cx_name bursty-udp --stream 720p --buf_size 8M --max_tx 40M
|
||||
";
|
||||
# --frame_rate {$frame_rates_desc} # not really applicable
|
||||
# the stream resolution (kbps) is really a better burn rate
|
||||
|
||||
my $show_help = 0;
|
||||
my $show_help = undef;
|
||||
|
||||
|
||||
if (@ARGV < 2) {
|
||||
print $usage;
|
||||
exit 0;
|
||||
}
|
||||
GetOptions
|
||||
(
|
||||
'help|h' => \$show_help,
|
||||
'mgr|m=s' => \$::lfmgr_host,
|
||||
'mgr_port|p=i' => \$::lfmgr_port,
|
||||
'log_cli=s{0,1}' => \$log_cli,
|
||||
'tx_style|style=s' => \$::tx_style,
|
||||
'mgr_port|p:i' => \$::lfmgr_port,
|
||||
'log_cli:s{0,1}' => \$log_cli,
|
||||
'tx_style|style:s' => \$::tx_style,
|
||||
'cx_name|e=s' => \$::cx_name,
|
||||
'tx_side|side|s=s' => \$::tx_side,
|
||||
'tx_side|side|s:s' => \$::tx_side,
|
||||
'max_tx=s' => \$::max_tx,
|
||||
'min_tx=s' => \$::min_tx,
|
||||
'min_tx:s' => \$::min_tx,
|
||||
'buf_size|buf=s' => \$::buf_size,
|
||||
'stream_res|stream=s' => \$::stream_key,
|
||||
'list_streams' => \$list_streams,
|
||||
) || die($::usage);
|
||||
'list_streams+' => \$list_streams,
|
||||
) || die($!);
|
||||
|
||||
|
||||
if ($show_help) {
|
||||
@@ -278,6 +282,7 @@ sub cleanexit {
|
||||
if ($::quiet eq "1" ) {
|
||||
$::quiet = "yes";
|
||||
}
|
||||
|
||||
# Wait up to 60 seconds when requesting info from LANforge.
|
||||
my $t = new Net::Telnet(Prompt => '/default\@btbits\>\>/',
|
||||
Timeout => 60);
|
||||
@@ -367,7 +372,8 @@ $stream_bps = @{$::avail_stream_res{$stream_key}}[$stream_keys{stream_bps}];
|
||||
|
||||
my $fill_time = $::buf_size / $max_tx;
|
||||
my $drain_time = $::buf_size / $stream_bps;
|
||||
print "Filling $::buf_size buffer for $::stream_key takes $fill_time s, empties in $drain_time s\n";
|
||||
print "Filling $::buf_size buffer for $::stream_key takes $fill_time s, empties in $drain_time s\n"
|
||||
unless($::quiet eq "yes");
|
||||
|
||||
|
||||
die ("Please provide cx_name")
|
||||
@@ -378,30 +384,17 @@ my @matches = grep {/Could not find/} @lines;
|
||||
die($matches[0])
|
||||
unless (@matches == 0);
|
||||
|
||||
print "Stopping and configuring $::cx_name...";
|
||||
print "Stopping and configuring $::cx_name\n" unless($quiet eq "yes");
|
||||
$::utils->doCmd($::utils->fmt_cmd("set_cx_state", "all", $::cx_name, "STOPPED"));
|
||||
|
||||
my $endp = "$::cx_name-${tx_side}";
|
||||
@lines = split("\r?\n", $::utils->doAsyncCmd($::utils->fmt_cmd("nc_show_endp", $endp)));
|
||||
#print "=" x 72, "\n";
|
||||
#print join("\n", @lines), "\n";
|
||||
#print "=" x 72, "\n";
|
||||
|
||||
|
||||
|
||||
@matches = grep {/ Shelf: 1, Card: /} @lines;
|
||||
die ("No matches for show endp $endp")
|
||||
unless($matches[0]);
|
||||
|
||||
#print "=" x 72, "\n";
|
||||
#print $matches[0], "\n";
|
||||
#print "=" x 72, "\n";
|
||||
|
||||
my ($res, $port, $type) = $matches[0] =~ /, Card: (\d+)\s+Port: (\d+)\s+Endpoint: \d+ Type: ([^ ]+)\s+/;
|
||||
#print "=" x 72, "\n";
|
||||
#print join("\n", @lines), "\n";
|
||||
#print "=" x 72, "\n";
|
||||
|
||||
|
||||
my $cmd = $::utils->fmt_cmd("add_endp", $endp, 1, $res, $port, $type,
|
||||
$NA, # ip_port
|
||||
@@ -409,19 +402,19 @@ my $cmd = $::utils->fmt_cmd("add_endp", $endp, 1, $res, $port, $type,
|
||||
$::min_tx, # min_rate
|
||||
$::min_tx # max_rate
|
||||
);
|
||||
#print "CMD: $cmd\n";
|
||||
$::utils->doAsyncCmd($cmd);
|
||||
|
||||
$::utils->doAsyncCmd($cmd);
|
||||
print "Starting $::cx_name..." unless($quiet eq "yes");
|
||||
$::utils->doCmd($::utils->fmt_cmd("set_cx_state", "all", $::cx_name, "RUNNING"));
|
||||
|
||||
do {
|
||||
$cmd = $::utils->fmt_cmd("add_endp", $endp, 1, $res, $port, $type, $NA, $NA, $::max_tx, $::max_tx);
|
||||
print "+";
|
||||
print "+" unless ($quiet eq "yes");
|
||||
$::utils->doAsyncCmd($cmd);
|
||||
`sleep $fill_time`;
|
||||
|
||||
$cmd = $::utils->fmt_cmd("add_endp", $endp, 1, $res, $port, $type, $NA, $NA, $::min_tx, $::min_tx);
|
||||
print "-";
|
||||
print "-" unless($quiet eq "yes");
|
||||
$::utils->doAsyncCmd($cmd);
|
||||
my $drain_wait = $drain_time - $fill_time;
|
||||
`sleep $drain_wait`;
|
||||
|
||||
Reference in New Issue
Block a user