add in dependencies folder loadgen_SB.sh script
diff --git a/TestON/dependencies/loadgen_SB.sh b/TestON/dependencies/loadgen_SB.sh
new file mode 100755
index 0000000..41b12fd
--- /dev/null
+++ b/TestON/dependencies/loadgen_SB.sh
@@ -0,0 +1,153 @@
+#!/bin/bash
+'''
+This is the southbound load generator to generator topology events for tests, such as scale-out and performance testing. 
+Example command: ./loadgen_SB.sh startload "1.1.1.1:6633 2.2.2.2:6633" 100 4 100 300 11 - will have 100 switches RR connection to the list of controllers. There will be 4 dataplane ports per switch; switch connection rate (aggregated) is 100 switch/second; duration is 300 seconds; "11" is used as part of the dpid to distinguish switch generated from multiple instances of this generator. Switch disconnnect will use "127.0.0.1:10000" as its connection." 
+'''
+
+case "$1" in
+	addsw)
+		numsw=$2
+		;;
+	delsw)
+		numsw=$2
+        ;;
+    startload)
+		list_ctrl=$2;numsw=$3;numport=$4;rate=$5;duration=$6;prefix_dpid=$7
+        sleeptimer=$(echo "scale=4; (1/$rate)"|bc)
+        ;;
+    chksw)
+		numsw=$2
+        ;;
+    *)
+        #echo "Enter action:"
+        #echo "addsw number_switches - addsw 200"
+        #echo "delsw number_switches - delsw 200"
+        echo "startload list of controllers numsw numportPerSW rate(#/s) duration(s) dpid_prefix - startload "1.1.1.1 2.2.2.2 3.3.3.3" 100 4 10 300 11  #switches will be evenly spread to those controllers"
+		echo "prefix_dpid is the first two octect of dpid in hex, such as "11", or "aa"."
+		echo "This command will first add numb_of_switches to OVSDB; then generate the load as configured; when finished, delete all switches from OVSDB."
+        #echo "chsw num_switches - chsw 200 #get all switches and their current controller connection"
+        exit 1
+esac
+
+add-ovs () 
+{
+	for ((i=1;i<=$numsw;i++))
+    	do      
+    		str=$(printf '%014X' $i); dpid=$prefix_dpid$str
+			echo "adding ovs switch s$i"
+        	sudo ovs-vsctl add-br "s"$i
+			sudo ovs-vsctl set bridge "s"$i other-config:datapath-id=$dpid
+            
+            #echo "adding $numport dataplane ports to switch s$i ... "
+			for ((p=1; p<=$numport; p++))
+				do
+				echo "adding port $p to switch s$i ... "
+				sudo ovs-vsctl add-port "s"$i "s"$i"p"$p
+            done
+	done
+}
+
+del-ovs () 
+{
+	for ((i=1;i<=$numsw;i++))
+        do
+                #echo "deleting ovs switch s$i"
+                sudo ovs-vsctl del-br "s"$i 
+        done
+}
+
+conn-ovs () 
+{
+	i=1
+	while (($i<=$numsw)) 
+	do 
+		for ctrl_port in ${list_ctrl[@]}
+		do
+			if (($i!=0))
+			then
+				#ovsctrl="tcp:"$ctrl_port
+				#echo  "s"$i
+				sudo ovs-vsctl --no-wait --no-syslog set-controller "s"$i "tcp:"$ctrl_port & 
+				let i+=1
+				sleep $sleeptimer
+			fi
+		done
+	done
+}
+
+disconn-ovs () 
+{
+	i=1
+    while (($i<=$numsw)) 
+    do
+		ovsctrl="tcp:127.0.0.1:10000"
+        #echo  "s"$i
+        sudo ovs-vsctl --no-wait set-controller "s"$i $ovsctrl &
+        let i+=1
+        sleep $sleeptimer
+    done
+}
+
+get-ovs ()
+{
+    i=$numsw
+    while (($i>0)) 
+    do
+        echo "s"$i
+		sudo ovs-vsctl get-controller "s"$i
+        let i-=1
+    done
+
+}
+
+loadsw ()
+{
+	echo "adding $numsw ovs switches..."
+	add-ovs
+
+	echo "starting to generate south bound load ...."
+    	let "roundtime = numsw / rate"
+	#let "iter = duration / roundtime / 2 "
+    iter=1
+	echo "Running load for $duration seconds..."
+    start=$(date +%s )
+	time while [[ $(( $(date +%s) - start )) -lt $duration ]]
+    do
+		#echo "start time is: $start"
+		#echo "current time is: $(date +%s)"
+  		#echo "diff is: $(($(date +%s) - $start ))"
+		time conn-ovs; echo "Number of switches connected: $numsw. Events generated: $(( ($numport + 2) * $numsw )) - each switch added generates one switch event, one default port event, and $numport dataplane port events."
+		time disconn-ovs; echo "Number of switches disconnected: $numsw. Events generated: $(( ($numport + 2) * $numsw )) - each switch added generates one switch event, one default port event, and $numport dataplane port events."
+		let "iter = iter + 1"
+	done
+    echo "Iteration is: $iter"
+	let "total = (( iter * numsw * (numport + 2))) "
+	echo "************************** "
+    echo "Total number of switches connected/disconnected: $(( iter * numsw * 2 )). Total events generated: $(( 2 * total)) - each switch added generates one switch event, one default port event, and $numport dataplane port events."
+	echo "**************************"
+	echo ""
+	echo "deleting $numsw ovs switches ..."
+	del-ovs
+}
+
+case "$1" in
+    addsw)
+        time add-ovs
+        ;;
+    delsw)
+        time del-ovs
+        ;;
+    startload)
+		echo $sleeptimer
+        time loadsw
+        ;;
+    chksw)
+        time get-ovs
+        ;;
+    #*)    
+    #exit 1
+esac
+
+
+
+