pass the MAC address and the HOSTNAME to the qemu conf file
[tests.git] / system / selftest
index b085a73..47f5d88 100755 (executable)
@@ -1,5 +1,162 @@
 #!/bin/bash
 
-yum -y install myplc-native
-yum -y install qemu
+SELF_HOST=$1
+SELF_IP=$2
+# all below addresses are those of the qemu host
+[ -z "$SELF_HOST" ] && SELF_HOST="selftest.$(hostname)"
+[ -z "$SELF_IP"   ] && SELF_IP="10.1.159.48"
+
+
+####################################################
+# setup MyPLC
+
+# install from repo
+rpm -q myplc-native > /dev/null
+installed=$?
+[ $installed -eq 1 ] && yum -y install myplc-native
+
+# setup qemu to run the node from the bootcd
+rpm -q qemu > /dev/null
+installed=$?
+[ $installed -eq 1 ] && yum -y install qemu
+
+
+exit 0
+
+
+# make sure its stopped
+service plc stop
+
+# turn off plc until its been configured
+chkconfig plc off
+
+####################################################
+# configure myplc for testing purposes
+config=$(mktemp)
+
+function genpassword()
+{
+       len=$1
+       [ -z "$len" ] && len=8
+       python <<EOF
+import crypt, random, string
+salt = [random.choice(string.letters + string.digits + "./") for i in range(0,$len)]
+print "".join(salt)
+EOF
+}
+
+# create new 16 char random password
+PW=$(genpassword 16)
+
+cat > $config <<EOF
+e PLC_ROOT_PASSWORD
+$PW
+
+e PLC_NAME
+selftest
+
+e PLC_ROOT_USER
+root@localhost.localdomain
+
+e PLC_MAIL_ENABLED
+0
+
+e PLC_MAIL_SUPPORT_ADDRESS
+build@lists.planet-lab.org
+
+e PLC_DB_HOST
+$SELF_HOST
+
+e PLC_API_HOST
+$SELF_HOST
+
+e PLC_WWW_HOST
+$SELF_HOST
+
+e PLC_BOOT_HOST
+$SELF_HOST
+
+e PLC_DB_IP
+$SELF_IP
+
+e PLC_API_IP
+$SELF_IP
+
+e PLC_WWW_IP
+$SELF_IP
+
+e PLC_BOOT_IP
+$SELF_IP
+
+w
+q
+EOF
+
+plc-config-tty < $config
+
+echo "$PW" > /etc/planetlab/pw
+chmod 400 /etc/planetlab/pw
+
+# remove temporary config file
+rm -f $config
+
+service plc start
+
+####################################################
+QA_TESTSUITE="qaapi"
+SVNPATH="http://svn.planet-lab.org/svn/"
+
+# check out test suite
+# temporarily disabling -- mef
+#svn export ${SVNPATH}/tests/trunk/${QA_TESTSUITE} /tmp/${QA_TESTSUITE}
+#cd /tmp/${QA_TESTSUITE}/
+#chmod +x runtests.py
+#chmod +x qa/tests/*
+#./runtests.py
+
+####################################################
+# configure a site and a node @ the local myplc for qemu testing
+
+# configure a selftest site
+TESTVERS="3.4"
+TESTHOST="qemu-1.$(hostname)"
+TESTSITE="st"
+TESTNAME="Self Test"
+TESTABR="selftest"
+TESTURL="http://selftest.doesnotexist"
+TESTDISK="/selftest.img"
+TESTCONF="/selftest.txt"
+config=$(mktemp)
+cat > $config <<EOF
+# create a test site
+DeleteSite("$TESTSITE")
+AddSite({"name":"$TESTNAME","url":"$TESTURL","max_slices":10,"login_base":"$TESTSITE","is_public":True,"abbreviated_name":"$TESTABR"})
+# create a test node for qemu
+AddNode("st",{"boot_state":"rins","model":"qemu/minhw","hostname":"$TESTHOST","version":"$TESTVERS"})
+# set up the nodenetwork setting for qemu
+AddNodeNetwork("$TESTHOST",{"network":"10.0.2.0","hostname":"$TESTHOST","is_primary":True,"dns1":"$SELF_IP","method":"static","type":"ipv4","netmask":"255.255.255.0","broadcast":"10.0.2.255","gateway":"10.0.2.2"})
+# Download the node's boot cd iso
+GetBootMedium("$TESTHOST","node-floppy","$TESTCONF")
+EOF
+cat $config | plcsh
+rm -f $config
+
+# generate custom iso
+SERIAL="ttyS0:115200:n:8"
+/usr/share/bootcd/build.sh -s $SERIAL -O selftest -f $TESTCONF -t iso_cramfs
+SNAME=$(echo $SERIAL | sed 's,:,,g')
+TESTISO="./selftest-serial-$SNAME-cramfs.iso"
+
+qemu-img create -f qcow $TESTDISK 5GB
+
+# run qemu
+# -nographic -> for serial line console
+# -boot d -> to boot from cdrom 
+# -cdrom -> specifies iso file to serve as cdrom
+# -m 512 -> 512MB memory
+
+[ -f "$TESTDISK" -a -f "$TESTISO" ] && qemu-system-x86_64 -boot d -nographic -m 512 -cdrom $TESTISO $TESTDISK
+
+# run node tests
+
 exit 0