| #Intent Performance Test for ONOS-next |
| # |
| #andrew@onlab.us |
| |
| class IntentPerfNext: |
| def __init__(self): |
| self.default = "" |
| |
| def CASE1(self, main): |
| ''' |
| ONOS startup sequence |
| ''' |
| |
| import time |
| |
| cell_name = main.params['ENV']['cellName'] |
| |
| git_pull = main.params['GIT']['autoPull'] |
| checkout_branch = main.params['GIT']['checkout'] |
| |
| ONOS1_ip = main.params['CTRL']['ip1'] |
| ONOS2_ip = main.params['CTRL']['ip2'] |
| ONOS3_ip = main.params['CTRL']['ip3'] |
| |
| MN1_ip = main.params['MN']['ip1'] |
| BENCH_ip = main.params['BENCH']['ip'] |
| |
| main.case("Setting up test environment") |
| |
| main.step("Creating cell file") |
| cell_file_result = main.ONOSbench.create_cell_file( |
| BENCH_ip, cell_name, MN1_ip, "onos-core", |
| ONOS1_ip, ONOS2_ip, ONOS3_ip) |
| |
| main.step("Applying cell file to environment") |
| cell_apply_result = main.ONOSbench.set_cell(cell_name) |
| verify_cell_result = main.ONOSbench.verify_cell() |
| |
| 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() |
| |
| #If you used git pull, auto compile |
| main.step("Using onos-build to compile ONOS") |
| build_result = main.ONOSbench.onos_build() |
| else: |
| checkout_result = main.TRUE |
| pull_result = main.TRUE |
| build_result = main.TRUE |
| main.log.info("Git pull skipped by configuration") |
| |
| main.step("Creating ONOS package") |
| package_result = main.ONOSbench.onos_package() |
| |
| main.step("Installing ONOS package") |
| install1_result = main.ONOSbench.onos_install(node=ONOS1_ip) |
| install2_result = main.ONOSbench.onos_install(node=ONOS2_ip) |
| install3_result = main.ONOSbench.onos_install(node=ONOS3_ip) |
| |
| main.step("Set cell for ONOScli env") |
| main.ONOS1cli.set_cell(cell_name) |
| main.ONOS2cli.set_cell(cell_name) |
| main.ONOS3cli.set_cell(cell_name) |
| |
| time.sleep(5) |
| |
| main.step("Start onos cli") |
| cli1 = main.ONOS1cli.start_onos_cli(ONOS1_ip) |
| cli2 = main.ONOS2cli.start_onos_cli(ONOS2_ip) |
| cli3 = main.ONOS3cli.start_onos_cli(ONOS3_ip) |
| |
| main.step("Enable metrics feature") |
| main.ONOS1cli.feature_install("onos-app-metrics") |
| main.ONOS2cli.feature_install("onos-app-metrics") |
| main.ONOS3cli.feature_install("onos-app-metrics") |
| |
| utilities.assert_equals(expect=main.TRUE, |
| actual = cell_file_result and cell_apply_result and\ |
| verify_cell_result and checkout_result and\ |
| pull_result and build_result and\ |
| install1_result and install2_result and\ |
| install3_result, |
| onpass="ONOS started successfully", |
| onfail="Failed to start ONOS") |
| |
| def CASE2(self, main): |
| ''' |
| Single intent add latency |
| |
| ''' |
| import time |
| import json |
| import requests |
| import os |
| |
| ONOS1_ip = main.params['CTRL']['ip1'] |
| ONOS2_ip = main.params['CTRL']['ip2'] |
| ONOS3_ip = main.params['CTRL']['ip3'] |
| ONOS_user = main.params['CTRL']['user'] |
| |
| default_sw_port = main.params['CTRL']['port1'] |
| |
| #number of iterations of case |
| num_iter = main.params['TEST']['numIter'] |
| |
| #Timestamp keys for json metrics output |
| submit_time = main.params['JSON']['submittedTime'] |
| install_time = main.params['JSON']['installedTime'] |
| wdRequest_time = main.params['JSON']['wdRequestTime'] |
| withdrawn_time = main.params['JSON']['withdrawnTime'] |
| |
| devices_json_str = main.ONOScli.devices() |
| devices_json_obj = json.loads(devices_json_str) |
| |
| device_id_list = [] |
| |
| for device in devices_json_obj: |
| device_id_list.append(device['id']) |
| |
| #TODO: Add point intent |
| #add_point_intent(ingr_device, ingr_port, |
| # egr_device, egr_port) |
| |
| #TODO: Obtain metrics |
| |
| #TODO: Calculate average, append to latency list |
| #TODO: Iterate through iterations specified |
| #TODO: Report min, max average of latency list |
| |
| |
| |
| |
| |