📄 test-suite-realaudio.tcl
字号:
# -*- Mode:tcl; tcl-indent-level:8; tab-width:8; indent-tabs-mode:t -*-## Copyright (c) 1998 University of Southern California.# All rights reserved. # # Redistribution and use in source and binary forms are permitted# provided that the above copyright notice and this paragraph are# duplicated in all such forms and that any documentation, advertising# materials, and other materials related to such distribution and use# acknowledge that the software was developed by the University of# Southern California, Information Sciences Institute. The name of the# University may not be used to endorse or promote products derived from# this software without specific prior written permission.# # THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED# WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.# # $Header: /nfs/jade/vint/CVSROOT/ns-2/tcl/test/test-suite-realaudio.tcl,v 1.2 2000/10/04 06:13:50 kclan Exp $# To run all tests: test-all-realaudio## To view a list of available test to run with this script:# ns test-suite-realaudio.tclproc usage {} { global argv0 puts stderr "usage: ns $argv0 realaudio" exit 1}Class TestSuiteClass Test/realaudio -superclass TestSuiteTestSuite instproc init {} {}Test/realaudio instproc init {} {##global seed packetsize nn cnn plottimeset seed 1set packetsize 245set nn 3 ;# number of nodesset cnn [expr $nn -2 ] ;# number of clientsset plottime 15000.0}Test/realaudio instproc run {} {global seed packetsize nn cnn plottimens-random $seed##user start time from a poisson distributionset starttime(2) 0#set tmp [new RandomVariable/Exponential] ;# Poisson process#$tmp set avg_ 5.4674 ;# average arrival interval#artificially syncronize flow start time#every flow starts at multiple of 1.8sset tmp [new RandomVariable/Empirical]$tmp loadCDF userintercdf1for {set i 3} {$i < $nn} {incr i} { set p [$tmp value] set i1 [expr $i - 1 ] set starttime($i) [expr $starttime($i1) + $p ]}##number of sequential flow per userset rv0 [new RandomVariable/Empirical]$rv0 loadCDF sflowcdf##flow durationset rv1 [new RandomVariable/Empirical]$rv1 loadCDF flowdurcdffor {set i 2} {$i < $nn} {incr i} { set q [$rv0 value] set sflow($i) [expr int($q) ]# puts "node $i has $sflow($i) flow " set p [$rv1 value] set dur($i) [expr $p * 60 ]# puts "node $i duration : $dur($i)"}for {set i 2} {$i < $nn} {incr i} { set flowstoptime($i) [expr $starttime($i) + $dur($i) ]}set ns [new Simulator]for {set i 0} {$i < $nn} {incr i} {set n($i) [$ns node]}set f [open temp.rands w]$ns trace-all $f$ns duplex-link $n(0) $n(1) 1.5Mb 10ms DropTailfor {set j 2} {$j < $nn} {incr j} { $ns duplex-link $n(0) $n($j) 10Mb 5ms DropTail}set rv2 [new RandomVariable/Empirical]$rv2 loadCDF ontimecdfset rv3 [new RandomVariable/Empirical]$rv3 loadCDF fratecdffor {set i 2} {$i < $nn} {incr i} { set s($i) [new Agent/UDP] $ns attach-agent $n(1) $s($i) set null($i) [new Agent/Null] $ns attach-agent $n($i) $null($i) $ns connect $s($i) $null($i) set realaudio($i) [new Application/Traffic/RealAudio] $realaudio($i) set packetSize_ $packetsize $realaudio($i) set burst_time_ 0.05ms $realaudio($i) set idle_time_ 1800ms set flow_rate [$rv3 value] set r [ format "%fk" $flow_rate ]# puts "node $i flow rate $r" $realaudio($i) set rate_ $r $realaudio($i) attach-agent $s($i)}for {set i 2} {$i < $nn} {incr i} { $ns at $starttime($i) "$realaudio($i) start" $ns at $flowstoptime($i) "$realaudio($i) stop"# puts "node $i starttime $starttime($i)"# puts "node $i stoptime $flowstoptime($i)" ##schedule for next flow for {set h 2} {$h <= $sflow($i)} {incr h} { set starttime($i) [expr $flowstoptime($i) + 0.001 ] set p [$rv1 value] set dur($i) [expr $p * 60 ]# puts "node $i duration : $dur($i)" set flowstoptime($i) [expr $starttime($i) + $dur($i) ] set realaudio($i) [new Application/Traffic/RealAudio] $realaudio($i) set packetSize_ $packetsize $realaudio($i) set burst_time_ 0.05ms $realaudio($i) set idle_time_ 1800ms set flow_rate [$rv3 value] set r [ format "%fk" $flow_rate ]# puts "node $i flow rate $r" $realaudio($i) set rate_ $r $realaudio($i) attach-agent $s($i) }}$ns at $plottime "close $f"$ns at $plottime "puts \"NS EXITING...\" ; $ns halt"$ns run}TestSuite instproc finish {} { exec awk { { if (($1 == "+") && ($3 == 1) ) \ print $2, $10 } } temp.rands > out.tr exit 0}proc runtest {arg} { global quiet set quiet 0 set b [llength $arg] if {$b == 1} { set test $arg } elseif {$b == 2} { set test [lindex $arg 0] if {[lindex $arg 1] == "QUIET"} { set quiet 1 } } else { usage } switch $test { realaudio { set t [new Test/$test] } default { stderr "Unknown test $test" exit 1 } } $t run}global argv arg0 runtest $argv
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -