blob: 653397e831891f8a8adf09c72651366f7b37d796 [file] [log] [blame]
kelvin-onlabfe6df9c2015-02-06 11:16:38 -08001"""
2Description: This test is an example of a simple single node ONOS test
3
4List of test cases:
5CASE1: Compile ONOS and push it to the test machine
6CASE2: Assign mastership to controller
7CASE3: Pingall
8"""
9class PingallExample:
10
11 def __init__( self ):
12 self.default = ''
13
14 def CASE1( self, main ):
15 """
16 CASE1 is to compile ONOS and push it to the test machines
17
18 Startup sequence:
19 git pull
20 mvn clean install
21 onos-package
22 cell <name>
23 onos-verify-cell
24 onos-install -f
25 onos-wait-for-start
26 """
27 desc = "ONOS Single node cluster restart HA test - initialization"
28 main.log.report( desc )
29 main.case( "Setting up test environment" )
30
31 # load some vairables from the params file
32 PULLCODE = False
33 if main.params[ 'Git' ] == 'True':
34 PULLCODE = True
35 cellName = main.params[ 'ENV' ][ 'cellName' ]
36
37 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
38
39 main.step( "Applying cell variable to environment" )
40 cellResult = main.ONOSbench.setCell( cellName )
41 verifyResult = main.ONOSbench.verifyCell()
42
43 main.log.report( "Uninstalling ONOS" )
44 main.ONOSbench.onosUninstall( ONOS1Ip )
45
46 cleanInstallResult = main.TRUE
47 gitPullResult = main.TRUE
48
49 main.step( "Compiling the latest version of ONOS" )
50 if PULLCODE:
51 main.step( "Git checkout and pull master" )
52 main.ONOSbench.gitCheckout( "master" )
53 gitPullResult = main.ONOSbench.gitPull()
54
55 main.step( "Using mvn clean & install" )
56 cleanInstallResult = main.TRUE
57 if gitPullResult == main.TRUE:
58 cleanInstallResult = main.ONOSbench.cleanInstall()
59 else:
60 main.log.warn( "Did not pull new code so skipping mvn " +
61 "clean install" )
62 main.ONOSbench.getVersion( report=True )
63
64 cellResult = main.ONOSbench.setCell( cellName )
65 verifyResult = main.ONOSbench.verifyCell()
66 main.step( "Creating ONOS package" )
67 packageResult = main.ONOSbench.onosPackage()
68
69 main.step( "Installing ONOS package" )
70 onos1InstallResult = main.ONOSbench.onosInstall( options="-f",
71 node=ONOS1Ip )
72
73 main.step( "Checking if ONOS is up yet" )
74 for i in range( 2 ):
75 onos1Isup = main.ONOSbench.isup( ONOS1Ip )
76 if onos1Isup:
77 break
78 if not onos1Isup:
79 main.log.report( "ONOS1 didn't start!" )
80
81 # TODO: if it becomes an issue, we can retry this step a few times
82
83 cliResult = main.ONOScli1.startOnosCli( ONOS1Ip )
84
85 case1Result = ( cleanInstallResult and packageResult and
86 cellResult and verifyResult and
87 onos1InstallResult and
88 onos1Isup and cliResult )
89
90 utilities.assert_equals( expect=main.TRUE, actual=case1Result,
91 onpass="Test startup successful",
92 onfail="Test startup NOT successful" )
93
94 if case1Result == main.FALSE:
95 main.cleanup()
96 main.exit()
97
98 # Starting the mininet using the old way
99 main.step( "Starting Mininet ..." )
100 netIsUp = main.Mininet1.startNet()
101 if netIsUp:
102 main.log.info("Mininet CLI is up")
103 else:
104 main.log.info("Mininet CLI is down")
105
106 def CASE2( self, main ):
107 """
108 Assign mastership to controller
109 """
110 import re
111
112 main.log.report( "Assigning switches to controller" )
113 main.case( "Assigning Controller" )
114 main.step( "Assign switches to controller" )
115
116 ONOS1Ip = main.params[ 'CTRL' ][ 'ip1' ]
117 ONOS1Port = main.params[ 'CTRL' ][ 'port1' ]
118
119 for i in range( 1, 14 ):
120 main.Mininet1.assignSwController(
121 sw=str( i ),
122 ip1=ONOS1Ip,
123 port1=ONOS1Port )
124
125 mastershipCheck = main.TRUE
126 for i in range( 1, 14 ):
127 response = main.Mininet1.getSwController( "s" + str( i ) )
128 try:
129 main.log.info( str( response ) )
130 except:
131 main.log.info( repr( response ) )
132 if re.search( "tcp:" + ONOS1Ip, response ):
133 mastershipCheck = mastershipCheck and main.TRUE
134 else:
135 mastershipCheck = main.FALSE
136 if mastershipCheck == main.TRUE:
137 main.log.report( "Switch mastership assigned correctly" )
138 utilities.assert_equals(
139 expect=main.TRUE,
140 actual=mastershipCheck,
141 onpass="Switch mastership assigned correctly",
142 onfail="Switches not assigned correctly to controllers" )
143
144 def CASE3( self, main ):
145 """
146 Assign intents
147 """
148 import time
149
150 main.log.report( "Run Pingall" )
151 main.case( "Run Pingall" )
152
153 # install onos-app-fwd
154 main.log.info( "Install reactive forwarding app" )
155 main.ONOScli1.featureInstall( "onos-app-fwd" )
156
157 # REACTIVE FWD test
158 pingResult = main.FALSE
159 time1 = time.time()
160 pingResult = main.Mininet1.pingall()
161 time2 = time.time()
162 main.log.info( "Time for pingall: %2f seconds" % ( time2 - time1 ) )
163
164 # uninstall onos-app-fwd
165 main.log.info( "Uninstall reactive forwarding app" )
166 main.ONOScli1.featureUninstall( "onos-app-fwd" )
167
168 utilities.assert_equals( expect=main.TRUE, actual=pingResult,
169 onpass="All hosts are reachable",
170 onfail="Some pings failed" )