diff options
Diffstat (limited to 'framework/scripts/function_test/Teston/adapters')
5 files changed, 0 insertions, 550 deletions
diff --git a/framework/scripts/function_test/Teston/adapters/__init__.py b/framework/scripts/function_test/Teston/adapters/__init__.py deleted file mode 100644 index e69de29b..00000000 --- a/framework/scripts/function_test/Teston/adapters/__init__.py +++ /dev/null diff --git a/framework/scripts/function_test/Teston/adapters/client.py b/framework/scripts/function_test/Teston/adapters/client.py deleted file mode 100644 index 32e3749f..00000000 --- a/framework/scripts/function_test/Teston/adapters/client.py +++ /dev/null @@ -1,69 +0,0 @@ -""" -Description: - This file is used to run testcase - lanqinglong@huawei.com -""" -from environment import environment -import os -import time -import pexpect -import re - -class client( environment ): - - def __init__( self ): - environment.__init__( self ) - self.loginfo = environment() - self.testcase = '' - - def RunScript( self, handle, testname, timeout=300 ): - """ - Run ONOS Test Script - Parameters: - testname: ONOS Testcase Name - masterusername: The server username of running ONOS - masterpassword: The server password of running ONOS - """ - self.testcase = testname - self.ChangeTestCasePara( testname, self.masterusername, self.masterpassword ) - runhandle = handle - runtest = self.home + "/OnosSystemTest/TestON/bin/cli.py run " + testname - runhandle.sendline(runtest) - circletime = 0 - lastshowscreeninfo = '' - while True: - Result = runhandle.expect(["PEXPECT]#", pexpect.EOF, pexpect.TIMEOUT]) - curshowscreeninfo = runhandle.before - if (len(lastshowscreeninfo) != len(curshowscreeninfo)): - print str(curshowscreeninfo)[len(lastshowscreeninfo)::] - lastshowscreeninfo = curshowscreeninfo - if Result == 0: - print "Done!" - return - time.sleep(1) - circletime += 1 - if circletime > timeout: - break - self.loginfo.log( "Timeout when running the test, please check!" ) - - def onosstart( self ): - #This is the compass run machine user&pass,you need to modify - - print "Test Begin....." - self.OnosConnectionSet() - masterhandle = self.SSHlogin(self.localhost, self.masterusername, - self.masterpassword) - self.OnosEnvSetup( masterhandle ) - return masterhandle - - def onosclean( self, handle ): - self.SSHRelease( handle ) - self.loginfo.log('Release onos handle Successful') - - def push_results_to_db( self, payload, pushornot = 1): - url = self.Result_DB + "/results" - params = {"project_name": "functest", "case_name": "ONOS-" + self.testcase, - "pod_name": 'huawei-build-2', "details": payload} - headers = {'Content-Type': 'application/json'} - r = requests.post(url, data=json.dumps(params), headers=headers) - self.loginfo.log('Pushing result via Northbound, info:' + r ) diff --git a/framework/scripts/function_test/Teston/adapters/connection.py b/framework/scripts/function_test/Teston/adapters/connection.py deleted file mode 100644 index f7f283ed..00000000 --- a/framework/scripts/function_test/Teston/adapters/connection.py +++ /dev/null @@ -1,191 +0,0 @@ -""" -Description: - This file is used to make connections - Include ssh & exchange public-key to each other so that - it can run without password - - lanqinglong@huawei.com -""" -import os -import time -import pexpect -import re -import sys -from foundation import foundation - -class connection( foundation ): - - def __init__( self ): - foundation.__init__( self ) - self.loginfo = foundation() - - def AddKnownHost( self, handle, ipaddr, username, password ): - """ - Add an user to known host,so that onos can login in with onos $ipaddr. - parameters: - ipaddr: ip address - username: login user name - password: login password - """ - print( "Now Adding an user to known hosts " + ipaddr ) - login = handle - login.sendline( "ssh -l %s -p 8101 %s"%( username, ipaddr ) ) - index = 0 - while index != 2: - index = login.expect( ['assword:', 'yes/no', pexpect.EOF, \ - pexpect.TIMEOUT] ) - if index == 0: - login.sendline( password ) - login.sendline( "logout" ) - index = login.expect( ["closed", pexpect.EOF] ) - if index == 0: - self.loginfo.log( "Add SSH Known Host Success!" ) - break - else: - self.loginfo.log( "Add SSH Known Host Failed! Please Check!" ) - break - login.prompt( ) - - if index == 1: - login.sendline('yes') - - def GetEnvValue( self, handle, envname): - """ - os.getenv only returns current user value - GetEnvValue returns a environment value of - current handle - eg: GetEnvValue(handle,'HOME') - """ - envhandle = handle - envhandle.sendline( 'echo $' + envname ) - envhandle.prompt( ) - reg = envname + '\r\n(.*)\r' - envaluereg = re.compile( reg ) - envalue = envaluereg.search( envhandle.before ) - if envalue: - return envalue.groups()[0] - else: - return None - - def Gensshkey( self, handle ): - """ - Generate ssh keys, used for some server have no sshkey. - """ - print "Now Generating SSH keys..." - #Here file name may be id_rsa or id_ecdsa or others - #So here will have a judgement - keysub = handle - filepath = self.GetEnvValue( keysub, 'HOME' ) + '/.ssh' - filelist = os.listdir( filepath ) - for item in filelist: - if 'id' in item: - self.loginfo.log("SSH keys are exsit in ssh directory.") - return True - keysub.sendline("ssh-keygen -t rsa") - Result = 0 - while Result != 2: - Result = keysub.expect( ["Overwrite", "Enter", pexpect.EOF, \ - 'PEXPECT]#', pexpect.TIMEOUT]) - if Result == 0: - keysub.sendline("y") - if Result == 1 or Result == 2: - keysub.sendline("\n") - if Result == 3: - self.loginfo.log( "Generate SSH key success." ) - keysub.prompt() - break - if Result == 4: - self.loginfo.log("Generate SSH key failed.") - keysub.prompt() - break - - def GetRootAuth( self, password ): - """ - Get root user - parameters: - password: root login password - """ - print( "Now changing to user root" ) - login = pexpect.spawn( "su - root" ) - index = 0 - while index != 2: - index = login.expect( ['assword:', "failure", \ - pexpect.EOF, pexpect.TIMEOUT] ) - if index == 0: - login.sendline( password ) - if index == 1: - self.loginfo.log("Change user to root failed.") - - login.interact() - - def ReleaseRootAuth( self ): - """ - Exit root user. - """ - print( "Now Release user root" ) - login = pexpect.spawn( "exit" ) - index = login.expect( ['logout', \ - pexpect.EOF, pexpect.TIMEOUT] ) - if index == 0: - self.loginfo.log("Release root user success.") - if index == 1: - self.loginfo.log("Release root user failed.") - - login.interact() - - def AddEnvIntoBashrc( self, envalue ): - """ - Add Env var into /etc/profile. - parameters: - envalue: environment value to add - """ - print "Now Adding bash environment" - fileopen = open( "/etc/profile", 'r' ) - findContext = 1 - while findContext: - findContext = fileopen.readline( ) - result = findContext.find( envalue ) - if result != -1: - break - fileopen.close - if result == -1: - envAdd = open( "/etc/profile", 'a+' ) - envAdd.writelines( "\n" + envalue ) - envAdd.close( ) - self.loginfo.log( "Add env to bashrc success!" ) - - def OnosRootPathChange( self, onospath ): - """ - Change ONOS root path in file:bash_profile - onospath: path of onos root - """ - print "Now Changing ONOS Root Path" - filepath = onospath + '/onos/tools/dev/bash_profile' - line = open(filepath, 'r').readlines() - lenall = len(line) - 1 - for i in range(lenall): - if "export ONOS_ROOT" in line[i]: - line[i] = 'export ONOS_ROOT=' + onospath + 'onos\n' - NewFile = open(filepath, 'w') - NewFile.writelines(line) - NewFile.close - print "Done!" - - def OnosConnectionSet (self): - """ - Intergrate for ONOS connection setup - """ - if self.masterusername == 'root': - filepath = '/root/' - else : - filepath = '/home/' + self.masterusername + '/' - self.OnosRootPathChange( filepath ) - filepath = os.path.join( filepath, "onos/tools/dev/bash_profile" ) - self.AddEnvIntoBashrc("source " + filepath + "\n") - self.AddEnvIntoBashrc("export OCT=" + self.OCT) - self.AddEnvIntoBashrc("export OC1=" + self.OC1) - self.AddEnvIntoBashrc("export OC2=" + self.OC2) - self.AddEnvIntoBashrc("export OC3=" + self.OC3) - self.AddEnvIntoBashrc("export OCN=" + self.OCN) - self.AddEnvIntoBashrc("export OCN2=" + self.OCN2) - self.AddEnvIntoBashrc("export localhost=" + self.localhost) diff --git a/framework/scripts/function_test/Teston/adapters/environment.py b/framework/scripts/function_test/Teston/adapters/environment.py deleted file mode 100644 index bdd0e122..00000000 --- a/framework/scripts/function_test/Teston/adapters/environment.py +++ /dev/null @@ -1,226 +0,0 @@ -""" -Description: - This file is used to setup the running environment - Include Download code,setup environment variable - Set onos running config - Set user name/password - Onos-push-keys and so on - lanqinglong@huawei.com -""" - -import os -import time -import pexpect -import re -import sys -import pxssh -from connection import connection - -class environment( connection ): - - def __init__( self ): - connection.__init__( self ) - self.loginfo = connection( ) - self.masterhandle = '' - self.home = '' - - def DownLoadCode( self, handle, codeurl ): - """ - Download Code use 'git clone' - parameters: - handle: current working handle - codeurl: clone code url - """ - print "Now loading test codes! Please wait in patient..." - originalfolder = self.home - gitclone = handle - gitclone.sendline( "git clone " + codeurl ) - index = 0 - while index != 1 or index != 4: - index = gitclone.expect ( ['already exists', 'resolving deltas: 100%', \ - 'Receiving objects', 'Already up-to-date', \ - pexpect.EOF] ) - - filefolder = originalfolder + '/' + codeurl.split('/')[-1].split('.')[0] - if index == 0 : - os.chdir( filefolder ) - os.system( 'git pull' ) - os.chdir( originalfolder ) - self.loginfo.log( 'Download code success!' ) - break - elif index == 1 : - self.loginfo.log( 'Download code success!' ) - break - elif index == 2 : - increment += 1 - if increment == 20: - print '\n' - print '.' - else : - self.loginfo.log( 'Download code failed!' ) - self.loginfo.log( 'Information before' + gitclone.before ) - break - time.sleep(5) - gitclone.prompt( ) - - def InstallDefaultSoftware( self, handle ): - """ - Install default software - parameters: - handle(input): current working handle - """ - print "Now Cleaning test environment" - handle.sendline("sudo apt-get install -y mininet") - handle.prompt( ) - handle.sendline("sudo pip install configobj") - handle.prompt( ) - handle.sendline("sudo apt-get install -y sshpass") - handle.prompt( ) - handle.sendline("OnosSystemTest/TestON/bin/cleanup.sh") - handle.prompt( ) - time.sleep(5) - self.loginfo.log( 'Clean environment success!' ) - - def OnosPushKeys(self, handle, cmd, password): - """ - Using onos-push-keys to make ssh device without password - parameters: - handle(input): working handle - cmd(input): onos-push-keys xxx(xxx is device) - password(input): login in password - """ - print "Now Pushing Onos Keys:"+cmd - Pushkeys = handle - Pushkeys.sendline( cmd ) - Result = 0 - while Result != 2: - Result = Pushkeys.expect( ["(yes/no)", "assword:", "PEXPECT]#", \ - pexpect.EOF, pexpect.TIMEOUT]) - if ( Result == 0 ): - Pushkeys.sendline( "yes" ) - if ( Result == 1 ): - Pushkeys.sendline( password ) - if ( Result == 2 ): - self.loginfo.log( "ONOS Push keys Success!" ) - break - if ( Result == 3 ): - self.loginfo.log( "ONOS Push keys Error!" ) - break - time.sleep(2) - Pushkeys.prompt( ) - print "Done!" - - def SetOnosEnvVar( self, handle, masterpass, agentpass): - """ - Setup onos pushkeys to all devices(3+2) - parameters: - handle(input): current working handle - masterpass: scripts running server's password - agentpass: onos cluster&compute node password - """ - print "Now Setting test environment" - self.OnosPushKeys( handle, "onos-push-keys " + self.OCT, masterpass) - self.OnosPushKeys( handle, "onos-push-keys " + self.OC1, agentpass) - self.OnosPushKeys( handle, "onos-push-keys " + self.OC2, agentpass) - self.OnosPushKeys( handle, "onos-push-keys " + self.OC3, agentpass) - self.OnosPushKeys( handle, "onos-push-keys " + self.OCN, agentpass) - self.OnosPushKeys( handle, "onos-push-keys " + self.OCN2, agentpass) - - def ChangeOnosName( self, user, password): - """ - Change onos name in envDefault file - Because some command depend on this - parameters: - user: onos&compute node user - password: onos&compute node password - """ - print "Now Changing ONOS name&password" - filepath = self.home + '/onos/tools/build/envDefaults' - line = open(filepath, 'r').readlines() - lenall = len(line) - 1 - for i in range(lenall): - if "ONOS_USER=" in line[i]: - line[i]=line[i].replace("sdn",user) - if "ONOS_GROUP" in line[i]: - line[i]=line[i].replace("sdn",user) - if "ONOS_PWD" in line[i]: - line[i]=line[i].replace("rocks",password) - NewFile = open(filepath, 'w') - NewFile.writelines(line) - NewFile.close - print "Done!" - - def ChangeTestCasePara(self, testcase, user, password): - """ - When running test script, there's something need \ - to change in every test folder's *.param & *.topo files - user: onos&compute node user - password: onos&compute node password - """ - print "Now Changing " + testcase + " name&password" - if self.masterusername == 'root': - filepath = '/root/' - else : - filepath = '/home/' + self.masterusername + '/' - filepath = filepath +"OnosSystemTest/TestON/tests/" + testcase + "/" + \ - testcase + ".topo" - line = open(filepath,'r').readlines() - lenall = len(line)-1 - for i in range(lenall-2): - if ("localhost" in line[i]) or ("OCT" in line[i]): - line[i+1]=re.sub(">\w+",">"+user,line[i+1]) - line[i+2]=re.sub(">\w+",">"+password,line[i+2]) - if "OC1" in line [i] \ - or "OC2" in line [i] \ - or "OC3" in line [i] \ - or "OCN" in line [i] \ - or "OCN2" in line[i]: - line[i+1]=re.sub(">\w+",">root",line[i+1]) - line[i+2]=re.sub(">\w+",">root",line[i+2]) - NewFile = open(filepath,'w') - NewFile.writelines(line) - NewFile.close - - def SSHlogin ( self, ipaddr, username, password ) : - """ - SSH login provide a connection to destination. - parameters: - ipaddr: ip address - username: login user name - password: login password - return: handle - """ - login = pxssh.pxssh( ) - login.login ( ipaddr, username, password, original_prompt='[$#>]') - #send command ls -l - login.sendline ('ls -l') - #match prompt - login.prompt() - print ("SSH login " + ipaddr + " success!") - return login - - def SSHRelease( self, handle ): - #Release ssh - handle.logout() - - def CopyOnostoTestbin( self ): - sourcefile = os.curdir + '/dependencies/onos' - destifile = self.home + '/onos/tools/test/bin/' - runcommand = 'cp ' + sourcefile + ' ' + destifile - os.system( runcommand ) - - def OnosEnvSetup( self, handle ): - """ - Onos Environment Setup function - """ - self.Gensshkey( handle ) - self.home = self.GetEnvValue( handle, 'HOME' ) - self.AddKnownHost( handle, self.OC1, "karaf", "karaf" ) - self.AddKnownHost( handle, self.OC2, "karaf", "karaf" ) - self.AddKnownHost( handle, self.OC3, "karaf", "karaf" ) - self.DownLoadCode( handle, 'https://github.com/sunyulin/OnosSystemTest.git' ) - self.DownLoadCode( handle, 'https://gerrit.onosproject.org/onos' ) - self.CopyOnostoTestbin() - self.ChangeOnosName(self.agentusername,self.agentpassword) - self.InstallDefaultSoftware( handle ) - self.SetOnosEnvVar(handle, self.masterpassword,self.agentpassword) diff --git a/framework/scripts/function_test/Teston/adapters/foundation.py b/framework/scripts/function_test/Teston/adapters/foundation.py deleted file mode 100644 index c909d36b..00000000 --- a/framework/scripts/function_test/Teston/adapters/foundation.py +++ /dev/null @@ -1,64 +0,0 @@ -""" -Description: - This file include basis functions - lanqinglong@huawei.com -""" - -import logging -import os -import time -import yaml - -class foundation: - - def __init__(self): - - currentpath = os.getcwd() - self.logdir = os.path.join( currentpath, 'log' ) - self.workhome = currentpath[0:currentpath.rfind('testcases')-1] - self.Result_DB = '' - - def log (self, loginfo): - """ - Record log in log directory for deploying test environment - parameters: - loginfo(input): record info - """ - filename = time.strftime( '%Y-%m-%d-%H-%M-%S' ) + '.log' - filepath = os.path.join( self.logdir, filename ) - logging.basicConfig( level=logging.INFO, - format = '%(asctime)s %(filename)s:%(message)s', - datefmt = '%d %b %Y %H:%M:%S', - filename = filepath, - filemode = 'w') - filelog = logging.FileHandler( filepath ) - logging.getLogger( 'Functest' ).addHandler( filelog ) - print loginfo - logging.info(loginfo) - - def getdefaultpara( self ): - """ - Get Default Parameters value - """ - with open(self.workhome + "testcases/config_functest.yaml") as f: - functest_yaml = yaml.safe_load(f) - f.close() - - self.Result_DB = str(functest_yaml.get("results").get("test_db_url")) - self.masterusername = str(functest_yaml.get("ONOS").get("general").\ - get('onosbench_username')) - self.masterpassword = str(functest_yaml.get("ONOS").get("general").\ - get("onosbench_password")) - self.agentusername = str(functest_yaml.get("ONOS").get("general").\ - get("onoscli_username")) - self.agentpassword = str(functest_yaml.get("ONOS").get("general").\ - get("onoscli_password")) - self.runtimeout = functest_yaml.get("ONOS").get("general").get("runtimeout") - self.OCT = str(functest_yaml.get("ONOS").get("environment").get("OCT")) - self.OC1 = str(functest_yaml.get("ONOS").get("environment").get("OC1")) - self.OC2 = str(functest_yaml.get("ONOS").get("environment").get("OC2")) - self.OC3 = str(functest_yaml.get("ONOS").get("environment").get("OC3")) - self.OCN = str(functest_yaml.get("ONOS").get("environment").get("OCN")) - self.OCN2 = str(functest_yaml.get("ONOS").get("environment").get("OCN2")) - self.localhost = self.OCT - return True
\ No newline at end of file |