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

« back to all changes in this revision

Viewing changes to ibmgtsim/tests/osmStability.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
#
 
5
#  Inject Random Multicast Requests
 
6
#
 
7
 
 
8
########################################################################
 
9
#
 
10
# Set Random Bad Links
 
11
proc setNodePortErrProfile {node} {
 
12
   # pick a random port number - but make sure you picked a connected one
 
13
   set done 0
 
14
   set cnt 0
 
15
   while {!$done && ($cnt < 100) } {
 
16
      set portNum [expr int([rmRand]*[IBNode_numPorts_get $node])+1]
 
17
      set port [IBNode_getPort $node $portNum]
 
18
      if {$port != ""} {
 
19
         if {[IBPort_p_remotePort_get $port] != ""} {
 
20
             set done 1
 
21
         }
 
22
      }
 
23
      incr cnt
 
24
   }
 
25
   if {!$done} {
 
26
      puts "-E- Fail to get connected port for node $node"
 
27
      return
 
28
   }
 
29
 
 
30
   # pick a random drop rate in the range 0 - 1 . The higher the number
 
31
   # the more chances for drop.
 
32
   set dropRate [rmRand]
 
33
 
 
34
   # set the node drop rate
 
35
   puts "-I- Setting drop rate:$dropRate on node:$node port:$portNum"
 
36
   set portErrProf "-drop-rate-avg $dropRate -drop-rate-var 4"
 
37
   IBMSNode_setPhyPortErrProfile sim$node $portNum $portErrProf
 
38
}
 
39
 
 
40
# get a random order of all the fabric nodes:
 
41
proc getNodesByRandomOreder {fabric} {
 
42
   # get number of nodes:
 
43
   set nodesByName [IBFabric_NodeByName_get $fabric]
 
44
 
 
45
   set nodeNameNOrderList {}
 
46
   foreach nodeNameNId [IBFabric_NodeByName_get $fabric] {
 
47
      lappend nodeNameNOrderList [list [lindex $nodeNameNId 1] [rmRand]]
 
48
   }
 
49
 
 
50
   set randNodes {}
 
51
   foreach nodeNameNOrder [lsort -index 1 -real $nodeNameNOrderList] {
 
52
      lappend randNodes [lindex $nodeNameNOrder 0]
 
53
   }
 
54
   return $randNodes
 
55
}
 
56
 
 
57
set fabric [IBMgtSimulator getFabric]
 
58
 
 
59
# get a random order of the nodes:
 
60
set randNodes [getNodesByRandomOreder $fabric]
 
61
set numNodes [llength $randNodes]
 
62
 
 
63
# now get the first N nodes for err profile ...
 
64
set numNodesUsed 0
 
65
set idx 0
 
66
while {($numNodesUsed < $numNodes / 10) && ($numNodesUsed < 12) && ($idx < $numNodes)} {
 
67
   set node [lindex $randNodes $idx]
 
68
   # ignore the root node:
 
69
   if {[IBNode_name_get $node] != "H-1/U1"} {
 
70
      if {[IBNode_type_get $node] != 1} {
 
71
         setNodePortErrProfile $node
 
72
         incr numNodesUsed
 
73
      }
 
74
   }
 
75
   incr idx
 
76
}