diff options
Diffstat (limited to 'testcases/Controllers/ONOS/Teston/CI/adapters/environment.py')
-rw-r--r-- | testcases/Controllers/ONOS/Teston/CI/adapters/environment.py | 230 |
1 files changed, 118 insertions, 112 deletions
diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py b/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py index 8b7ee13f..4fc636ab 100644 --- a/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py +++ b/testcases/Controllers/ONOS/Teston/CI/adapters/environment.py @@ -23,15 +23,16 @@ import sys import pxssh from connection import connection -class environment( connection ): - def __init__( self ): - connection.__init__( self ) - self.loginfo = connection( ) +class environment(connection): + + def __init__(self): + connection.__init__(self) + self.loginfo = connection() self.masterhandle = '' self.home = '' - def DownLoadCode( self, handle, codeurl ): + def DownLoadCode(self, handle, codeurl): """ Download Code use 'git clone' parameters: @@ -42,38 +43,40 @@ class environment( connection ): originalfolder = sys.path[0] print originalfolder gitclone = handle - gitclone.sendline( "git clone " + codeurl ) + gitclone.sendline("git clone " + codeurl) index = 0 - increment = 0 + # increment = 0 while index != 1 or index != 4: - index = gitclone.expect ( ['already exists', 'esolving deltas: 100%', \ - 'eceiving objects', 'Already up-to-date', \ - 'npacking objects: 100%', pexpect.EOF] ) + index = gitclone.expect(['already exists', + 'esolving deltas: 100%', + 'eceiving objects', + 'Already up-to-date', + 'npacking objects: 100%', pexpect.EOF]) filefolder = self.home + '/' + codeurl.split('/')[-1].split('.')[0] - if index == 0 : - os.chdir( filefolder ) - os.system( 'git pull' ) - os.chdir( originalfolder ) - self.loginfo.log( 'Download code success!' ) + if index == 0: + os.chdir(filefolder) + os.system('git pull') + os.chdir(originalfolder) + self.loginfo.log('Download code success!') break elif index == 1 or index == 4: - self.loginfo.log( 'Download code success!' ) - gitclone.sendline( "mkdir onos" ) - gitclone.prompt( ) - gitclone.sendline( "cp -rf " + filefolder+ "/tools onos/" ) - gitclone.prompt( ) + self.loginfo.log('Download code success!') + gitclone.sendline("mkdir onos") + gitclone.prompt() + gitclone.sendline("cp -rf " + filefolder + "/tools onos/") + gitclone.prompt() break - elif index == 2 : + elif index == 2: os.write(1, gitclone.before) sys.stdout.flush() - else : - self.loginfo.log( 'Download code failed!' ) - self.loginfo.log( 'Information before' + gitclone.before ) + else: + self.loginfo.log('Download code failed!') + self.loginfo.log('Information before' + gitclone.before) break - gitclone.prompt( ) + gitclone.prompt() - def InstallDefaultSoftware( self, handle ): + def InstallDefaultSoftware(self, handle): """ Install default software parameters: @@ -81,15 +84,15 @@ class environment( connection ): """ print "Now Cleaning test environment" handle.sendline("sudo apt-get install -y mininet") - handle.prompt( ) + handle.prompt() handle.sendline("sudo pip install configobj") - handle.prompt( ) + handle.prompt() handle.sendline("sudo apt-get install -y sshpass") - handle.prompt( ) + handle.prompt() handle.sendline("OnosSystemTest/TestON/bin/cleanup.sh") - handle.prompt( ) + handle.prompt() time.sleep(5) - self.loginfo.log( 'Clean environment success!' ) + self.loginfo.log('Clean environment success!') def OnosPushKeys(self, handle, cmd, password): """ @@ -99,28 +102,28 @@ class environment( connection ): cmd(input): onos-push-keys xxx(xxx is device) password(input): login in password """ - print "Now Pushing Onos Keys:"+cmd + print "Now Pushing Onos Keys:" + cmd Pushkeys = handle - Pushkeys.sendline( cmd ) + 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!" ) + 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!" ) + if(Result == 3): + self.loginfo.log("ONOS Push keys Error!") break time.sleep(2) - Pushkeys.prompt( ) + Pushkeys.prompt() print "Done!" - def SetOnosEnvVar( self, handle, masterpass, agentpass): + def SetOnosEnvVar(self, handle, masterpass, agentpass): """ Setup onos pushkeys to all devices(3+2) parameters: @@ -133,34 +136,36 @@ class environment( connection ): print "try to connect " + str(host) result = self.CheckSshNoPasswd(host) if not result: - print "ssh lgin failed,try to copy master publickey to agent " + str(host) + print "ssh lgin failed,try to copy master publickey" + \ + "to agent " + str(host) self.CopyPublicKey(host) - 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) + 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 CheckSshNoPasswd( self, host): + def CheckSshNoPasswd(self, host): """ Check master can connect agent with no password """ - login = pexpect.spawn( "ssh " + str(host)) + login = pexpect.spawn("ssh " + str(host)) index = 4 while index == 4: - index = login.expect(['(yes/no)','>|#|\$', \ - pexpect.EOF, pexpect.TIMEOUT] ) + index = login.expect(['(yes/no)', '>|#|\$', + pexpect.EOF, pexpect.TIMEOUT]) if index == 0: - login.sendline( "yes" ) + login.sendline("yes") index = 4 if index == 1: - self.loginfo.log("ssh connect to " + str(host) + " success,no need to copy ssh public key" ) + self.loginfo.log("ssh connect to " + str(host) + + " success,no need to copy ssh public key") return True login.interact() return False - def ChangeOnosName( self, user, password): + def ChangeOnosName(self, user, password): """ Change onos name in envDefault file Because some command depend on this @@ -173,12 +178,12 @@ class environment( connection ): 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) + 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 @@ -191,31 +196,28 @@ class environment( connection ): user: onos&compute node user password: onos&compute node password """ - print "Now Changing " + testcase + " name&password" + print "Now Changing " + testcase + " name&password" if self.masterusername == 'root': filepath = '/root/' - else : + 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') + 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 ) : + def SSHlogin(self, ipaddr, username, password): """ SSH login provide a connection to destination. parameters: @@ -224,52 +226,56 @@ class environment( connection ): 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 = 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!") + print("SSH login " + ipaddr + " success!") return login - def SSHRelease( self, handle ): - #Release ssh + def SSHRelease(self, handle): + # Release ssh handle.logout() - def CopyOnostoTestbin( self ): + def CopyOnostoTestbin(self): sourcefile = self.cipath + '/dependencies/onos' destifile = self.home + '/onos/tools/test/bin/' - os.system( 'pwd' ) + os.system('pwd') runcommand = 'cp ' + sourcefile + ' ' + destifile - os.system( runcommand ) + os.system(runcommand) - def CopyPublicKey( self, host ): - output = os.popen( 'cat /root/.ssh/id_rsa.pub' ) + def CopyPublicKey(self, host): + output = os.popen('cat /root/.ssh/id_rsa.pub') publickey = output.read().strip('\n') - tmphandle = self.SSHlogin( self.installer_master, self.installer_master_username, self.installer_master_password ) - tmphandle.sendline("ssh "+ host + " -T \'echo " + str(publickey) + ">>/root/.ssh/authorized_keys\'" ) + tmphandle = self.SSHlogin(self.installer_master, + self.installer_master_username, + self.installer_master_password) + tmphandle.sendline("ssh " + host + " -T \'echo " + + str(publickey) + ">>/root/.ssh/authorized_keys\'") tmphandle.prompt() self.SSHRelease(tmphandle) print "Add OCT PublicKey to " + host + " success" - def OnosEnvSetup( self, handle ): + 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.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') if self.masterusername == 'root': filepath = '/root/' - else : + else: filepath = '/home/' + self.masterusername + '/' - self.OnosRootPathChange( filepath ) + self.OnosRootPathChange(filepath) self.CopyOnostoTestbin() - self.ChangeOnosName(self.agentusername,self.agentpassword) - self.InstallDefaultSoftware( handle ) - self.SetOnosEnvVar(handle, self.masterpassword,self.agentpassword) + self.ChangeOnosName(self.agentusername, self.agentpassword) + self.InstallDefaultSoftware(handle) + self.SetOnosEnvVar(handle, self.masterpassword, self.agentpassword) |