Merge branch 'ONOS-Next' of https://github.com/OPENNETWORKINGLAB/ONLabTest into ONOS-Next
diff --git a/TestON/core/teston.py b/TestON/core/teston.py
index 8934e50..b0752ca 100644
--- a/TestON/core/teston.py
+++ b/TestON/core/teston.py
@@ -628,7 +628,7 @@
try :
testModule = __import__(main.classPath, globals(), locals(), [main.TEST], -1)
except(ImportError):
- print "There was an import error, it might mean that there is no test like "+main.TEST
+ print "There is no test like "+main.TEST
main.exit()
testClass = getattr(testModule, main.TEST)
diff --git a/TestON/drivers/common/cli/onosdriver.py b/TestON/drivers/common/cli/onosdriver.py
index 418554d..a05312e 100644
--- a/TestON/drivers/common/cli/onosdriver.py
+++ b/TestON/drivers/common/cli/onosdriver.py
@@ -463,7 +463,8 @@
#Note that you may not want certain features listed
#on here.
core_feature_string = "export ONOS_FEATURES=webconsole,onos-api,"+\
- "onos-cli,onos-openflow,"+extra_feature_string
+ "onos-cli,onos-openflow,onos-app-mobility,onos-app-tvue,"+\
+ "onos-app-proxyarp,"+extra_feature_string
mn_string = "export OCN="
onos_string = "export OC"
temp_count = 1
@@ -808,40 +809,6 @@
main.cleanup()
main.exit()
- def onos_die(self, node_ip):
- '''
- Issues the command 'onos-die <node-ip>'
- This command calls onos-kill and also stops the node
- '''
- try:
- self.handle.sendline("")
- self.handle.expect("\$")
- cmd_str = "onos-kill "+str(node_ip)
- self.handle.sendline(cmd_str)
- i = self.handle.expect([
- "Killing\sONOS",
- "ONOS\sprocess\sis\snot\srunning",
- pexpect.TIMEOUT], timeout=20)
- if i == 0:
- main.log.info("ONOS instance "+str(node_ip)+
- " was killed and stopped")
- return main.TRUE
- elif i == 1:
- main.log.info("ONOS process was not running")
- return main.FALSE
- except pexpect.EOF:
- main.log.error(self.name + ": EOF exception found")
- main.log.error(self.name + ": " + self.handle.before)
- main.cleanup()
- main.exit()
- except:
- main.log.info(self.name+" ::::::")
- main.log.error( traceback.print_exc())
- main.log.info(self.name+" ::::::")
- main.cleanup()
- main.exit()
-
-
def onos_kill(self, node_ip):
'''
Calls the command: 'onos-kill [<node-ip>]'
@@ -997,8 +964,7 @@
main.exit()
def push_test_intents_shell(self, dpid_src, dpid_dst, num_intents,
- dir_file, onos_ip, num_mult="", app_id="", report=True,
- options=""):
+ dir_file, onos_ip, num_mult="", app_id="", report=True):
'''
Description:
Use the linux prompt to push test intents to
@@ -1015,12 +981,7 @@
'''
try:
#Create the string to sendline
- if options:
- base_cmd = "onos "+str(onos_ip)+" push-test-intents "+\
- options+" "
- else:
- base_cmd = "onos "+str(onos_ip)+" push-test-intents "
-
+ base_cmd = "onos "+str(onos_ip)+" push-test-intents "
add_dpid = base_cmd + str(dpid_src) + " " + str(dpid_dst)
if not num_mult:
add_intents = add_dpid + " " + str(num_intents)
@@ -1032,10 +993,7 @@
else:
add_app = add_intents
- if report:
- send_cmd = add_app + " > " + str(dir_file) + " &"
- else:
- send_cmd = add_app + " &"
+ send_cmd = add_app + " > " + str(dir_file) + " &"
main.log.info("Send cmd: "+send_cmd)
self.handle.sendline(send_cmd)
diff --git a/TestON/drivers/common/cli/quaggaclidriver.py b/TestON/drivers/common/cli/quaggaclidriver.py
index 77e1fab..8314941 100644
--- a/TestON/drivers/common/cli/quaggaclidriver.py
+++ b/TestON/drivers/common/cli/quaggaclidriver.py
@@ -22,15 +22,11 @@
self.name = self.options['name']
# self.handle = super(QuaggaCliDriver,self).connect(user_name = self.user_name, ip_address = self.ip_address,port = self.port, pwd = self.pwd)
self.handle = super(QuaggaCliDriver, self).connect(user_name=self.user_name, ip_address="1.1.1.1", port=self.port, pwd=self.pwd)
- main.log.info("quagga handle" + str(self.handle) )
- main.log.info("where is this timeout from?")
main.log.info("connect parameters:" + str(self.user_name) + ";" + str(self.ip_address) + ";" + str(self.port) + ";" + str(self.pwd))
if self.handle:
#self.handle.expect("",timeout=10)
#self.handle.expect("\$",timeout=10)
- #main.log.info(self.handle.before)
- #main.log.info(self.handle.after)
self.handle.sendline("telnet localhost 2605")
#self.handle.expect("Password:", timeout=5)
self.handle.expect("Password:")
@@ -171,7 +167,7 @@
intents_json_obj = json.loads(get_intents_result)
for intent in intents_json_obj:
- if intent['appId'] != "org.onlab.onos.sdnip" :
+ if intent['appId'] != "org.onosproject.sdnip" :
continue
if intent['type'] == "MultiPointToSinglePointIntent" and intent['state'] == 'INSTALLED':
egress = str(intent['egress']['device']) + ":" + str(intent['egress']['port'])
@@ -196,7 +192,7 @@
intents_json_obj = json.loads(get_intents_result)
for intent in intents_json_obj:
- if intent['appId'] != "org.onlab.onos.sdnip":
+ if intent['appId'] != "org.onosproject.sdnip":
continue
if intent['type'] == "PointToPointIntent" and "protocol=6" in str(intent['selector']):
ingress = str(intent['ingress']['device']) + ":" + str(intent['ingress']['port'])
diff --git a/TestON/tests/IntentPerfNext/IntentPerfNext.params b/TestON/tests/IntentPerfNext/IntentPerfNext.params
index cdf0766..168a067 100644
--- a/TestON/tests/IntentPerfNext/IntentPerfNext.params
+++ b/TestON/tests/IntentPerfNext/IntentPerfNext.params
@@ -1,5 +1,5 @@
<PARAMS>
- <testcases>1,5,2,3</testcases>
+ <testcases>1,4,5,4,5,4,5,4</testcases>
<ENV>
<cellName>intent_perf_test</cellName>
@@ -36,12 +36,11 @@
<TEST>
#Number of times to iterate each case
- <numIter>15</numIter>
- <numIgnore>3</numIgnore>
+ <numIter>10</numIter>
<numSwitch>9</numSwitch>
<batchThresholdMin>0</batchThresholdMin>
<batchThresholdMax>1000</batchThresholdMax>
- <batchIntentSize>200</batchIntentSize>
+ <batchIntentSize>1500</batchIntentSize>
<numMult>1</numMult>
</TEST>
diff --git a/TestON/tests/IntentPerfNext/IntentPerfNext.py b/TestON/tests/IntentPerfNext/IntentPerfNext.py
index c212e9e..73aa304 100644
--- a/TestON/tests/IntentPerfNext/IntentPerfNext.py
+++ b/TestON/tests/IntentPerfNext/IntentPerfNext.py
@@ -113,7 +113,6 @@
import json
import requests
import os
- import numpy
ONOS1_ip = main.params['CTRL']['ip1']
ONOS2_ip = main.params['CTRL']['ip2']
@@ -124,7 +123,6 @@
#number of iterations of case
num_iter = main.params['TEST']['numIter']
- num_ignore = int(main.params['TEST']['numIgnore'])
#Timestamp keys for json metrics output
submit_time = main.params['JSON']['submittedTime']
@@ -148,8 +146,6 @@
time.sleep(10)
- main.log.report("Single intent add latency test")
-
devices_json_str = main.ONOS1cli.devices()
devices_json_obj = json.loads(devices_json_str)
device_id_list = []
@@ -205,10 +201,10 @@
intent_install_lat_3 ) / 3
main.log.info("Intent add latency avg for iteration "+str(i)+
- ": "+str(intent_install_lat_avg)+" ms")
+ ": "+str(intent_install_lat_avg))
if intent_install_lat_avg > 0.0 and \
- intent_install_lat_avg < 1000 and i > num_ignore:
+ intent_install_lat_avg < 1000:
intent_add_lat_list.append(intent_install_lat_avg)
else:
main.log.info("Intent add latency exceeded "+
@@ -233,14 +229,16 @@
time.sleep(5)
+ intent_add_lat_min = min(intent_add_lat_list)
+ intent_add_lat_max = max(intent_add_lat_list)
intent_add_lat_avg = sum(intent_add_lat_list) /\
len(intent_add_lat_list)
- intent_add_lat_std = \
- round(numpy.std(intent_add_lat_list),1)
#END ITERATION FOR LOOP
main.log.report("Single intent add latency - \n"+
- "Avg: "+str(intent_add_lat_avg)+" ms\n"+
- "Std Deviation: "+str(intent_add_lat_std)+" ms")
+ "Min: "+str(intent_add_lat_min)+" ms\n"+
+ "Max: "+str(intent_add_lat_max)+" ms\n"+
+ "Avg: "+str(intent_add_lat_avg)+" ms\n")
+
def CASE3(self, main):
'''
@@ -250,7 +248,6 @@
import json
import requests
import os
- import numpy
ONOS1_ip = main.params['CTRL']['ip1']
ONOS2_ip = main.params['CTRL']['ip2']
@@ -261,7 +258,6 @@
#number of iterations of case
num_iter = main.params['TEST']['numIter']
- num_ignore = int(main.params['TEST']['numIgnore'])
#Timestamp keys for json metrics output
submit_time = main.params['JSON']['submittedTime']
@@ -286,12 +282,9 @@
for i in range(0, int(num_iter)):
#add_point_intent(ingr_device, ingr_port,
# egr_device, egr_port)
- if len(device_id_list) > 0:
- main.ONOS1cli.add_point_intent(
- device_id_list[0]+"/2", device_id_list[4]+"/1")
- else:
- main.log.info("Failed to fetch devices from ONOS")
-
+ main.ONOS1cli.add_point_intent(
+ device_id_list[0]+"/2", device_id_list[4]+"/1")
+
time.sleep(5)
intents_str = main.ONOS1cli.intents(json_format=True)
@@ -349,7 +342,7 @@
str(i)+": "+str(intent_reroute_lat_avg))
if intent_reroute_lat_avg > 0.0 and \
- intent_reroute_lat_avg < 1000 and i > num_ignore:
+ intent_reroute_lat_avg < 1000:
intent_reroute_lat_list.append(intent_reroute_lat_avg)
else:
main.log.info("Intent reroute latency exceeded "+
@@ -367,26 +360,15 @@
# determine what timestsamp to get
main.ONOS1cli.remove_intent(intent_id)
- main.log.info("Bringing Mininet interface up for next "+
- "iteration")
- main.Mininet1.handle.sendline(
- "sh ifconfig s2-eth3 up")
-
- intent_reroute_lat_avg = sum(intent_reroute_lat_list) /\
- len(intent_reroute_lat_list)
- intent_reroute_lat_std = \
- round(numpy.std(intent_reroute_lat_list),1)
- #END ITERATION FOR LOOP
- main.log.report("Single intent reroute latency - \n"+
- "Avg: "+str(intent_reroute_lat_avg)+" ms\n"+
- "Std Deviation: "+str(intent_reroute_lat_std)+" ms")
-
+ #TODO: Report framework
+ print intent_reroute_lat_list
+
+
def CASE4(self, main):
import time
import json
import requests
import os
- import numpy
ONOS1_ip = main.params['CTRL']['ip1']
ONOS2_ip = main.params['CTRL']['ip2']
@@ -410,10 +392,8 @@
#number of iterations of case
num_iter = main.params['TEST']['numIter']
- num_ignore = int(main.params['TEST']['numIgnore'])
num_switch = int(main.params['TEST']['numSwitch'])
n_thread = main.params['TEST']['numMult']
- #n_thread = 105
#*****
global cluster_count
@@ -471,7 +451,7 @@
if cluster_count == 7:
for i in range(1,9):
- if i < 8:
+ if i < 7:
main.Mininet1.assign_sw_controller(
sw=str(i),
ip1=ONOS_ip_list[i-1],
@@ -482,8 +462,6 @@
ip1=ONOS_ip_list[6],
port1=default_sw_port)
- time.sleep(30)
-
main.log.report("Batch intent installation test of "+
batch_intent_size +" intents")
@@ -498,52 +476,24 @@
batch_install_lat = []
batch_withdraw_lat = []
- sleep_time = 10
base_dir = "/tmp/"
- max_install_lat = []
for i in range(0, int(num_iter)):
main.log.info("Pushing "+
str(int(batch_intent_size)*int(n_thread))+
" intents. Iteration "+str(i))
-
+
for node in range(1, cluster_count+1):
save_dir = base_dir + "batch_intent_"+str(node)+".txt"
main.ONOSbench.push_test_intents_shell(
"of:0000000000000001/"+str(node),
"of:0000000000000008/"+str(node),
- int(batch_intent_size),
- save_dir, ONOS_ip_list[node-1],
+ batch_intent_size, save_dir, ONOS_ip_list[node-1],
num_mult=n_thread, app_id=node)
-
- #Wait sufficient time for intents to start
- #installing
-
- time.sleep(sleep_time)
- print sleep_time
-
- intent = ""
- counter = 300
- while len(intent) > 0 and counter > 0:
- main.ONOS1cli.handle.sendline(
- "intents | wc -l")
- main.ONOS1cli.handle.expect(
- "intents | wc -l")
- main.ONOS1cli.handle.expect(
- "onos>")
- intent_temp = main.ONOS1cli.handle.before()
- print intent_temp
-
- intent = main.ONOS1cli.intents()
- intent = json.loads(intent)
- counter = counter-1
- time.sleep(1)
-
- time.sleep(5)
-
+
+ time.sleep(120 / int(cluster_count))
for node in range(1, cluster_count+1):
- save_dir = base_dir + "batch_intent_"+str(node)+".txt"
with open(save_dir) as f_onos:
line_count = 0
for line in f_onos:
@@ -552,33 +502,20 @@
result = line[1].split(" ")[0]
#TODO: add parameters before appending latency
if line_count == 0:
- batch_install_lat.append(int(result))
+ batch_install_lat.append(result)
elif line_count == 1:
- batch_withdraw_lat.append(int(result))
+ batch_withdraw_lat.append(result)
line_count += 1
main.log.info("Batch install latency for ONOS"+
str(node)+" with "+\
str(batch_intent_size) + "intents: "+\
str(batch_install_lat))
-
- if len(batch_install_lat) > 0 and int(i) > num_ignore:
- max_install_lat.append(max(batch_install_lat))
- elif len(batch_install_lat) == 0:
- #If I failed to read anything from the file,
- #increase the wait time before checking intents
- sleep_time += 30
- batch_install_lat = []
-
- #Sleep in between iterations
time.sleep(5)
- main.log.report("Avg of batch installation latency "+
- ": "+
- str(sum(max_install_lat) / len(max_install_lat)))
- main.log.report("Std Deviation of batch installation latency "+
- ": "+
- str(numpy.std(max_install_lat)))
-
+ main.log.report("Max of batch installation latency "+
+ "for ONOS" + str(node)+ ": "+
+ str(max(batch_install_lat)))
+
def CASE5(self,main):
'''
Increase number of nodes and initiate CLI
@@ -653,66 +590,5 @@
onfail="Scale out to "+str(cluster_count)+\
" nodes failed")
- def CASE9(self, main):
- count = 0
- sw_num1 = 1
- sw_num2 = 1
- appid = 0
- port_num1 = 1
- port_num2 = 1
-
- time.sleep(30)
- while True:
- #main.ONOS1cli.push_test_intents(
- #"of:0000000000001001/1",
- #"of:0000000000002001/1",
- # 100, num_mult="10", app_id="1")
- #main.ONOS2cli.push_test_intents(
- # "of:0000000000001002/1",
- # "of:0000000000002002/1",
- # 100, num_mult="10", app_id="2")
- #main.ONOS2cli.push_test_intents(
- # "of:0000000000001003/1",
- # "of:0000000000002003/1",
- # 100, num_mult="10", app_id="3")
- count += 1
-
- if count >= 100:
- main.ONOSbench.handle.sendline(
- "onos 10.128.174.1 intents-events-metrics >>"+\
- " /tmp/metrics_intents_temp.txt &")
- count = 0
-
- arg1 = "of:000000000000100"+str(sw_num1)+"/"+str(port_num1)
- arg2 = "of:000000000000200"+str(sw_num2)+"/"+str(port_num2)
-
- sw_num1 += 1
-
- if sw_num1 > 7:
- sw_num1 = 1
- sw_num2 += 1
- if sw_num2 > 7:
- appid += 1
-
- if sw_num2 > 7:
- sw_num2 = 1
-
- main.ONOSbench.push_test_intents_shell(
- arg1,
- arg2,
- 150, "/tmp/temp.txt", "10.128.174.1",
- num_mult="10", app_id=appid,report=False)
- #main.ONOSbench.push_test_intents_shell(
- # "of:0000000000001002/1",
- # "of:0000000000002002/1",
- # 133, "/tmp/temp2.txt", "10.128.174.2",
- # num_mult="6", app_id="2",report=False)
- #main.ONOSbench.push_test_intents_shell(
- # "of:0000000000001003/1",
- # "of:0000000000002003/1",
- # 133, "/tmp/temp3.txt", "10.128.174.3",
- # num_mult="6", app_id="3",report=False)
-
- time.sleep(0.1)
diff --git a/TestON/tests/IntentPerfNext/IntentPerfNext.topo b/TestON/tests/IntentPerfNext/IntentPerfNext.topo
index 048695d..71df643 100644
--- a/TestON/tests/IntentPerfNext/IntentPerfNext.topo
+++ b/TestON/tests/IntentPerfNext/IntentPerfNext.topo
@@ -89,7 +89,7 @@
<type>MininetCliDriver</type>
<connect_order>4</connect_order>
<COMPONENTS>
- <arg1> --custom topo-intentFlower.py </arg1>
+ <arg1> --custom topo-linear-scaleout.py </arg1>
<arg2> --arp --mac --topo mytopo </arg2>
<arg3> </arg3>
<controller> remote </controller>