From f38566c1a774c370b64288ffbbe709a5e6af3031 Mon Sep 17 00:00:00 2001 From: lanqinglong Date: Tue, 22 Sep 2015 12:52:48 +0800 Subject: onos-test:basic frame work of running onos TestOn test Change-Id: I9b701e37b2e0fa167e5d1c1e55b35eeb12c33bf6 --- testcases/Controllers/ONOS/Teston/CI/Readme.txt | 5 + .../Controllers/ONOS/Teston/CI/dependencies/onos | 23 +++ .../Controllers/ONOS/Teston/CI/onosfunctest.py | 203 +++++++++++++++++++++ 3 files changed, 231 insertions(+) create mode 100644 testcases/Controllers/ONOS/Teston/CI/Readme.txt create mode 100644 testcases/Controllers/ONOS/Teston/CI/dependencies/onos create mode 100644 testcases/Controllers/ONOS/Teston/CI/onosfunctest.py diff --git a/testcases/Controllers/ONOS/Teston/CI/Readme.txt b/testcases/Controllers/ONOS/Teston/CI/Readme.txt new file mode 100644 index 000000000..7648b2a98 --- /dev/null +++ b/testcases/Controllers/ONOS/Teston/CI/Readme.txt @@ -0,0 +1,5 @@ +1.This is a basic test run about onos,we will make them better and better +2.This test include two suits: +(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/dependencies/onos b/testcases/Controllers/ONOS/Teston/CI/dependencies/onos new file mode 100644 index 000000000..d4d59e0f7 --- /dev/null +++ b/testcases/Controllers/ONOS/Teston/CI/dependencies/onos @@ -0,0 +1,23 @@ +#!/bin/bash +# ----------------------------------------------------------------------------- +# ONOS remote command-line client. +# ----------------------------------------------------------------------------- + +[ ! -d "$ONOS_ROOT" ] && echo "ONOS_ROOT is not defined" >&2 && exit 1 +. /root/.bashrc +. $ONOS_ROOT/tools/build/envDefaults +. $ONOS_ROOT/tools/test/bin/find-node.sh + +[ "$1" = "-w" ] && shift && onos-wait-for-start $1 + +[ -n "$1" ] && OCI=$(find_node $1) && shift + +if which client 1>/dev/null 2>&1 && [ -z "$ONOS_USE_SSH" ]; then + # Use Karaf client only if we can and are allowed to + unset KARAF_HOME + client -h $OCI -u karaf "$@" 2>/dev/null +else + # Otherwise use raw ssh; strict checking is off for dev environments only + #ssh -p 8101 -o StrictHostKeyChecking=no $OCI "$@" + sshpass -p karaf ssh -l karaf -p 8101 $OCI "$@" +fi diff --git a/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py b/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py new file mode 100644 index 000000000..72fa4ae1f --- /dev/null +++ b/testcases/Controllers/ONOS/Teston/CI/onosfunctest.py @@ -0,0 +1,203 @@ +""" +Description: This test is to run onos Teston VTN scripts + +List of test cases: +CASE1 - Northbound NBI test network/subnet/ports +CASE2 - Ovsdb test&Default configuration&Vm go online + +lanqinglong@huawei.com +""" +import os +import os.path +import time +import pexpect +import re +import sys + +def SSHlogin(ipaddr,username,password): + login = pexpect.spawn('ssh %s@%s'%(username,ipaddr)) + index = 0 + while index != 2: + index = login.expect(['assword:','yes/no','#|$',pexpect.EOF]) + if index == 0: + login.sendline(password) + login.interact() + if index == 1: + login.sendline('yes') + print "Login Success!" + +def AddKarafUser(ipaddr,username,password): + print '\033[1;31;40m' + print "Now Adding karaf user to OC1..." + print "\033[0m" + login = pexpect.spawn("ssh -l %s -p 8101 %s"%(username,ipaddr)) + index = 0 + while index != 2: + index = login.expect(['assword:','yes/no',pexpect.EOF]) + if index == 0: + login.sendline(password) + login.sendline("logout") + index = login.expect(["closed",pexpect.EOF]) + if index == 0: + print "Add SSH Known Host Success!" + else: + print "Add SSH Known Host Failed! Please Check!" + login.interact() + if index == 1: + login.sendline('yes') + +def DownLoadCode(): + print '\033[1;31;40m' + print "Now loading test codes!Please wait in patient..." + print "\033[0m" + os.system("git clone https://github.com/sunyulin/OnosSystemTest.git") + time.sleep(1) + os.system("git clone https://gerrit.onosproject.org/onos") + time.sleep(1) + print "Done!" + +def CleanEnv(): + print '\033[1;31;40m' + print "Now Cleaning test environment" + print "\033[0m" + os.system("sudo apt-get install -y mininet") + os.system("OnosSystemTest/TestON/bin/cleanup.sh") + time.sleep(5) + print "Done!" + +def OnosPushKeys(cmd,password): + print '\033[1;31;40m' + print "Now Pushing Onos Keys:"+cmd + print "\033[0m" + Pushkeys = pexpect.spawn(cmd) + Result = 0 + while Result != 2: + Result = Pushkeys.expect(["yes","password",pexpect.EOF,pexpect.TIMEOUT]) + if (Result == 0): + Pushkeys.sendline("yes") + if (Result == 1): + Pushkeys.sendline(password) + if (Result == 3): + print("Push keys Error!") + print "Done!" + +def AddEnvIntoBashrc(name): + print '\033[1;31;40m' + print "Now Adding bash environment" + print "\033[0m" + fileopen = open("/etc/profile",'r') + findContext = 1 + while findContext: + findContext = fileopen.readline() + result = findContext.find('dev/bash_profile') + if result != -1: + break + fileopen.close + if result == -1: + envAdd = open("/etc/profile",'a+') + envAdd.writelines("\nsource /root/onos/tools/dev/bash_profile") + envAdd.close() + +def SetEnvVar(masterpass,agentpass): + print '\033[1;31;40m' + print "Now Setting test environment" + print "\033[0m" + os.environ["OCT"] = "10.1.0.1" + os.environ["OC1"] = "10.1.0.50" + os.environ["OC2"] = "10.1.0.51" + os.environ["OC3"] = "10.1.0.52" + os.environ["OCN"] = "10.1.0.53" + os.environ["OCN2"] = "10.1.0.54" + os.environ["localhost"] = "10.1.0.1" + os.system("sudo pip install configobj") + os.system("sudo apt-get install -y sshpass") + OnosPushKeys("onos-push-keys 10.1.0.1",masterpass) + OnosPushKeys("onos-push-keys 10.1.0.50",agentpass) + OnosPushKeys("onos-push-keys 10.1.0.53",agentpass) + OnosPushKeys("onos-push-keys 10.1.0.54",agentpass) + +def Gensshkey(): + print '\033[1;31;40m' + print "Now Generating SSH keys..." + print "\033[0m" + os.system("rm -rf ~/.ssh/*") + 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: + printf("Generate SSH key failed.") + print "Done!" + +def ChangeOnosName(user,password): + print '\033[1;31;40m' + print "Now Changing ONOS name&password" + print "\033[0m" + line = open("onos/tools/build/envDefaults",'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("onos/tools/build/envDefaults",'w') + NewFile.writelines(line) + NewFile.close + print "Done!" + +def ChangeTestCasePara(testcase,user,password): + print '\033[1;31;40m' + print "Now Changing " + testcase + " name&password" + print "\033[0m" + 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 + print "Done!" + +def RunScript(testname,masterusername,masterpassword): + ChangeTestCasePara(testname,masterusername,masterpassword) + runtest = "OnosSystemTest/TestON/bin/cli.py run " + testname + os.system(runtest) + print "Done!" + +if __name__=="__main__": + + #This is the compass run machine user&pass,you need to modify + masterusername = "root" + masterpassword = "root" + + #The config below you don't need to care + agentusername = "root" + agentpassword = "root" + + print "Test Begin....." + Gensshkey() + AddKarafUser("10.1.0.50","karaf","karaf") + AddEnvIntoBashrc("source onos/tools/dev/bash_profile") + SSHlogin("10.1.0.1",masterusername,masterpassword) + ChangeOnosName(agentusername,agentpassword) + DownLoadCode() + CleanEnv() + SetEnvVar(masterpassword,agentpassword) + RunScript("FUNCvirNetNB",masterusername,masterpassword) + RunScript("FUNCovsdbtest",masterusername,masterpassword) -- cgit 1.2.3-korg