blob: 0e7a707067a9336eb1c07a9ce1b545468881e633 [file] [log] [blame]
andrewonlab4a5c4472014-10-09 12:11:41 -04001
2#Testing the basic functionality of ONOS Next
3#For sanity and driver functionality excercises only.
4
andrewonlab7735d852014-10-09 13:02:47 -04005import time
6import sys
7import os
andrewonlab2d355162014-10-10 00:43:59 -04008import re
andrewonlab7735d852014-10-09 13:02:47 -04009
andrewonlab4a5c4472014-10-09 12:11:41 -040010class ONOSNextTest:
11 def __init__(self):
12 self.default = ''
13
14 def CASE1(self, main):
15 '''
16 Startup sequence:
17 git pull
18 mvn clean install
19 onos-package
20 cell <name>
21 onos-verify-cell
22 onos-install -f
23 onos-wait-for-start
24 '''
andrewonlab7735d852014-10-09 13:02:47 -040025
andrewonlab084307e2014-10-09 14:06:09 -040026 cell_name = main.params['ENV']['cellName']
27 ONOS1_ip = main.params['CTRL']['ip1']
andrew@onlab.us59e8f692014-10-09 21:41:48 -040028 ONOS1_port = main.params['CTRL']['port1']
Jon Hallea7818b2014-10-09 14:30:59 -040029
andrewonlab8d0d7d72014-10-09 16:33:15 -040030 main.case("Setting up test environment")
Jon Hall3be576e2014-10-09 22:23:03 -040031
andrewonlab94282092014-10-10 13:00:11 -040032 main.step("Creating cell file")
andrewonlab2c010fb2014-10-10 18:08:59 -040033 #params: (bench ip, cell name, mininet ip, *onos ips)
andrewonlab94282092014-10-10 13:00:11 -040034 cell_file_result = main.ONOSbench.create_cell_file(
35 "10.128.20.10", "temp_cell_2", "10.128.10.90",
36 "10.128.10.11", "10.128.10.12", "10.128.10.13")
37
andrewonlab8d0d7d72014-10-09 16:33:15 -040038 main.step("Applying cell variable to environment")
andrewonlab084307e2014-10-09 14:06:09 -040039 cell_result = main.ONOSbench.set_cell(cell_name)
andrewonlabc03bf6c2014-10-09 14:56:18 -040040 verify_result = main.ONOSbench.verify_cell()
andrewonlab2fe32ad2014-10-09 16:36:40 -040041
Jon Hall77f53ce2014-10-13 18:02:06 -040042 main.step("Git checkout and pull master")
43 main.ONOSbench.git_checkout("master")
44 git_pull_result = main.ONOSbench.git_pull()
45
46
47 main.step("Using mvn clean & install")
48 clean_install_result = main.ONOSbench.clean_install()
49 #clean_install_result = main.TRUE
50
51 main.step("Creating ONOS package")
52 package_result = main.ONOSbench.onos_package()
53
andrewonlab2fe32ad2014-10-09 16:36:40 -040054 main.step("Installing ONOS package")
Jon Hall7993bfc2014-10-09 16:30:14 -040055 onos_install_result = main.ONOSbench.onos_install()
56 onos1_isup = main.ONOSbench.isup()
andrewonlab8d0d7d72014-10-09 16:33:15 -040057
58 main.step("Starting ONOS service")
59 start_result = main.ONOSbench.onos_start(ONOS1_ip)
60
Jon Hall7993bfc2014-10-09 16:30:14 -040061 case1_result = (clean_install_result and package_result and\
andrewonlab2b30bd32014-10-09 16:48:55 -040062 cell_result and verify_result and onos_install_result and\
andrewonlabf103e9f2014-10-10 00:59:07 -040063 onos1_isup and start_result )
andrewonlab0748d2a2014-10-09 13:24:17 -040064 utilities.assert_equals(expect=main.TRUE, actual=case1_result,
65 onpass="Test startup successful",
66 onfail="Test startup NOT successful")
andrewonlab4a5c4472014-10-09 12:11:41 -040067
andrewonlab05e362f2014-10-10 00:40:57 -040068 def CASE11(self, main):
andrewonlab2b30bd32014-10-09 16:48:55 -040069 '''
70 Cleanup sequence:
71 onos-service <node_ip> stop
72 onos-uninstall
73
74 TODO: Define rest of cleanup
75
76 '''
77
78 ONOS1_ip = main.params['CTRL']['ip1']
79
80 main.case("Cleaning up test environment")
81
andrewonlab057c06a2014-10-09 17:19:21 -040082 main.step("Testing ONOS kill function")
83 kill_result = main.ONOSbench.onos_kill(ONOS1_ip)
84
andrewonlab2b30bd32014-10-09 16:48:55 -040085 main.step("Stopping ONOS service")
86 stop_result = main.ONOSbench.onos_stop(ONOS1_ip)
87
88 main.step("Uninstalling ONOS service")
andrewonlab057c06a2014-10-09 17:19:21 -040089 uninstall_result = main.ONOSbench.onos_uninstall()
andrewonlab4a5c4472014-10-09 12:11:41 -040090
andrewonlab05e362f2014-10-10 00:40:57 -040091 def CASE3(self, main):
92 '''
93 Test 'onos' command and its functionality in driver
94 '''
95
96 ONOS1_ip = main.params['CTRL']['ip1']
andrewonlab05e362f2014-10-10 00:40:57 -040097
98 main.case("Testing 'onos' command")
99
andrewonlabf103e9f2014-10-10 00:59:07 -0400100 main.step("Sending command 'onos -w <onos-ip> system:name'")
101 cmdstr1 = "system:name"
102 cmd_result1 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr1)
103 main.log.info("onos command returned: "+cmd_result1)
104
105 main.step("Sending command 'onos -w <onos-ip> onos:topology'")
106 cmdstr2 = "onos:topology"
107 cmd_result2 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr2)
108 main.log.info("onos command returned: "+cmd_result2)
Jon Hall77f53ce2014-10-13 18:02:06 -0400109
110 main.step("Testing check_status")
111 check_status_results = main.ONOSbench.check_status(ONOS1_ip, 4, 6)
112 main.log.info("Results of check_status " + str(check_status_results))
andrewonlabf103e9f2014-10-10 00:59:07 -0400113
andrewonlab2c010fb2014-10-10 18:08:59 -0400114 main.step("Sending command 'onos -w <onos-ip> bundle:list'")
115 cmdstr3 = "bundle:list"
116 cmd_result3 = main.ONOSbench.onos_cli(ONOS1_ip, cmdstr3)
117 main.log.info("onos command returned: "+cmd_result3)
Jon Hall77f53ce2014-10-13 18:02:06 -0400118 case3_result = (cmd_result1 and cmd_result2 and\
119 check_status_results and cmd_result3 )
120 utilities.assert_equals(expect=main.TRUE, actual=case3_result,
121 onpass="Test case 3 successful",
122 onfail="Test case 3 NOT successful")
andrewonlab2c010fb2014-10-10 18:08:59 -0400123
andrewonlabf103e9f2014-10-10 00:59:07 -0400124 def CASE4(self, main):
Jon Hall31735332014-10-10 15:27:43 -0400125 import re
126 import time
Jon Hall77f53ce2014-10-13 18:02:06 -0400127 main.case("Pingall Test(No intents are added)")
andrewonlabf103e9f2014-10-10 00:59:07 -0400128 main.step("Assigning switches to controllers")
Jon Hall77f53ce2014-10-13 18:02:06 -0400129 for i in range(1,5): #1 to (num of switches +1)
andrewonlabf103e9f2014-10-10 00:59:07 -0400130 main.Mininet1.assign_sw_controller(sw=str(i),
131 ip1=ONOS1_ip, port1=ONOS1_port)
132 switch_mastership = main.TRUE
Jon Hall77f53ce2014-10-13 18:02:06 -0400133 for i in range (1,5):
andrewonlabf103e9f2014-10-10 00:59:07 -0400134 response = main.Mininet1.get_sw_controller("s"+str(i))
135 print("Response is " + str(response))
136 if re.search("tcp:"+ONOS1_ip,response):
137 switch_mastership = switch_mastership and main.TRUE
138 else:
139 switch_mastership = main.FALSE
140
141 #REACTIVE FWD test
142 main.step("Pingall")
143 ping_result = main.FALSE
144 while ping_result == main.FALSE:
145 time1 = time.time()
146 ping_result = main.Mininet1.pingall()
147 time2 = time.time()
148 print "Time for pingall: %2f seconds" % (time2 - time1)
149
150 case4_result = switch_mastership and ping_result
151 utilities.assert_equals(expect=main.TRUE, actual=case4_result,
Jon Hall31735332014-10-10 15:27:43 -0400152 onpass="Pingall Test successful",
153 onfail="Pingall Test NOT successful")
andrewonlabf103e9f2014-10-10 00:59:07 -0400154
andrewonlabc7345f22014-10-13 14:12:59 -0400155 def CASE5(self, main):
156 '''
157 Test the ONOS-cli functionality
andrewonlab7e4d2d32014-10-15 13:23:21 -0400158
andrewonlab3e15ead2014-10-15 14:21:34 -0400159 Below are demonstrations of what the
160 ONOS cli driver functions can be used for.
andrewonlabc7345f22014-10-13 14:12:59 -0400161 '''
andrewonlab86dc3082014-10-13 18:18:38 -0400162 import time
163
andrewonlabc7345f22014-10-13 14:12:59 -0400164 cell_name = main.params['ENV']['cellName']
165 ONOS1_ip = main.params['CTRL']['ip1']
166
167 main.case("Testing the ONOS-cli")
168
169 main.step("Set cell for ONOS-cli environment")
170 main.ONOScli.set_cell(cell_name)
171
172 main.step("Start ONOS-cli")
andrewonlab86dc3082014-10-13 18:18:38 -0400173 main.ONOScli.start_onos_cli(ONOS1_ip)
andrewonlabc7345f22014-10-13 14:12:59 -0400174
175 main.step("issue command: onos:topology")
andrewonlab7c211572014-10-15 16:45:20 -0400176 topology_obj = main.ONOScli.topology()
andrewonlab86dc3082014-10-13 18:18:38 -0400177
178 main.step("issue various feature:install <str> commands")
179 main.ONOScli.feature_install("onos-app-fwd")
180 main.ONOScli.feature_install("onos-rest")
181
182 main.step("Add a bad node")
183 node_result = main.ONOScli.add_node("111", "10.128.20.")
184 if node_result == main.TRUE:
185 main.log.info("Node successfully added")
186
187 main.step("Add a correct node")
188 node_result = main.ONOScli.add_node("111", "10.128.20.12")
189
andrewonlab7e4d2d32014-10-15 13:23:21 -0400190 main.step("Assign switches and list devices")
andrewonlab86dc3082014-10-13 18:18:38 -0400191 for i in range(1,8):
andrewonlabf80585f2014-10-13 19:00:11 -0400192 main.Mininet2.handle.sendline("sh ovs-vsctl set-controller s"+str(i)+
andrewonlab86dc3082014-10-13 18:18:38 -0400193 " tcp:10.128.20.11")
andrewonlabf80585f2014-10-13 19:00:11 -0400194 main.Mininet2.handle.expect("mininet>")
andrewonlab86dc3082014-10-13 18:18:38 -0400195 #Need to sleep to allow switch add processing
andrewonlab7e4d2d32014-10-15 13:23:21 -0400196 time.sleep(5)
andrewonlab86dc3082014-10-13 18:18:38 -0400197 list_result = main.ONOScli.devices()
198 main.log.info(list_result)
199
andrewonlab7e4d2d32014-10-15 13:23:21 -0400200 main.step("Get all devices id")
201 devices_id_list = main.ONOScli.get_all_devices_id()
202 main.log.info(devices_id_list)
andrewonlabc7345f22014-10-13 14:12:59 -0400203
andrewonlab3e15ead2014-10-15 14:21:34 -0400204 main.step("Get path and cost between device 1 and 7")
205 (path, cost) = main.ONOScli.paths(devices_id_list[0], devices_id_list[6])
206 main.log.info("Path: "+str(path))
207 main.log.info("Cost: "+str(cost))
andrewonlab7c211572014-10-15 16:45:20 -0400208
209 main.step("Get nodes currently visible")
210 nodes_str = main.ONOScli.nodes()
211 main.log.info(nodes_str)
212
213 main.step("Get all nodes id's")
214 node_id_list = main.ONOScli.get_all_nodes_id()
215 main.log.info(node_id_list)
216
217 main.step("Set device "+str(devices_id_list[0])+" to role: standby")
218 device_role_result = main.ONOScli.device_role(
219 devices_id_list[0], node_id_list[0], "standby")
220 if device_role_result == main.TRUE:
221 main.log.report("Device role successfully set")
222
223 main.step("Check devices / role again")
224 dev_result = main.ONOScli.devices()
225 main.log.info(dev_result)
226
andrewonlab7e4d2d32014-10-15 13:23:21 -0400227######
228#jhall@onlab.us
229#andrew@onlab.us
230######