Add Neutron 2015.1 for Ubuntu 14.04
[openstack-build/neutron-build.git] / tests / runtests.sh
index 7d63238c8f5d83cc13ed19d336af6ed56dd119f5..340390c5868633e64520ef7ef0a900e67e705fc7 100755 (executable)
@@ -1,9 +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
@@ -11,14 +13,7 @@ AUTH="--os-auth-url http://127.0.0.1:35357 --os-token $TOKEN --os-endpoint http:
 NEUTRON_AUTH="--os-username neutron --os-password neutron --os-tenant-name neutron --os-auth-url http://127.0.0.1:35357/v2.0"
 CORE_PLUGIN="neutron.plugins.ml2.plugin.Ml2Plugin"
 
-if [[ $PLATFORM =~ Ubuntu ]]
-then UBUNTU=true
-else
-   #Tests for RPM packages are disabled
-   #until migration to CentOS 7 is completed
-   echo "RPM tests are temporarily disabled"
-   exit 0
-fi
+if [[ $PLATFORM =~ Ubuntu ]]; then UBUNTU=true; fi
 if [ -z $PACKAGE ]; then echo "Package for testing is not specified"; exit 1; fi
 echo "127.0.10.1 $(hostname)" >> /etc/hosts
 
@@ -28,13 +23,17 @@ install_packages() {
     then
         echo "mysql-server mysql-server/root_password select $MYSQL_PASS" | debconf-set-selections
         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 bridge-utils
+        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 MySQL-client python-oslo-utils bridge-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
-        yum install -y openstack-neutron-bigswitch openstack-neutron-brocade openstack-neutron-cisco openstack-neutron-hyperv openstack-neutron-vmware openstack-neutron-openvswitch \
-                       openstack-neutron-linuxbridge openstack-neutron-metaplugin openstack-neutron-mellanox openstack-neutron-nec openstack-neutron-nuage
+        #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
 }
 
@@ -47,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'"
@@ -81,7 +98,7 @@ EOF
     then
         service keystone restart
     else
-        service openstack-keystone start
+        systemctl restart openstack-keystone
     fi
     sleep 10
     #Setup Neutron credentials
@@ -123,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
@@ -140,17 +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
-
-    #br-int is required for OVS agent
-    brctl addbr br-int
+    setup_rabbitmq
 }
 
 upgrade_neutron_db () {
@@ -158,13 +163,14 @@ 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
@@ -178,6 +184,15 @@ try () {
     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
@@ -186,28 +201,33 @@ 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
+            restart_service neutron-plugin-openvswitch-agent
+        else
+            restart_service openvswitch
+            restart_service neutron-openvswitch-agent
+        fi
+        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 " ")
@@ -215,24 +235,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