andrewonlab | 4a5c447 | 2014-10-09 12:11:41 -0400 | [diff] [blame] | 1 | |
| 2 | #Testing the basic functionality of ONOS Next |
| 3 | #For sanity and driver functionality excercises only. |
| 4 | |
andrewonlab | 7735d85 | 2014-10-09 13:02:47 -0400 | [diff] [blame] | 5 | import time |
| 6 | import sys |
| 7 | import os |
| 8 | |
andrewonlab | 4a5c447 | 2014-10-09 12:11:41 -0400 | [diff] [blame] | 9 | class ONOSNextTest: |
| 10 | def __init__(self): |
| 11 | self.default = '' |
| 12 | |
| 13 | def CASE1(self, main): |
| 14 | ''' |
| 15 | Startup sequence: |
| 16 | git pull |
| 17 | mvn clean install |
| 18 | onos-package |
| 19 | cell <name> |
| 20 | onos-verify-cell |
| 21 | onos-install -f |
| 22 | onos-wait-for-start |
| 23 | ''' |
andrew@onlab.us | 59e8f69 | 2014-10-09 21:41:48 -0400 | [diff] [blame] | 24 | import re |
| 25 | import time |
andrewonlab | 7735d85 | 2014-10-09 13:02:47 -0400 | [diff] [blame] | 26 | |
andrewonlab | 084307e | 2014-10-09 14:06:09 -0400 | [diff] [blame] | 27 | cell_name = main.params['ENV']['cellName'] |
| 28 | ONOS1_ip = main.params['CTRL']['ip1'] |
andrew@onlab.us | 59e8f69 | 2014-10-09 21:41:48 -0400 | [diff] [blame] | 29 | ONOS1_port = main.params['CTRL']['port1'] |
Jon Hall | ea7818b | 2014-10-09 14:30:59 -0400 | [diff] [blame] | 30 | |
andrewonlab | 8d0d7d7 | 2014-10-09 16:33:15 -0400 | [diff] [blame] | 31 | main.case("Setting up test environment") |
Jon Hall | 3be576e | 2014-10-09 22:23:03 -0400 | [diff] [blame] | 32 | |
| 33 | main.step("Git checkout and pull master") |
| 34 | main.ONOSbench.git_checkout("master") |
| 35 | git_pull_result = main.ONOSbench.git_pull() |
| 36 | |
andrewonlab | 8d0d7d7 | 2014-10-09 16:33:15 -0400 | [diff] [blame] | 37 | |
andrewonlab | 2b30bd3 | 2014-10-09 16:48:55 -0400 | [diff] [blame] | 38 | main.step("Using mvn clean & install") |
Jon Hall | 3be576e | 2014-10-09 22:23:03 -0400 | [diff] [blame] | 39 | clean_install_result = main.ONOSbench.clean_install() |
| 40 | #clean_install_result = main.TRUE |
andrewonlab | 2b30bd3 | 2014-10-09 16:48:55 -0400 | [diff] [blame] | 41 | |
andrewonlab | 8d0d7d7 | 2014-10-09 16:33:15 -0400 | [diff] [blame] | 42 | main.step("Creating ONOS package") |
andrewonlab | 7735d85 | 2014-10-09 13:02:47 -0400 | [diff] [blame] | 43 | package_result = main.ONOSbench.onos_package() |
andrewonlab | 8d0d7d7 | 2014-10-09 16:33:15 -0400 | [diff] [blame] | 44 | |
| 45 | main.step("Applying cell variable to environment") |
andrewonlab | 084307e | 2014-10-09 14:06:09 -0400 | [diff] [blame] | 46 | cell_result = main.ONOSbench.set_cell(cell_name) |
andrewonlab | c03bf6c | 2014-10-09 14:56:18 -0400 | [diff] [blame] | 47 | verify_result = main.ONOSbench.verify_cell() |
andrewonlab | 2fe32ad | 2014-10-09 16:36:40 -0400 | [diff] [blame] | 48 | |
| 49 | main.step("Installing ONOS package") |
Jon Hall | 7993bfc | 2014-10-09 16:30:14 -0400 | [diff] [blame] | 50 | onos_install_result = main.ONOSbench.onos_install() |
| 51 | onos1_isup = main.ONOSbench.isup() |
andrewonlab | 8d0d7d7 | 2014-10-09 16:33:15 -0400 | [diff] [blame] | 52 | |
| 53 | main.step("Starting ONOS service") |
| 54 | start_result = main.ONOSbench.onos_start(ONOS1_ip) |
| 55 | |
andrew@onlab.us | 59e8f69 | 2014-10-09 21:41:48 -0400 | [diff] [blame] | 56 | main.step("Assigning switches to controllers") |
| 57 | for i in range(1,29): |
| 58 | main.Mininet1.assign_sw_controller(sw=str(i), |
| 59 | ip1=ONOS1_ip, port1=ONOS1_port) |
| 60 | switch_mastership = main.TRUE |
| 61 | for i in range (1,29): |
| 62 | response = main.Mininet1.get_sw_controller("s"+str(i)) |
| 63 | print("Response is " + str(response)) |
| 64 | if re.search("tcp:"+ONOS1_ip,response): |
| 65 | switch_mastership = switch_mastership and main.TRUE |
| 66 | else: |
| 67 | switch_mastership = main.FALSE |
| 68 | |
| 69 | #REACTIVE FWD test |
| 70 | main.step("Pingall") |
| 71 | ping_result = main.FALSE |
| 72 | while ping_result == main.FALSE: |
| 73 | time1 = time.time() |
| 74 | ping_result = main.Mininet1.pingall() |
| 75 | time2 = time.time() |
| 76 | print "Time for pingall: %2f seconds" % (time2 - time1) |
| 77 | |
| 78 | |
Jon Hall | 7993bfc | 2014-10-09 16:30:14 -0400 | [diff] [blame] | 79 | case1_result = (clean_install_result and package_result and\ |
andrewonlab | 2b30bd3 | 2014-10-09 16:48:55 -0400 | [diff] [blame] | 80 | cell_result and verify_result and onos_install_result and\ |
andrew@onlab.us | 59e8f69 | 2014-10-09 21:41:48 -0400 | [diff] [blame] | 81 | onos1_isup and start_result and ping_result and\ |
| 82 | switch_mastership) |
andrewonlab | 0748d2a | 2014-10-09 13:24:17 -0400 | [diff] [blame] | 83 | utilities.assert_equals(expect=main.TRUE, actual=case1_result, |
| 84 | onpass="Test startup successful", |
| 85 | onfail="Test startup NOT successful") |
andrewonlab | 4a5c447 | 2014-10-09 12:11:41 -0400 | [diff] [blame] | 86 | |
andrewonlab | 05e362f | 2014-10-10 00:40:57 -0400 | [diff] [blame] | 87 | def CASE11(self, main): |
andrewonlab | 2b30bd3 | 2014-10-09 16:48:55 -0400 | [diff] [blame] | 88 | ''' |
| 89 | Cleanup sequence: |
| 90 | onos-service <node_ip> stop |
| 91 | onos-uninstall |
| 92 | |
| 93 | TODO: Define rest of cleanup |
| 94 | |
| 95 | ''' |
| 96 | |
| 97 | ONOS1_ip = main.params['CTRL']['ip1'] |
| 98 | |
| 99 | main.case("Cleaning up test environment") |
| 100 | |
andrewonlab | 057c06a | 2014-10-09 17:19:21 -0400 | [diff] [blame] | 101 | main.step("Testing ONOS kill function") |
| 102 | kill_result = main.ONOSbench.onos_kill(ONOS1_ip) |
| 103 | |
andrewonlab | 2b30bd3 | 2014-10-09 16:48:55 -0400 | [diff] [blame] | 104 | main.step("Stopping ONOS service") |
| 105 | stop_result = main.ONOSbench.onos_stop(ONOS1_ip) |
| 106 | |
| 107 | main.step("Uninstalling ONOS service") |
andrewonlab | 057c06a | 2014-10-09 17:19:21 -0400 | [diff] [blame] | 108 | uninstall_result = main.ONOSbench.onos_uninstall() |
andrewonlab | 4a5c447 | 2014-10-09 12:11:41 -0400 | [diff] [blame] | 109 | |
andrewonlab | 05e362f | 2014-10-10 00:40:57 -0400 | [diff] [blame] | 110 | def CASE3(self, main): |
| 111 | ''' |
| 112 | Test 'onos' command and its functionality in driver |
| 113 | ''' |
| 114 | |
| 115 | ONOS1_ip = main.params['CTRL']['ip1'] |
| 116 | cmdstr = "system:name" |
| 117 | |
| 118 | main.case("Testing 'onos' command") |
| 119 | |
| 120 | main.step("Sending command 'onos -w <onos-ip> system:name") |
| 121 | cmd_result = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr) |
| 122 | print cmd_result |