Use new connection script to be the connection adapter to run onos 39/2139/7
authorlanqinglong <lanqinglong@huawei.com>
Tue, 29 Sep 2015 14:14:48 +0000 (22:14 +0800)
committerQinglong Lan <lanqinglong@huawei.com>
Fri, 2 Oct 2015 03:26:58 +0000 (11:26 +0800)
JIRA:FUNCTEST-59

Change-Id: I335d728f2dd10f90344d17705412ffc9f753a931
Signed-off-by: lanqinglong <lanqinglong@huawei.com>
testcases/Controllers/ONOS/Teston/CI/Readme.txt
testcases/Controllers/ONOS/Teston/CI/__init__.py [new file with mode: 0644]
testcases/Controllers/ONOS/Teston/CI/adapters/__init__.py [new file with mode: 0644]
testcases/Controllers/ONOS/Teston/CI/adapters/connection.py [new file with mode: 0644]

index 7648b2a..7393f59 100644 (file)
@@ -1,5 +1,5 @@
 1.This is a basic test run about onos,we will make them better and better
-2.This test include two suits:
+2.This test include two suites:
 (1)Test northbound(network/subnet/ports create/update/delete)
 (2)Ovsdb test,default configuration,openflow connection,vm go onlines.
 3.Later we will make a framework to do this test
\ No newline at end of file
diff --git a/testcases/Controllers/ONOS/Teston/CI/__init__.py b/testcases/Controllers/ONOS/Teston/CI/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/__init__.py b/testcases/Controllers/ONOS/Teston/CI/adapters/__init__.py
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/testcases/Controllers/ONOS/Teston/CI/adapters/connection.py b/testcases/Controllers/ONOS/Teston/CI/adapters/connection.py
new file mode 100644 (file)
index 0000000..9890ecf
--- /dev/null
@@ -0,0 +1,146 @@
+"""
+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:
+
+    def __init__( self ):
+        self.loginfo = foundation()
+
+    def AddKnownHost( self, 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 = pexpect.spawn( "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!" )
+                else:
+                    self.loginfo.log( "Add SSH Known Host Failed! Please Check!" )
+                #login.interact()
+
+            if index == 1:
+                login.sendline('yes')
+
+    def Gensshkey( self ):
+        """
+        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
+        filelist = os.listdir( '~/.ssh' )
+        for item in filelist:
+            if 'id' in item:
+                self.loginfo.log("SSH keys are exsit in ssh directory.")
+                return True
+        keysub = pexpect.spawn("ssh-keygen -t rsa")
+        Result = 0
+        while Result != 2:
+            Result = keysub.expect( ["Overwrite", "Enter", pexpect.EOF, \
+                                     pexpect.TIMEOUT])
+            if Result == 0:
+                keysub.sendline("y")
+            if Result == 1:
+                keysub.sendline("\n")
+            if Result == 3:
+                self.loginfo.log("Generate SSH key failed.")
+
+        self.loginfo.log( "Generate SSH key success." )
+
+    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 OnosConnectionSet (self):
+        """
+        Intergrate for ONOS connection setup
+        """
+        self.Gensshkey()
+        self.AddKnownHost( self.OC1, "karaf", "karaf" )
+        self.AddKnownHost( self.OC2, "karaf", "karaf" )
+        self.AddKnownHost( self.OC3, "karaf", "karaf" )
+        currentpath = os.getcwd()
+        filepath = os.path.join( currentpath, "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)