1
0
mirror of https://github.com/OpenNebula/one.git synced 2025-03-21 14:50:08 +03:00

onedb: more thorough tests

This commit is contained in:
Carlos Martín 2011-07-11 17:52:51 +02:00
parent e823bb0c05
commit 7d266cc63e
3 changed files with 119 additions and 20 deletions

Binary file not shown.

View File

@ -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

View File

@ -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 "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-pool.xml) <(grep -v -e "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-pool-upgraded.xml) > results/diff_files/host-pool.diff
diff <(grep -v -e "<REGTIME>" -e "<SOURCE>" results/xml_files/image-pool.xml) <(grep -v -e "<REGTIME>" -e "<SOURCE>" results/xml_files/image-pool-upgraded.xml) > results/diff_files/image-pool.diff
diff <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" results/xml_files/vm-pool.xml) <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" 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 "<LAST_MON_TIME>" -e "<CLUSTER>" -e "NAME>" results/xml_files/host-$i.xml) <(grep -v -e "<LAST_MON_TIME>" -e "<CLUSTER>" -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 "<REGTIME>" -e "<SOURCE>" results/xml_files/image-$i.xml) <(grep -v -e "<REGTIME>" -e "<SOURCE>" results/xml_files/image-$i-upgraded.xml) > results/diff_files/image-$i.diff
diff <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" results/xml_files/vm-$i.xml) <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" results/xml_files/vm-$i-upgraded.xml) > results/diff_files/vm-$i.diff
diff <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" -e "<NET_TX>" results/xml_files/vm-$i.xml) <(grep -v -e "<LAST_POLL>" -e "TIME>" -e "<SOURCE>" -e "<TEMPLATE_ID>" -e "<VM_DIR>" -e "<NET_TX>" 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