diff --git a/src/onedb/test/2.2/one.db b/src/onedb/test/2.2/one.db index 5e62d3ad7d..62d34ebc1f 100644 Binary files a/src/onedb/test/2.2/one.db and b/src/onedb/test/2.2/one.db differ diff --git a/src/onedb/test/create.sh b/src/onedb/test/create.sh index c6f817eb76..957fe7e463 100755 --- a/src/onedb/test/create.sh +++ b/src/onedb/test/create.sh @@ -1,13 +1,26 @@ #!/bin/bash +# This script populates a DB with different resources +# Set the TWO_SERIES flag if the target OpenNebula is 2.0 or 2.2 + +# The oneadmin's auth must be in ~/.one/one_auth + TWO_SERIES="no" #TWO_SERIES="yes" +ONEADMIN_AUTH=$ONE_AUTH TMP_FILE="tmp_file" +# 5 Users -# 5 Hosts and Clusters +for i in 0 1 2 3 4; do + echo "user_$i:pass_$i" > one_auth$i + oneuser create user_$i pass_$i +done + + +# 5 Hosts for i in 0 1 2 3 4; do onehost create host_$i im_dummy vmm_dummy tm_dummy @@ -18,7 +31,9 @@ done for i in 0 1 2; do ( echo "NAME = vnet_fixed_$i" echo "TYPE = FIXED" + echo "PUBLIC = FIXED" echo "BRIDGE = vbr1" + echo "EXTRA_ATT = \"EXTRA_VALUE FOR VNET $i\"" echo "LEASES = [IP=192.168.$i.1]" echo "LEASES = [IP=192.168.$i.2]" echo "LEASES = [IP=192.168.$i.3]" @@ -26,6 +41,9 @@ for i in 0 1 2; do echo "LEASES = [IP=192.168.$i.5]" ) > $TMP_FILE + # Change auth + export ONE_AUTH="`pwd`/one_auth$i" + onevnet create $TMP_FILE done @@ -37,9 +55,14 @@ for i in 3 4; do echo "BRIDGE = vbr0" echo "NETWORK_SIZE = C" echo "NETWORK_ADDRESS = 192.168.$i.0" + echo "EXTRA_ATT = \"EXTRA_VALUE FOR VNET $i\"" ) > $TMP_FILE + # Change auth + export ONE_AUTH="`pwd`/one_auth$i" + onevnet create $TMP_FILE + onevnet publish $i done # 5 Images @@ -48,17 +71,14 @@ for i in 0 1 2 3 4; do ( echo "NAME = image_$i" echo "TYPE = DATABLOCK" echo "PATH = /dev/null" + echo "EXTRA_ATT = \"EXTRA_VALUE FOR IMG $i\"" ) > $TMP_FILE + export ONE_AUTH="`pwd`/one_auth$i" + oneimage create $TMP_FILE done -# 5 Users - -for i in 0 1 2 3 4; do - oneuser create user_$i pass_$i -done - # 5 VMs for i in 0 1 2 3 4; do @@ -82,23 +102,38 @@ for i in 0 1 2 3 4; do echo "REQUIREMENTS = \"CPUSPEED > 1000\" " echo "RANK = FREECPU " echo "CONTEXT = [ files = \"/dev/null\" ] " + + echo "EXTRA_ATT = \"EXTRA_VALUE FOR VM $i\"" ) > $TMP_FILE + export ONE_AUTH="`pwd`/one_auth$i" + if [ $TWO_SERIES == "yes" ]; then onevm create $TMP_FILE else onetemplate create $TMP_FILE onetemplate instantiate $i fi +done + +if [ -n "$ONEADMIN_AUTH" ] ; then + export ONE_AUTH=$ONEADMIN_AUTH +else + # Unset the one_auth file, cli will look for it in ~/.one/one_auth + unset ONE_AUTH +fi + +for i in 0 1 2 3; do onevm deploy $i $i done rm $TMP_FILE + echo -n "Waiting until all VMs are running " -while [ $(onevm list | grep -c runn) -ne 5 ]; do +while [ $(onevm list | grep -c runn) -ne 4 ]; do echo -n "." sleep 0.5s done @@ -108,17 +143,34 @@ echo " ok" # Wait for some monitorization data sleep 3s + onevm migrate 0 1 -while [ $(onevm list | grep -c runn) -ne 5 ]; do sleep 0.5s; done +while [ $(onevm list a | grep -c runn) -ne 4 ]; do sleep 0.5s; done + onevm livemigrate 1 2 -while [ $(onevm list | grep -c runn) -ne 5 ]; do sleep 0.5s; done +while [ $(onevm list a | grep -c runn) -ne 4 ]; do sleep 0.5s; done + +onevm stop 1 +while [ $(onevm list a | grep -c stop) -ne 1 ]; do sleep 0.5s; done + +onevm resume 1 +while [ $(onevm list a | grep -c pend) -ne 2 ]; do sleep 0.5s; done + +onevm deploy 1 0 +while [ $(onevm list a | grep -c runn) -ne 4 ]; do sleep 0.5s; done + +onevm migrate 1 3 +while [ $(onevm list a | grep -c runn) -ne 4 ]; do sleep 0.5s; done + +onevm shutdown 1 +while [ $(onevm list a | grep -c runn) -ne 3 ]; do sleep 0.5s; done onevm shutdown 2 -while [ $(onevm list | grep -c runn) -ne 4 ]; do sleep 0.5s; done +while [ $(onevm list a | grep -c runn) -ne 2 ]; do sleep 0.5s; done onevm delete 3 -while [ $(onevm list | grep -c runn) -ne 3 ]; do sleep 0.5s; done +while [ $(onevm list a | grep -c runn) -ne 1 ]; do sleep 0.5s; done onehost disable 3 oneimage persistent 3 @@ -130,8 +182,20 @@ sleep 3s mkdir -p results/xml_files -for obj in host vnet image vm; do +for obj in host vnet image vm user; do + one$obj list -x > results/xml_files/$obj-pool.xml + for i in 0 1 2 3 4; do one$obj show -x $i > results/xml_files/$obj-$i.xml done done + +if [ $TWO_SERIES == "no" ]; then + oneacl list -x > results/xml_files/acl-pool.xml + onegroup list -x > results/xml_files/group-pool.xml +fi + +# Clean one auth files +for i in 0 1 2 3 4; do + rm one_auth$i +done diff --git a/src/onedb/test/test.sh b/src/onedb/test/test.sh index 4af12bc809..274e293b9a 100755 --- a/src/onedb/test/test.sh +++ b/src/onedb/test/test.sh @@ -26,8 +26,12 @@ fi cp oned.conf $ONEDCONF_LOCATION + +echo "oneadmin:oneadmin" > oneadmin_auth export ONE_XMLRPC=http://localhost:2888/RPC2 export PATH=$ONE_LOCATION/bin:$PATH +export ONE_AUTH="`pwd`/oneadmin_auth" + PID=$$ @@ -62,12 +66,16 @@ onedb upgrade -v --sqlite results/one.db.upgraded --backup results/one.db.backup echo "Done. Upgraded DB and the one just created will be compared." # Dump both DB schemas -sqlite3 results/one.db.upgraded ".schema" > results/one.db.upgraded.schema -sqlite3 results/one.db.3.0 ".schema" > results/one.db.3.0.schema +sqlite3 results/one.db.upgraded ".schema" > results/one.db.upgraded.tmpschema +sqlite3 results/one.db.3.0 ".schema" > results/one.db.3.0.tmpschema # Sort the files contents, to avoid false diff errors -sort results/one.db.upgraded.schema > results/one.db.upgraded.schema -sort results/one.db.3.0.schema > results/one.db.3.0.schema +sort results/one.db.upgraded.tmpschema > results/one.db.upgraded.schema +sort results/one.db.3.0.tmpschema > results/one.db.3.0.schema + +rm results/one.db.upgraded.tmpschema +rm results/one.db.3.0.tmpschema + # Perform a diff @@ -92,12 +100,17 @@ cp results/one.db.upgraded $VAR_LOCATION/one.db oned -f & sleep 2s; -for obj in host vnet image vm; do +for obj in host vnet image vm user; do for i in 0 1 2 3 4; do one$obj show -x $i > results/xml_files/$obj-$i-upgraded.xml done done +for obj in host vnet image vm acl group user; do + one$obj list -x > results/xml_files/$obj-pool-upgraded.xml +done + + pkill -P $PID oned sleep 2s; pkill -9 -P $PID oned @@ -106,6 +119,14 @@ echo "XML output collected. A diff will be performed." mkdir results/diff_files +diff <(grep -v -e "" -e "" -e "NAME>" results/xml_files/host-pool.xml) <(grep -v -e "" -e "" -e "NAME>" results/xml_files/host-pool-upgraded.xml) > results/diff_files/host-pool.diff +diff <(grep -v -e "" -e "" results/xml_files/image-pool.xml) <(grep -v -e "" -e "" results/xml_files/image-pool-upgraded.xml) > results/diff_files/image-pool.diff +diff <(grep -v -e "" -e "TIME>" -e "" -e "" -e "" results/xml_files/vm-pool.xml) <(grep -v -e "" -e "TIME>" -e "" -e "" -e "" results/xml_files/vm-pool-upgraded.xml) > results/diff_files/vm-pool.diff + +for obj in vnet acl group user; do + diff <(cat results/xml_files/$obj-pool.xml) <(cat results/xml_files/$obj-pool-upgraded.xml) > results/diff_files/$obj-pool.diff +done + for i in 0 1 2 3 4; do diff <(grep -v -e "" -e "" -e "NAME>" results/xml_files/host-$i.xml) <(grep -v -e "" -e "" -e "NAME>" results/xml_files/host-$i-upgraded.xml) > results/diff_files/host-$i.diff @@ -113,12 +134,15 @@ for i in 0 1 2 3 4; do diff <(grep -v -e "" -e "" results/xml_files/image-$i.xml) <(grep -v -e "" -e "" results/xml_files/image-$i-upgraded.xml) > results/diff_files/image-$i.diff - diff <(grep -v -e "" -e "TIME>" -e "" -e "" -e "" results/xml_files/vm-$i.xml) <(grep -v -e "" -e "TIME>" -e "" -e "" -e "" results/xml_files/vm-$i-upgraded.xml) > results/diff_files/vm-$i.diff + diff <(grep -v -e "" -e "TIME>" -e "" -e "" -e "" -e "" results/xml_files/vm-$i.xml) <(grep -v -e "" -e "TIME>" -e "" -e "" -e "" -e "" results/xml_files/vm-$i-upgraded.xml) > results/diff_files/vm-$i.diff + + diff <(cat results/xml_files/user-$i.xml) <(cat results/xml_files/user-$i-upgraded.xml) > results/diff_files/user-$i.diff done + CODE=0 -for obj in host vnet image vm; do +for obj in host vnet image vm user; do for i in 0 1 2 3 4; do FILE=results/diff_files/$obj-$i.diff if [[ -s $FILE ]] ; then @@ -128,8 +152,19 @@ for obj in host vnet image vm; do done done +for obj in host vnet image vm acl group user; do + FILE=results/diff_files/$obj-pool.diff + if [[ -s $FILE ]] ; then + echo "Error: diff file $FILE is not empty." + CODE=-1 + fi +done + + if [ $CODE -eq 0 ]; then echo "Done, all tests passed." fi +rm oneadmin_auth + exit $CODE