2
puts "Randomally picking 10 ports and assigning random drop rate on"
4
proc setPortErrProfile {node portNum} {
5
# pick a random drop rate in the range 0 - 1 . The higher the number the more chances for
9
# set the node drop rate
10
puts "-I- Setting drop rate:$dropRate on node:$node port:$portNum"
11
set portErrProf "-drop-rate-avg $dropRate -drop-rate-var 4"
12
IBMSNode_setPhyPortErrProfile sim$node $portNum $portErrProf
15
proc setNodePortErrProfile {node} {
16
# first deicde if the entire node is broken:
17
set allPorts [expr [rmRand] > 0.8]
20
for {set pn 1} {$pn <= [IBNode_numPorts_get $node]} {incr pn} {
21
setPortErrProfile $node $pn
24
# pick a random port number
25
set portNum [expr int([rmRand]*[IBNode_numPorts_get $node])+1]
26
setPortErrProfile $node $portNum
30
# get a random order of all the fabric nodes:
31
proc getNodesByRandomOreder {fabric} {
32
# get number of nodes:
33
set nodesByName [IBFabric_NodeByName_get $fabric]
35
set nodeNameNOrderList {}
36
foreach nodeNameNId [IBFabric_NodeByName_get $fabric] {
37
lappend nodeNameNOrderList [list [lindex $nodeNameNId 1] [rmRand]]
41
foreach nodeNameNOrder [lsort -index 1 -real $nodeNameNOrderList] {
42
lappend randNodes [lindex $nodeNameNOrder 0]
47
set fabric [IBMgtSimulator getFabric]
49
# get a random order of the nodes:
50
set randNodes [getNodesByRandomOreder $fabric]
51
set numNodes [llength $randNodes]
53
###########################################
54
set NumberOfBadPorts 4
55
###########################################
57
# now get the first NumberOfBadPorts Nodes for err profile ...
60
while {($numNodesUsed < $numNodes / 10) && ($numNodesUsed < $NumberOfBadPorts) && ($idx < $numNodes)} {
61
set node [lindex $randNodes $idx]
62
# ignore the root node:
63
if {[IBNode_name_get $node] != "H-1/U1"} {
64
setNodePortErrProfile $node