blob: 68a94e5d230f968bdbdef32c2e6e1bead550e206 [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 )
Devin Lim58046fa2017-07-05 16:55:00 -070056 main.commit = ( main.commit.split( " " ) )[ 1 ]
jenkins24dde6b2015-06-19 13:40:44 -070057 # -- END OF INIT SECTION --#
Jon Hall4ba53f02015-07-29 13:07:41 -070058
Devin Lim58046fa2017-07-05 16:55:00 -070059 main.testSetUp.ONOSSetUp( MN1Ip, True, hasCli=False,
60 cellName=main.cellName )
jenkins24dde6b2015-06-19 13:40:44 -070061
Jon Hall4ba53f02015-07-29 13:07:41 -070062 for i in range(5):
Devin Lim58046fa2017-07-05 16:55:00 -070063 main.ONOSbench.onosCfgSet(main.ONOSip[0], "org.onosproject.fwd.ReactiveForwarding","packetOutOnly true")
jenkins24dde6b2015-06-19 13:40:44 -070064 time.sleep(5)
Jon Hall4ba53f02015-07-29 13:07:41 -070065 main.ONOSbench.handle.sendline("onos $OC1 cfg get|grep packetOutOnly")
66 main.ONOSbench.handle.expect(":~")
jenkins24dde6b2015-06-19 13:40:44 -070067 check = main.ONOSbench.handle.before
68 if "value=true" in check:
Jon Hall4ba53f02015-07-29 13:07:41 -070069 main.log.info("cfg set successful")
suibin zhang8a46f2e2015-07-13 21:56:07 -070070 stepResult = main.TRUE
Jon Hall4ba53f02015-07-29 13:07:41 -070071 break
72 if i == 4:
suibin zhang8a46f2e2015-07-13 21:56:07 -070073 main.log.info("Cfg set failed")
74 stepResult = main.FALSE
Jon Hall4ba53f02015-07-29 13:07:41 -070075 else:
jenkins24dde6b2015-06-19 13:40:44 -070076 time.sleep(5)
suibin zhang8a46f2e2015-07-13 21:56:07 -070077
Jon Hall4ba53f02015-07-29 13:07:41 -070078 utilities.assert_equals( expect=main.TRUE,
79 actual=stepResult,
80 onpass="Successfully configure onos for cbench test ",
suibin zhang8a46f2e2015-07-13 21:56:07 -070081 onfail="Failed to configure onos for cbench test" )
jenkins24dde6b2015-06-19 13:40:44 -070082
Jon Hall4ba53f02015-07-29 13:07:41 -070083
jenkins24dde6b2015-06-19 13:40:44 -070084 def CASE2( self, main ):
suibin zhang8a46f2e2015-07-13 21:56:07 -070085 main.case("Running Cbench")
86 main.step("Issuing cbench commands and grab returned results")
87 validFlag = False
suibin zhangacdd8fe2015-08-31 17:01:39 -070088 cbenchCMD = main.params[ 'TEST' ][ 'cbenchCMD' ]
jenkins24dde6b2015-06-19 13:40:44 -070089 mode = main.params[ 'TEST' ][ 'mode' ]
90 if mode != "t":
Jon Hall4ba53f02015-07-29 13:07:41 -070091 mode = " "
jenkins24dde6b2015-06-19 13:40:44 -070092
Devin Lim58046fa2017-07-05 16:55:00 -070093 runCbench = ( "ssh " + CBENCHuser + "@" + main.ONOSip[0] + " " + cbenchCMD + mode )
jenkins24dde6b2015-06-19 13:40:44 -070094 main.ONOSbench.handle.sendline(runCbench)
95 time.sleep(30)
Jon Hall4ba53f02015-07-29 13:07:41 -070096 main.ONOSbench.handle.expect(":~")
jenkins24dde6b2015-06-19 13:40:44 -070097 output = main.ONOSbench.handle.before
98 main.log.info(output)
99
100 output = output.splitlines()
Jon Hall4ba53f02015-07-29 13:07:41 -0700101 for line in output:
suibin zhang8a46f2e2015-07-13 21:56:07 -0700102 if "RESULT: " in line:
103 validFlag = True
jenkins24dde6b2015-06-19 13:40:44 -0700104 print line
Jon Hall4ba53f02015-07-29 13:07:41 -0700105 resultLine = line.split(" ")
suibin zhang8a46f2e2015-07-13 21:56:07 -0700106 for word in resultLine:
Jon Hall4ba53f02015-07-29 13:07:41 -0700107 if word == "min/max/avg/stdev":
suibin zhang8a46f2e2015-07-13 21:56:07 -0700108 resultsIndex = resultLine.index(word)
109 print resultsIndex
110 break
jenkins24dde6b2015-06-19 13:40:44 -0700111
suibin zhang8a46f2e2015-07-13 21:56:07 -0700112 finalDataString = resultLine[resultsIndex + 2]
113 print finalDataString
114 finalDataList = finalDataString.split("/")
115 avg = finalDataList[2]
116 stdev = finalDataList[3]
Jon Hall4ba53f02015-07-29 13:07:41 -0700117
118 main.log.info("Average: \t\t\t" + avg)
119 main.log.info("Standard Deviation: \t" + stdev)
120
suibin zhang8a46f2e2015-07-13 21:56:07 -0700121 try:
122 dbFileName="/tmp/CbenchDB"
Jon Hall4ba53f02015-07-29 13:07:41 -0700123 dbfile = open(dbFileName, "w+")
Devin Lim58046fa2017-07-05 16:55:00 -0700124 temp = "'" + main.commit + "',"
Jon Hall4ba53f02015-07-29 13:07:41 -0700125 temp += "'" + mode + "',"
suibin zhang8a46f2e2015-07-13 21:56:07 -0700126 temp += "'" + avg + "',"
Jon Hall4ba53f02015-07-29 13:07:41 -0700127 temp += "'" + stdev + "'\n"
suibin zhang8a46f2e2015-07-13 21:56:07 -0700128 dbfile.write(temp)
129 dbfile.close()
Devin Lim58046fa2017-07-05 16:55:00 -0700130 main.ONOSbench.logReport(main.ONOSip[0], ["ERROR", "WARNING", "EXCEPT"], outputMode="d")
suibin zhang8a46f2e2015-07-13 21:56:07 -0700131 except IOError:
132 main.log.warn("Error opening " + dbFileName + " to write results.")
Jon Hall4ba53f02015-07-29 13:07:41 -0700133
suibin zhang8a46f2e2015-07-13 21:56:07 -0700134 stepResult = main.TRUE
135 break
136 if ( validFlag == False ):
137 main.log.warn("Cbench Test produced no valid results!!!!")
138 stepResult = main.FALSE
jenkins24dde6b2015-06-19 13:40:44 -0700139
suibin zhang8a46f2e2015-07-13 21:56:07 -0700140 utilities.assert_equals( expect=main.TRUE,
141 actual=stepResult,
142 onpass="Successfully tested onos for cbench. ",
143 onfail="Failed to obtain valid onos cbench result!" )
jenkins24dde6b2015-06-19 13:40:44 -0700144