Add Neutron 7.0.0 for Ubuntu 14.04
[openstack-build/neutron-build.git] / tests / runtests.sh
index 5b10b3814159943a32a142685653e734ad3ae5d1..a15a6e40ca3ac4401013bfdfcfef2dc419c3e27f 100755 (executable)
@@ -1,8 +1,11 @@
-#!/bin/bash -ex
+#!/bin/bash
 
+set -ex
 PACKAGE=$1
 UBUNTU=false
 FAILURE=false
+FAILED_TESTS=""
+SERVICE_STARTED=false
 PLATFORM=$(python -mplatform)
 TOKEN=$(openssl rand -hex 10)
 MYSQL_PASS=mysql_pass
@@ -22,13 +25,15 @@ install_packages() {
         echo "mysql-server mysql-server/root_password_again select $MYSQL_PASS" | debconf-set-selections
         apt-get install -y --force-yes rabbitmq-server mysql-server mysql-client-core-5.5 python-mysqldb keystone
     else
-        yum install -y openstack-keystone rabbitmq-server mysql-server python-oslo-utils
+        #yum install -y openstack-keystone rabbitmq-server mysql-server MySQL-client python-oslo-utils
+        yum install -y openstack-keystone rabbitmq-server python-oslo-utils
+        #CentOS 7 temporary workaround
+        yum install -y http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
+        yum install -y mysql-community-server mysql-community-client
         #Install some plugins because they are required for db-migration scripts (bug #1371184)
         #Ubuntu neutron-server package include them
-        if [ "$SOURCEBRANCH" == "master" ]; then
-          yum install -y openstack-neutron-bigswitch openstack-neutron-brocade openstack-neutron-cisco openstack-neutron-hyperv openstack-neutron-vmware openstack-neutron-openvswitch \
-                         openstack-neutron-ryu openstack-neutron-linuxbridge openstack-neutron-metaplugin openstack-neutron-mellanox openstack-neutron-nec openstack-neutron-nuage
-        fi
+        #yum install -y openstack-neutron-bigswitch openstack-neutron-brocade openstack-neutron-cisco openstack-neutron-hyperv openstack-neutron-vmware openstack-neutron-openvswitch \
+        #               openstack-neutron-ryu openstack-neutron-linuxbridge openstack-neutron-metaplugin openstack-neutron-mellanox openstack-neutron-nec openstack-neutron-nuage
     fi
 }
 
@@ -41,13 +46,31 @@ install_neutron_server () {
     fi
 }
 
+setup_rabbitmq () {
+    #Setup firewall on CentOS 7
+    if ! $UBUNTU ; then
+        firewall-cmd --permanent --add-port=5672/tcp
+        firewall-cmd --reload
+        setsebool -P nis_enabled 1
+    fi
+
+    restart_service rabbitmq-server
+    if [ $? -ne 0 ]; then
+        echo "RabbitMQ server failed to start"
+        cat /var/log/rabbitmq/startup_err
+        cat /var/log/rabbitmq/startup_log
+    fi
+}
+
 setup_database() {
     #Setup databases
-    service mysql restart || service mysqld restart
+    restart_service mysql
     if ! $UBUNTU
     then
        mysqladmin -u root password $MYSQL_PASS
     fi
+    mysql -uroot -p$MYSQL_PASS -Bse "drop database if exists keystone"
+    mysql -uroot -p$MYSQL_PASS -Bse "drop database if exists neutron"
     mysql -uroot -p$MYSQL_PASS -Bse "create database keystone"
     mysql -uroot -p$MYSQL_PASS -Bse "create database neutron"
     mysql -uroot -p$MYSQL_PASS -Bse "GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'neutron'"
@@ -75,7 +98,7 @@ EOF
     then
         service keystone restart
     else
-        service openstack-keystone start
+        systemctl restart openstack-keystone
     fi
     sleep 10
     #Setup Neutron credentials
@@ -117,8 +140,6 @@ root_helper = sudo neutron-rootwrap /etc/neutron/rootwrap.conf
 [database]
 connection = mysql://neutron:neutron@127.0.0.1/neutron?charset=utf8
 [service_providers]
-service_provider=LOADBALANCER:Haproxy:neutron.services.loadbalancer.drivers.haproxy.plugin_driver.HaproxyOnHostPluginDriver:default
-service_provider=VPN:openswan:neutron.services.vpn.service_drivers.ipsec.IPsecVPNDriver:default
 EOF
 
 cat > /etc/neutron/l3_agent.ini << EOF
@@ -134,14 +155,7 @@ EOF
     fi
 
     touch /etc/neutron/plugin.ini
-    for i in {1..5}
-    do
-        service rabbitmq-server restart
-        if [ $? -eq 0 ]; then break; fi
-        echo "RabbitMQ server failed to start"
-        cat /var/log/rabbitmq/startup_err
-        cat /var/log/rabbitmq/startup_log
-    done
+    setup_rabbitmq
 }
 
 upgrade_neutron_db () {
@@ -149,11 +163,36 @@ upgrade_neutron_db () {
 }
 
 start_neutron_server () {
-    service neutron-server restart
+    restart_service neutron-server
     # Sleep is to let Neutron server successfully reconnect to AMQP
     sleep 10
 }
 
+try () {
+    TEST_FUNCTION=$1
+    SERVICE_STARTED=false
+    for i in {1..5}
+    do
+       FAILURE=false
+       $TEST_FUNCTION
+       if ! $FAILURE
+       then break
+       elif [ $i -eq 5 ]
+       then
+           FAILED_TESTS+="$TEST_FUNCTION "
+       fi
+    done
+}
+
+restart_service () {
+    local SERVICE=$1
+    if $UBUNTU; then
+        service $SERVICE restart
+    else
+        systemctl restart $SERVICE
+    fi
+}
+
 check_neutron_server() {
     #Execute tests
     neutron $NEUTRON_AUTH net-create mynet1
@@ -162,28 +201,32 @@ check_neutron_server() {
 }
 
 check_neutron_openvswitch () {
-
     # Workaround for bug #1371184
     if ! $UBUNTU
     then
         chown root:neutron /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini
     fi
-    if ! $UBUNTU
-    then
-        service openvswitch start
-        service neutron-openvswitch-agent start
-    else
-        service openvswitch-switch restart
-        service neutron-plugin-openvswitch-agent restart
+
+    if ! $SERVICE_STARTED ; then
+        if $UBUNTU; then
+            restart_service openvswitch-switch
+        else
+            restart_service openvswitch
+        fi
+        restart_service neutron-openvswitch-agent
+        SERVICE_STARTED=true
     fi
+
     sleep 10
     STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Open vSwitch agent" | awk -F "|" '{print $5}' | tr -d " ")
     if [ "$STATUS" != ":-)" ]; then echo "OVS agent check failed"; FAILURE=true; fi
 }
 
 check_neutron_l3_agent () {
-
-    service neutron-l3-agent restart
+    if ! $SERVICE_STARTED ; then
+        restart_service neutron-l3-agent
+        SERVICE_STARTED=true
+    fi
     #This sleep here and in other functions is intended to let the agent add information to the queue
     sleep 10
     STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "L3 agent" | awk -F "|" '{print $5}' | tr -d " ")
@@ -191,24 +234,30 @@ check_neutron_l3_agent () {
 }
 
 check_neutron_dhcp_agent () {
-
-    service neutron-dhcp-agent restart
+    if ! $SERVICE_STARTED ; then
+        restart_service neutron-dhcp-agent
+        SERVICE_STARTED=true
+    fi
     sleep 10
     STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "DHCP agent" | awk -F "|" '{print $5}' | tr -d " ")
     if [ "$STATUS" != ":-)" ]; then echo "DHCP agent check failed"; FAILURE=true; fi
 }
 
 check_neutron_metadata_agent () {
-
-    service neutron-metadata-agent restart
+    if ! $SERVICE_STARTED ; then
+        restart_service neutron-metadata-agent
+        SERVICE_STARTED=true
+    fi
     sleep 10
     STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Metadata agent" | awk -F "|" '{print $5}' | tr -d " ")
     if [ "$STATUS" != ":-)" ]; then echo "Metadata agent check failed"; FAILURE=true; fi
 }
 
 check_neutron_metering_agent () {
-
-    service neutron-metering-agent restart
+    if ! $SERVICE_STARTED ; then
+        restart_service neutron-metering-agent
+        SERVICE_STARTED=true
+    fi
     sleep 10
     STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Metering agent" | awk -F "|" '{print $5}' | tr -d " ")
     if [ "$STATUS" != ":-)" ]; then echo "Metering agent check failed"; FAILURE=true; fi
@@ -220,10 +269,11 @@ check_neutron_client () {
 }
 
 check_error () {
-    if $FAILURE
+    if [ "$FAILED_TESTS" != "" ]
     then
         grep TRACE /var/log/neutron/*
         grep ERROR /var/log/neutron/*
+        echo "Failed tests are: $FAILED_TESTS"
         exit 1
     fi
 }
@@ -237,7 +287,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_server
+    try check_neutron_server
     check_error
   ;;
   openstack-neutron)
@@ -248,10 +298,10 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_server
-    check_neutron_l3_agent
-    check_neutron_dhcp_agent
-    check_neutron_metadata_agent
+    try check_neutron_server
+    try check_neutron_l3_agent
+    try check_neutron_dhcp_agent
+    try check_neutron_metadata_agent
     check_error
   ;;
   openstack-neutron-ml2)
@@ -262,7 +312,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_server
+    try check_neutron_server
     check_error
   ;;
   openstack-neutron-openvswitch|neutron-plugin-openvswitch-agent)
@@ -273,7 +323,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_openvswitch
+    try check_neutron_openvswitch
     check_error
   ;;
   python-neutronclient)
@@ -288,7 +338,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_l3_agent
+    try check_neutron_l3_agent
     check_error
   ;;
   neutron-dhcp-agent)
@@ -299,7 +349,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_dhcp_agent
+    try check_neutron_dhcp_agent
     check_error
   ;;
   neutron-metadata-agent)
@@ -310,7 +360,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_metadata_agent
+    try check_neutron_metadata_agent
     check_error
   ;;
   openstack-neutron-metering-agent|neutron-plugin-metering-agent)
@@ -321,7 +371,7 @@ case $PACKAGE in
     setup_neutron_services
     upgrade_neutron_db
     start_neutron_server
-    check_neutron_metering_agent
+    try check_neutron_metering_agent
     check_error
   ;;
 esac