~ubuntu-branches/ubuntu/raring/ibutils/raring-proposed

« back to all changes in this revision

Viewing changes to ibmgtsim/tests/discover.sim.tcl

  • Committer: Bazaar Package Importer
  • Author(s): Benoit Mortier
  • Date: 2010-01-11 22:22:00 UTC
  • Revision ID: james.westby@ubuntu.com-20100111222200-53kum2et5nh13rv3
Tags: upstream-1.2-OFED-1.4.2
ImportĀ upstreamĀ versionĀ 1.2-OFED-1.4.2

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
puts "Randomally picking 10 ports and assigning random drop rate on"
 
3
 
 
4
proc setPortErrProfile {node portNum} {
 
5
   # pick a random drop rate in the range 0 - 1 . The higher the number the more chances for
 
6
   # drop.
 
7
   set dropRate [rmRand]
 
8
 
 
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
 
13
}
 
14
 
 
15
proc setNodePortErrProfile {node} {
 
16
   # first deicde if the entire node is broken:
 
17
   set allPorts [expr [rmRand] > 0.8]
 
18
 
 
19
   if {$allPorts != 0} {
 
20
      for {set pn 1} {$pn <= [IBNode_numPorts_get $node]} {incr pn} {
 
21
         setPortErrProfile $node $pn
 
22
      }
 
23
   } else {
 
24
      # pick a random port number
 
25
      set portNum [expr int([rmRand]*[IBNode_numPorts_get $node])+1]
 
26
      setPortErrProfile $node $portNum
 
27
   }
 
28
}
 
29
 
 
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]
 
34
 
 
35
   set nodeNameNOrderList {}
 
36
   foreach nodeNameNId [IBFabric_NodeByName_get $fabric] {
 
37
      lappend nodeNameNOrderList [list [lindex $nodeNameNId 1] [rmRand]]
 
38
   }
 
39
 
 
40
   set randNodes {}
 
41
   foreach nodeNameNOrder [lsort -index 1 -real $nodeNameNOrderList] {
 
42
      lappend randNodes [lindex $nodeNameNOrder 0]
 
43
   }
 
44
   return $randNodes
 
45
}
 
46
 
 
47
set fabric [IBMgtSimulator getFabric]
 
48
 
 
49
# get a random order of the nodes:
 
50
set randNodes [getNodesByRandomOreder $fabric]
 
51
set numNodes [llength $randNodes]
 
52
 
 
53
###########################################
 
54
set NumberOfBadPorts 4
 
55
###########################################
 
56
 
 
57
# now get the first NumberOfBadPorts Nodes for err profile ...
 
58
set numNodesUsed 0
 
59
set idx 0
 
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
 
65
      incr numNodesUsed
 
66
   }
 
67
   incr idx
 
68
}