blob: f13e60d2b93c42386204e7e057fe555b42fa5b73 [file] [log] [blame]
# ScaleOutTemplate --> IntentsLoad
#
# CASE1 starts number of nodes specified in param file
#
# cameron@onlab.us
import sys
import os
class IntentsLoad:
def __init__(self):
self.default = ''
def CASE1(self, main):
global cluster_count
cluster_count = 1
checkout_branch = main.params['GIT']['checkout']
git_pull = main.params['GIT']['autopull']
cell_name = main.params['ENV']['cellName']
BENCH_ip = main.params['BENCH']['ip1']
BENCH_user = main.params['BENCH']['user']
ONOS1_ip = main.params['CTRL']['ip1']
ONOS2_ip = main.params['CTRL']['ip2']
ONOS3_ip = main.params['CTRL']['ip3']
MN1_ip = main.params['MN']['ip1']
main.log.step("Cleaning Enviornment...")
main.ONOSbench.onos_uninstall(ONOS1_ip)
main.ONOSbench.onos_uninstall(ONOS2_ip)
main.ONOSbench.onos_uninstall(ONOS3_ip)
main.step("Git checkout and pull "+checkout_branch)
if git_pull == 'on':
checkout_result = main.ONOSbench.git_checkout(checkout_branch)
pull_result = main.ONOSbench.git_pull()
else:
checkout_result = main.TRUE
pull_result = main.TRUE
main.log.info("Skipped git checkout and pull")
#mvn_result = main.ONOSbench.clean_install()
main.step("Set cell for ONOS cli env")
main.ONOS1cli.set_cell(cell_name)
main.ONOS2cli.set_cell(cell_name)
main.ONOS3cli.set_cell(cell_name)
main.step("Creating ONOS package")
package_result = main.ONOSbench.onos_package() #no file or directory
main.step("Installing ONOS package")
install1_result = main.ONOSbench.onos_install(node=ONOS1_ip)
cell_name = main.params['ENV']['cellName']
main.step("Applying cell file to environment")
cell_apply_result = main.ONOSbench.set_cell(cell_name)
main.step("verify cells")
verify_cell_result = main.ONOSbench.verify_cell()
main.step("Set cell for ONOS cli env")
main.ONOS1cli.set_cell(cell_name)
cli1 = main.ONOS1cli.start_onos_cli(ONOS1_ip)
def CASE2(self, main):
'''
Increase number of nodes and initiate CLI
'''
import time
global cluster_count
ONOS1_ip = main.params['CTRL']['ip1']
ONOS2_ip = main.params['CTRL']['ip2']
ONOS3_ip = main.params['CTRL']['ip3']
#ONOS4_ip = main.params['CTRL']['ip4']
#ONOS5_ip = main.params['CTRL']['ip5']
#ONOS6_ip = main.params['CTRL']['ip6']
#ONOS7_ip = main.params['CTRL']['ip7']
cell_name = main.params['ENV']['cellName']
scale = int(main.params['SCALE'])
#Cluster size increased everytime the case is defined
cluster_count += scale
main.log.report("Increasing cluster size to "+
str(cluster_count))
install_result = main.FALSE
if scale == 2:
if cluster_count == 3:
main.log.info("Installing nodes 2 and 3")
install2_result = main.ONOSbench.onos_install(node=ONOS2_ip)
install3_result = main.ONOSbench.onos_install(node=ONOS3_ip)
cli2 = main.ONOS2cli.start_onos_cli(ONOS2_ip)
cli3 = main.ONOS3cli.start_onos_cli(ONOS3_ip)
'''
elif cluster_count == 5:
main.log.info("Installing nodes 4 and 5")
node4_result = main.ONOSbench.onos_install(node=ONOS4_ip)
node5_result = main.ONOSbench.onos_install(node=ONOS5_ip)
install_result = node4_result and node5_result
time.sleep(5)
main.ONOS4cli.start_onos_cli(ONOS4_ip)
main.ONOS5cli.start_onos_cli(ONOS5_ip)
elif cluster_count == 7:
main.log.info("Installing nodes 4 and 5")
node6_result = main.ONOSbench.onos_install(node=ONOS6_ip)
node7_result = main.ONOSbench.onos_install(node=ONOS7_ip)
install_result = node6_result and node7_result
time.sleep(5)
main.ONOS6cli.start_onos_cli(ONOS6_ip)
main.ONOS7cli.start_onos_cli(ONOS7_ip)
'''
if scale == 1:
if cluster_count == 2:
main.log.info("Installing node 2")
install2_result = main.ONOSbench.onos_install(node=ONOS2_ip)
cli2 = main.ONOS2cli.start_onos_cli(ONOS2_ip)
if cluster_count == 3:
main.log.info("Installing node 3")
install3_result = main.ONOSbench.onos_install(node=ONOS3_ip)
cli3 = main.ONOS3cli.start_onos_cli(ONOS3_ip)
def CASE3(self,main):
import time
import json
import string
intents_rate = main.params['JSON']['intents_rate']
default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
main.Mininet1.assign_sw_controller(sw="1", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="2", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="3", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="4", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="5", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="6", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="7", ip1=ONOS1_ip, port1=default_sw_port )
mn_arp = main.params['TEST']['arping']
main.Mininet1.handle.sendline(mn_arp)
generate_load = main.params['TEST']['loadstart']
main.ONOS1.handle.sendline(generate_load)
main.ONOS1.handle.expect("sdn")
print("before: ", main.ONOS1.handle.before)
print("after: ",main.ONOS1.handle.after)
load_confirm = main.ONOS1.handle.after
if load_confirm == "{}":
main.log.info("Load started")
else:
main.log.error("Load start failure")
main.log.error("expected '{}', got: " + str(load_confirm))
devices_json_str = main.ONOS1cli.devices()
devices_json_obj = json.loads(devices_json_str)
get_metric = main.params['TEST']['metric1']
test_duration = main.params['TEST']['duration']
stop = time.time() + float(test_duration)
main.log.info("Starting test loop...")
log_interval = main.params['TEST']['log_interval']
while time.time() < stop:
time.sleep(float(log_interval))
intents_json_str_1 = main.ONOS1cli.intents_events_metrics()
intents_json_obj_1 = json.loads(intents_json_str_1)
main.log.info("Node 1 rate: " + str(intents_json_obj_1[intents_rate]['m1_rate']))
last_rate_1 = intents_json_obj_1[intents_rate]['m1_rate']
stop_load = main.params['TEST']['loadstop']
main.ONOS1.handle.sendline(stop_load)
msg = ("Final rate on node 1: " + str(last_rate_1))
main.log.report(msg)
def CASE4(self, main): #2 node scale
import time
import json
import string
intents_rate = main.params['JSON']['intents_rate']
default_sw_port = main.params[ 'CTRL' ][ 'port1' ]
main.Mininet1.assign_sw_controller(sw="1", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="2", ip1=ONOS2_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="3", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="4", ip1=ONOS2_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="5", ip1=ONOS1_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="6", ip1=ONOS2_ip, port1=default_sw_port )
main.Mininet1.assign_sw_controller(sw="7", ip1=ONOS1_ip, port1=default_sw_port )
mn_arp = main.params['TEST']['arping']
main.Mininet1.handle.sendline(mn_arp)
generate_load = main.params['TEST']['loadstart']
main.ONOS1.handle.sendline(generate_load)
main.ONOS2.handle.sendline(generate_load)
devices_json_str_1 = main.ONOS1cli.devices()
devices_json_obj_1 = json.loads(devices_json_str_1)
devices_json_str_2 = main.ONOS2cli.devices()
devices_json_obj_2 = json.loads(devices_json_str_2)
get_metric = main.params['TEST']['metric1']
test_duration = main.params['TEST']['duration']
stop = time.time() + float(test_duration)
main.log.info("Starting test loop...")
log_interval = main.params['TEST']['log_interval']
while time.time() < stop:
time.sleep(float(log_interval))
intents_json_str_1 = main.ONOS1cli.intents_events_metrics()
intents_json_obj_1 = json.loads(intents_json_str_1)
main.log.info("Node 1 rate: " + str(intents_json_obj_1[intents_rate]['m1_rate']))
last_rate_1 = intents_json_obj_1[intents_rate]['m1_rate']
intents_json_str_2 = main.ONOS2cli.intents_events_metrics()
intents_json_obj_2 = json.loads(intents_json_str_2)
main.log.info("Node 2 rate: " + str(intents_json_obj_2[intents_rate]['m1_rate']))
last_rate_2 = intents_json_obj_2[intents_rate]['m1_rate']
stop_load = main.params['TEST']['loadstop']
main.ONOS1.handle.sendline(stop_load)
main.ONOS2.handle.sendline(stop_load)
msg = ("Final rate on node 1: " + str(last_rate_1))
main.log.report(msg)
msg = ("Final rate on node 2: " + str(last_rate_2))
main.log.report(msg)