blob: 254731750b46b215681ca741669ac1d508f91dc2 [file] [log] [blame]
jenkins24dde6b2015-06-19 13:40:44 -07001# ScaleOutTemplate --> CbenchBM
2#
3# CASE1 starts number of nodes specified in param file
4#
5# cameron@onlab.us
6
7import sys
Jon Hallf57a5ef2015-07-07 17:56:16 -07008import os
jenkins24dde6b2015-06-19 13:40:44 -07009import os.path
10
11
Jon Hallf57a5ef2015-07-07 17:56:16 -070012class SCPFcbench:
jenkins24dde6b2015-06-19 13:40:44 -070013
14 def __init__( self ):
15 self.default = ''
16
Jon Hall4ba53f02015-07-29 13:07:41 -070017 def CASE1( self, main ):
18
19 import time
20 import os
21 global init
suibin zhang8a46f2e2015-07-13 21:56:07 -070022 main.case("pre-condition for cbench test.")
23
Jon Hall4ba53f02015-07-29 13:07:41 -070024 try:
25 if type(init) is not bool:
26 init = False
27 except NameError:
28 init = False
29
Jon Hall4ba53f02015-07-29 13:07:41 -070030 # -- INIT SECTION, ONLY RUNS ONCE -- #
31 if init == False:
jenkins24dde6b2015-06-19 13:40:44 -070032 init = True
Devin Lim58046fa2017-07-05 16:55:00 -070033 try:
34 from tests.dependencies.ONOSSetup import ONOSSetup
35 main.testSetUp = ONOSSetup()
36 except ImportError:
37 main.log.error( "ONOSSetup not found. exiting the test" )
38 main.exit()
39 main.testSetUp.envSetupDescription()
40 stepResult = main.FALSE
41 try:
42 # Load values from params file
43 BENCHIp = main.params['BENCH']['ip1']
44 BENCHUser = main.params['BENCH']['user']
45 CBENCHuser = main.params['CBENCH']['user']
46 MN1Ip = os.environ[main.params['MN']['ip1']]
47 main.maxNodes = int(main.params['availableNodes'])
48 main.cellName = main.params['ENV']['cellName']
49 main.apps = main.params['ENV']['cellApps']
50 main.scale = (main.params['SCALE']).split(",")
Jon Hall4ba53f02015-07-29 13:07:41 -070051
Devin Lim58046fa2017-07-05 16:55:00 -070052 stepResult = main.testSetUp.envSetup( hasCli=False )
53 except Exception as e:
54 main.testSetUp.envSetupException( e )
55 main.testSetUp.evnSetupConclusion( stepResult )
jenkins24dde6b2015-06-19 13:40:44 -070056
Devin Lim58046fa2017-07-05 16:55:00 -070057 main.commit = ( main.commit.split( " " ) )[ 1 ]
jenkins24dde6b2015-06-19 13:40:44 -070058 # -- END OF INIT SECTION --#
Jon Hall4ba53f02015-07-29 13:07:41 -070059
Devin Lim58046fa2017-07-05 16:55:00 -070060 main.testSetUp.ONOSSetUp( MN1Ip, True, hasCli=False,
61 cellName=main.cellName )
jenkins24dde6b2015-06-19 13:40:44 -070062
Jon Hall4ba53f02015-07-29 13:07:41 -070063 for i in range(5):
Devin Lim58046fa2017-07-05 16:55:00 -070064 main.ONOSbench.onosCfgSet(main.ONOSip[0], "org.onosproject.fwd.ReactiveForwarding","packetOutOnly true")
jenkins24dde6b2015-06-19 13:40:44 -070065 time.sleep(5)
Jon Hall4ba53f02015-07-29 13:07:41 -070066 main.ONOSbench.handle.sendline("onos $OC1 cfg get|grep packetOutOnly")
67 main.ONOSbench.handle.expect(":~")
jenkins24dde6b2015-06-19 13:40:44 -070068 check = main.ONOSbench.handle.before
69 if "value=true" in check:
Jon Hall4ba53f02015-07-29 13:07:41 -070070 main.log.info("cfg set successful")
suibin zhang8a46f2e2015-07-13 21:56:07 -070071 stepResult = main.TRUE
Jon Hall4ba53f02015-07-29 13:07:41 -070072 break
73 if i == 4:
suibin zhang8a46f2e2015-07-13 21:56:07 -070074 main.log.info("Cfg set failed")
75 stepResult = main.FALSE
Jon Hall4ba53f02015-07-29 13:07:41 -070076 else:
jenkins24dde6b2015-06-19 13:40:44 -070077 time.sleep(5)
suibin zhang8a46f2e2015-07-13 21:56:07 -070078
Jon Hall4ba53f02015-07-29 13:07:41 -070079 utilities.assert_equals( expect=main.TRUE,
80 actual=stepResult,
81 onpass="Successfully configure onos for cbench test ",
suibin zhang8a46f2e2015-07-13 21:56:07 -070082 onfail="Failed to configure onos for cbench test" )
jenkins24dde6b2015-06-19 13:40:44 -070083
Jon Hall4ba53f02015-07-29 13:07:41 -070084
jenkins24dde6b2015-06-19 13:40:44 -070085 def CASE2( self, main ):
suibin zhang8a46f2e2015-07-13 21:56:07 -070086 main.case("Running Cbench")
87 main.step("Issuing cbench commands and grab returned results")
88 validFlag = False
suibin zhangacdd8fe2015-08-31 17:01:39 -070089 cbenchCMD = main.params[ 'TEST' ][ 'cbenchCMD' ]
jenkins24dde6b2015-06-19 13:40:44 -070090 mode = main.params[ 'TEST' ][ 'mode' ]
91 if mode != "t":
Jon Hall4ba53f02015-07-29 13:07:41 -070092 mode = " "
jenkins24dde6b2015-06-19 13:40:44 -070093
Devin Lim58046fa2017-07-05 16:55:00 -070094 runCbench = ( "ssh " + CBENCHuser + "@" + main.ONOSip[0] + " " + cbenchCMD + mode )
jenkins24dde6b2015-06-19 13:40:44 -070095 main.ONOSbench.handle.sendline(runCbench)
96 time.sleep(30)
Jon Hall4ba53f02015-07-29 13:07:41 -070097 main.ONOSbench.handle.expect(":~")
jenkins24dde6b2015-06-19 13:40:44 -070098 output = main.ONOSbench.handle.before
99 main.log.info(output)
100
101 output = output.splitlines()
Jon Hall4ba53f02015-07-29 13:07:41 -0700102 for line in output:
suibin zhang8a46f2e2015-07-13 21:56:07 -0700103 if "RESULT: " in line:
104 validFlag = True
jenkins24dde6b2015-06-19 13:40:44 -0700105 print line
Jon Hall4ba53f02015-07-29 13:07:41 -0700106 resultLine = line.split(" ")
suibin zhang8a46f2e2015-07-13 21:56:07 -0700107 for word in resultLine:
Jon Hall4ba53f02015-07-29 13:07:41 -0700108 if word == "min/max/avg/stdev":
suibin zhang8a46f2e2015-07-13 21:56:07 -0700109 resultsIndex = resultLine.index(word)
110 print resultsIndex
111 break
jenkins24dde6b2015-06-19 13:40:44 -0700112
suibin zhang8a46f2e2015-07-13 21:56:07 -0700113 finalDataString = resultLine[resultsIndex + 2]
114 print finalDataString
115 finalDataList = finalDataString.split("/")
116 avg = finalDataList[2]
117 stdev = finalDataList[3]
Jon Hall4ba53f02015-07-29 13:07:41 -0700118
119 main.log.info("Average: \t\t\t" + avg)
120 main.log.info("Standard Deviation: \t" + stdev)
121
suibin zhang8a46f2e2015-07-13 21:56:07 -0700122 try:
123 dbFileName="/tmp/CbenchDB"
Jon Hall4ba53f02015-07-29 13:07:41 -0700124 dbfile = open(dbFileName, "w+")
Devin Lim58046fa2017-07-05 16:55:00 -0700125 temp = "'" + main.commit + "',"
Jon Hall4ba53f02015-07-29 13:07:41 -0700126 temp += "'" + mode + "',"
suibin zhang8a46f2e2015-07-13 21:56:07 -0700127 temp += "'" + avg + "',"
Jon Hall4ba53f02015-07-29 13:07:41 -0700128 temp += "'" + stdev + "'\n"
suibin zhang8a46f2e2015-07-13 21:56:07 -0700129 dbfile.write(temp)
130 dbfile.close()
Devin Lim58046fa2017-07-05 16:55:00 -0700131 main.ONOSbench.logReport(main.ONOSip[0], ["ERROR", "WARNING", "EXCEPT"], outputMode="d")
suibin zhang8a46f2e2015-07-13 21:56:07 -0700132 except IOError:
133 main.log.warn("Error opening " + dbFileName + " to write results.")
Jon Hall4ba53f02015-07-29 13:07:41 -0700134
suibin zhang8a46f2e2015-07-13 21:56:07 -0700135 stepResult = main.TRUE
136 break
137 if ( validFlag == False ):
138 main.log.warn("Cbench Test produced no valid results!!!!")
139 stepResult = main.FALSE
jenkins24dde6b2015-06-19 13:40:44 -0700140
suibin zhang8a46f2e2015-07-13 21:56:07 -0700141 utilities.assert_equals( expect=main.TRUE,
142 actual=stepResult,
143 onpass="Successfully tested onos for cbench. ",
144 onfail="Failed to obtain valid onos cbench result!" )
jenkins24dde6b2015-06-19 13:40:44 -0700145