fuel-plugin-murano-tests/utils/jenkins/murano_dashboard_tests.sh

92 lines
4.7 KiB
Bash

#!/bin/bash
set -x
# Virtual framebuffer settings
#-----------------------------
VFB_DISPLAY_SIZE='1280x1024'
VFB_COLOR_DEPTH=16
VFB_DISPLAY_NUM=22
#-----------------------------
export SSH_OPTS='-o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no'
export FUEL_PASSWD='r00tme'
SNAPSHOT_NAME=$(dos.py snapshot-list "$ENV_NAME" | tail -1 | awk '{print $1}')
dos.py revert-resume "$ENV_NAME" "$SNAPSHOT_NAME"
ADMIN_NODE_IP=$(dos.py net-list $ENV_NAME | tail -1 | awk '{print $2}' | sed 's|/.*||g' | sed 's|.$|2|g')
echo "LOG: fuel-master ip=$ADMIN_NODE_IP"
sudo apt-get install --yes sshpass
CONTROLLER_ID=`echo 'fuel node | \
grep controller | \
awk '\''{print $1}'\'' | \
head -1' | \
sshpass -p "$FUEL_PASSWD" \
ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"`
echo "LOG: controller_id=$CONTROLLER_ID"
##### Upload the murano-dashboard repo on controller node in home #####
EXEC_CMD="echo 'apt-get install --yes git && git clone https://github.com/openstack/murano-dashboard.git' | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##### Installing Firefox version 46.0 #####
FIREFOX_CMD="echo 'apt-get install --yes firefox && \
apt-get remove --yes firefox && \
wget https://ftp.mozilla.org/pub/firefox/releases/46.0/linux-x86_64/en-US/firefox-46.0.tar.bz2 && \
tar -xjf firefox-46.0.tar.bz2 && \
rm -rf /opt/firefox && \
mv firefox /opt/firefox46 && \
ln -s /opt/firefox46/firefox /usr/bin/firefox'"
EXEC_CMD="$FIREFOX_CMD | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##### Installing Prerequisites on controller#####
EXEC_CMD="echo 'apt-get install --yes python-pip xvfb xfonts-100dpi xfonts-75dpi xfonts-cyrillic xorg dbus-x11 && \
pip install --upgrade pip && \
pip install -U selenium nose' | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##### Copying script to master node, then to controller #####
sshpass -p "$FUEL_PASSWD" scp ${SSH_OPTS} "$WORKSPACE/utils/jenkins/parser.py" "root@${ADMIN_NODE_IP}:/root/parser.py"
echo "scp /root/parser.py/ node-${CONTROLLER_ID}:murano-dashboard/muranodashboard/tests/functional/config/" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##### Run python script for preparing config.conf for tests#####
EXEC_CMD="echo '. /root/openrc && cd murano-dashboard/muranodashboard/tests/functional/config/ && chmod +x parser.py && ./parser.py -i /root/openrc' | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
#####This variable should be set for pagination test running#####
EXEC_CMD= "echo 'sed -i 's#MURANO_REPO_URL =.*#MURANO_REPO_URL = '\''http://localhost:8099'\''#g' murano-dashboard/muranodashboard/local/local_settings.d/_50_murano.py' | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
fonts_path="/usr/share/fonts/X11/misc/"
##### Running Xvfb #####
XVFB_SESSION="echo 'Xvfb -fp \"${fonts_path}\" :${VFB_DISPLAY_NUM} -screen 0 \"${VFB_DISPLAY_SIZE}x${VFB_COLOR_DEPTH}\" &'"
EXEC_CMD="$XVFB_SESSION | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##### Configuring VNC. Port forwarding example ssh -L 127.0.0.1:8000:controller_ip:5900 user@server #####
EXEC_CMD="echo 'apt-get install --yes x11vnc && x11vnc -bg -forever -nopw -display :${VFB_DISPLAY_NUM} -ncache 10 && iptables -I INPUT 1 -p tcp --dport 5900 -j ACCEPT' | ssh -T node-$CONTROLLER_ID"
echo "$EXEC_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##### Run tests #####
RUN_TESTS="echo 'export DISPLAY=:${VFB_DISPLAY_NUM} && nosetests -sv murano-dashboard/muranodashboard/tests/functional/sanity_check.py --with-xunit --xunit-file /root/test_report.xml' | ssh -T node-$CONTROLLER_ID"
echo "$RUN_TESTS" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
##########################################################
##### Copying results from controller to admin node: #####
##### and then to host in workspace folder #####
##########################################################
GET_REP_CMD="scp node-$CONTROLLER_ID:/root/test_report.xml /root/test_report.xml"
echo "$GET_REP_CMD" | sshpass -p "$FUEL_PASSWD" ssh ${SSH_OPTS} -T root@"$ADMIN_NODE_IP"
sshpass -p "$FUEL_PASSWD" scp ${SSH_OPTS} root@"$ADMIN_NODE_IP":/root/test_report.xml "$WORKSPACE/logs/"
exit 0