⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test-suite-mcast.tcl

📁 ns gpsr路由协议 在ns2平台下实现的 对大家很有好处
💻 TCL
📖 第 1 页 / 共 2 页
字号:
# This test suite is for validating the multicast support in ns.## To run all tests:  test-mcast## To run individual tests:# ns test-suite-mcast.tcl DM1# ns test-suite-mcast.tcl DM2# ...## To view a list of available tests to run with this script:# ns test-suite-mcast.tcl#Class TestSuiteTestSuite instproc init {} {	$self instvar ns_ net_ defNet_ test_ topo_ node_ testName_	set ns_ [new Simulator -multicast on]	#$ns_ use-scheduler List	if {$test_ == "CtrMcast1"} {		Node expandaddr	}		$ns_ trace-all [open temp.rands w]	$ns_ namtrace-all [open temp.rands.nam w]	$ns_ color 0 blue	$ns_ color 1 red	$ns_ color 2 yellow	$ns_ color 30 purple	$ns_ color 31 green		if {$net_ == ""} {		set net_ $defNet_	}	if ![Topology/$defNet_ info subclass Topology/$net_] {		global argv0		puts "$argv0: cannot run test $test_ over topology $net_"		exit 1	}		set topo_ [new Topology/$net_ $ns_]	foreach i [$topo_ array names node_] {		# This would be cool, but lets try to be compatible		# with test-suite.tcl as far as possible.		#		# $self instvar $i		# set $i [$topo_ node? $i]		#		set node_($i) [$topo_ node? $i]	}		if {$net_ == $defNet_} {		set testName_ "$test_"	} else {		set testName_ "$test_:$net_"	}}TestSuite instproc finish { file } {	$self instvar ns_ 	global quiet		$ns_ flush-trace	if { !$quiet } {		puts "running nam..."		exec nam temp.rands.nam &	}	exit 0}TestSuite instproc openTrace { stopTime testName } {	$self instvar ns_	exec rm -f temp.rands	set traceFile [open temp.rands w]	puts $traceFile "v testName $testName"	$ns_ at $stopTime \		"close $traceFile ; $self finish $testName"	return $traceFile}proc usage {} {	global argv0	puts stderr "usage: ns $argv0 <tests> \[<topologies>\]"	puts stderr "Valid tests are:\t[get-subclasses TestSuite Test/]"	puts stderr "Valid Topologies are:\t[get-subclasses SkelTopology Topology/]"	exit 1}proc isProc? {cls prc} {	if [catch "Object info subclass $cls/$prc" r] {		global argv0		puts stderr "$argv0: no such $cls: $prc"		usage	}}proc get-subclasses {cls pfx} {	set ret ""	set l [string length $pfx]		set c $cls	while {[llength $c] > 0} {		set t [lindex $c 0]		set c [lrange $c 1 end]		if [string match ${pfx}* $t] {			lappend ret [string range $t $l end]		}		eval lappend c [$t info subclass]	}	set ret}TestSuite proc runTest {} {	global argc argv quiet	set quiet 0	switch $argc {		1 {			set test $argv			isProc? Test $test			set topo ""		}		2 {			set test [lindex $argv 0]			isProc? Test $test			set a [lindex $argv 1]			if {$a == "QUIET"} {				set topo ""				set quiet 1			} else {				set topo $a				isProc? Topology $topo			}		}		default {			usage		}	}	set t [new Test/$test $topo]	$t run}# Skeleton topology base classClass SkelTopologySkelTopology instproc init {} {	$self next}SkelTopology instproc node? n {	$self instvar node_	if [info exists node_($n)] {		set ret $node_($n)	} else {		set ret ""	}	set ret}SkelTopology instproc add-fallback-links {ns nodelist bw delay qtype args} {	$self instvar node_	set n1 [lindex $nodelist 0]	foreach n2 [lrange $nodelist 1 end] {		if ![info exists node_($n2)] {			set node_($n2) [$ns node]		}		$ns duplex-link $node_($n1) $node_($n2) $bw $delay $qtype		foreach opt $args {			set cmd [lindex $opt 0]			set val [lindex $opt 1]			if {[llength $opt] > 2} {				set x1 [lindex $opt 2]				set x2 [lindex $opt 3]			} else {				set x1 $n1				set x2 $n2			}			$ns $cmd $node_($x1) $node_($x2) $val			$ns $cmd $node_($x2) $node_($x1) $val		}		set n1 $n2	}}Class NodeTopology/4nodes -superclass SkelTopologyNodeTopology/4nodes instproc init ns {	$self next		$self instvar node_	set node_(n0) [$ns node]	set node_(n1) [$ns node]	set node_(n2) [$ns node]	set node_(n3) [$ns node]}Class Topology/net4a -superclass NodeTopology/4nodes# Create a simple four node topology:##	              n3#	             / #       1.5Mb,10ms  / 1.5Mb,10ms                              #    n0 --------- n1#                  \  1.5Mb,10ms#	            \ #	             n2#Topology/net4a instproc init ns {	$self next $ns	$self instvar node_	$ns duplex-link $node_(n0) $node_(n1) 1.5Mb 10ms DropTail	$ns duplex-link $node_(n1) $node_(n2) 1.5Mb 10ms DropTail	$ns duplex-link $node_(n1) $node_(n3) 1.5Mb 10ms DropTail	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class Topology/net4b -superclass NodeTopology/4nodes# 4 nodes on the same LAN##           n0   n1#           |    |#       -------------#           |    |#           n2   n3## Topology/net4b instproc init ns {	$self next $ns	$self instvar node_	$ns multi-link-of-interfaces [list $node_(n0) $node_(n1) $node_(n2) $node_(n3)] 1.5Mb 10ms DropTail	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class NodeTopology/5nodes -superclass SkelTopologyNodeTopology/5nodes instproc init ns {	$self next		$self instvar node_	set node_(n0) [$ns node]	set node_(n1) [$ns node]	set node_(n2) [$ns node]	set node_(n3) [$ns node]	set node_(n4) [$ns node]}Class Topology/net5a -superclass NodeTopology/5nodes## Create a simple five node topology:##                  n4#                 /  \                    #               n3    n2#               |     |#               n0    n1## All links are of 1.5Mbps bandwidth with 10ms latency#Topology/net5a instproc init ns {	$self next $ns	$self instvar node_	$ns duplex-link $node_(n0) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n1) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n3) $node_(n4) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n4) 1.5Mb 10ms DropTail 	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class Topology/net5b -superclass NodeTopology/5nodes## Create a five node topology:##                  n4#                 /  \                    #               n3----n2#               |     |#               n0    n1## All links are of 1.5Mbps bandwidth with 10ms latency#Topology/net5b instproc init ns {    $self next $ns	$self instvar node_	$ns duplex-link $node_(n0) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n1) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n3) $node_(n4) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n4) 1.5Mb 10ms DropTail 	if {[$class info instprocs config] != ""} {		$self config $ns    }}Class Topology/net5c -superclass NodeTopology/5nodes## Create a five node topology:##                  n4#                 /  \                    #               n3----n2#               | \  /|#               |  \  |#               | / \ |#               n0    n1## All links are of 1.5Mbps bandwidth with 10ms latency#Topology/net5c instproc init ns {	$self next $ns	$self instvar node_	$ns duplex-link $node_(n0) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n0) $node_(n2) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n1) $node_(n2) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n1) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n4) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n3) $node_(n4) 1.5Mb 10ms DropTail 	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class Topology/net5d -superclass NodeTopology/5nodes## Create a five node topology:##                  n4#                 /  \                    #               n3----n2#               | \  /|#               |  \  |#               | / \ |#               n0----n1## All links are of 1.5Mbps bandwidth with 10ms latency#Topology/net5d instproc init ns {	$self next $ns	$self instvar node_	$ns duplex-link $node_(n0) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n0) $node_(n2) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n0) $node_(n1) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n1) $node_(n2) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n1) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n4) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n3) $node_(n4) 1.5Mb 10ms DropTail 	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class Topology/net5e -superclass NodeTopology/5nodes## Create a five node topology with 4 nodes on a LAN:##                  n4#                 /  \                    #               n3    n2#               |     |#             -----------#               |     |#               n0    n1#Topology/net5e instproc init ns {	$self next $ns	$self instvar node_	$ns newLan [list $node_(n0) $node_(n3) $node_(n1) $node_(n2)] 1.5Mb 10ms	$ns duplex-link $node_(n3) $node_(n4) 1.5Mb 3ms DropTail	$ns duplex-link-op $node_(n3) $node_(n4) orient right-down	$ns duplex-link $node_(n2) $node_(n4) 1.5Mb 3ms DropTail	$ns duplex-link-op $node_(n2) $node_(n4) orient left-down	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class NodeTopology/6nodes -superclass SkelTopologyNodeTopology/6nodes instproc init ns {	$self next		$self instvar node_	set node_(n0) [$ns node]	set node_(n1) [$ns node]	set node_(n2) [$ns node]	set node_(n3) [$ns node]	set node_(n4) [$ns node]	set node_(n5) [$ns node]}Class Topology/net6a -superclass NodeTopology/6nodes## Create a simple six node topology:##                  n0#                 /  \                    #               n1    n2#              /  \  /  \#             n3   n4   n5## All links are of 1.5Mbps bandwidth with 10ms latency#Topology/net6a instproc init ns {	$self next $ns	$self instvar node_	$ns duplex-link $node_(n0) $node_(n1) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n0) $node_(n2) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n1) $node_(n3) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n1) $node_(n4) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n4) 1.5Mb 10ms DropTail 	$ns duplex-link $node_(n2) $node_(n5) 1.5Mb 10ms DropTail 	if {[$class info instprocs config] != ""} {		$self config $ns	}}Class Topology/net6b -superclass NodeTopology/6nodes# 6 node topology with nodes n2, n3 and n5 on a LAN.##          n4#          |#          n3#          |#    --------------#      |       |#      n5      n2#      |       |#      n0      n1## All point-to-point links have 1.5Mbps Bandwidth, 10ms latency.#Topology/net6b instproc init ns {	$self next $ns	$self instvar node_

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -