X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=tests%2Fruntests.sh;h=ba8e0322ace82add9c19faabc394867b8d9c9870;hb=e63bd3a0f6e98e37887cb2fdfcea6e2662418389;hp=1dff794061cef6d5db2e550a8a20cc2fad96d7e7;hpb=178fe1bc096c1ff05e181a7ce6b9c2da2adc9512;p=openstack-build%2Fneutron-build.git diff --git a/tests/runtests.sh b/tests/runtests.sh index 1dff79406..ba8e0322a 100755 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -1,17 +1,25 @@ -#!/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 AUTH="--os-auth-url http://127.0.0.1:35357 --os-token $TOKEN --os-endpoint http://127.0.0.1:35357/v2.0/" NEUTRON_AUTH="--os-username neutron --os-password neutron --os-tenant-name neutron --os-auth-url http://127.0.0.1:35357/v2.0" -FORMAT=" --request-format xml" CORE_PLUGIN="neutron.plugins.ml2.plugin.Ml2Plugin" -if [[ $PLATFORM =~ Ubuntu ]]; then UBUNTU=true; fi +if [[ $PLATFORM =~ Ubuntu ]] +then + UBUNTU=true +else + setenforce 0 +fi + if [ -z $PACKAGE ]; then echo "Package for testing is not specified"; exit 1; fi echo "127.0.10.1 $(hostname)" >> /etc/hosts @@ -21,9 +29,13 @@ 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 + DEBIAN_FRONTEND=noninteractive 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 #yum install -y openstack-neutron-bigswitch openstack-neutron-brocade openstack-neutron-cisco openstack-neutron-hyperv openstack-neutron-vmware openstack-neutron-openvswitch \ @@ -34,19 +46,37 @@ install_packages() { install_neutron_server () { if $UBUNTU then - apt-get install -y --force-yes neutron-server + DEBIAN_FRONTEND=noninteractive apt-get install -y --force-yes neutron-server else yum install -y openstack-neutron openstack-neutron-ml2 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'" @@ -74,7 +104,7 @@ EOF then service keystone restart else - service openstack-keystone start + systemctl restart openstack-keystone fi sleep 10 #Setup Neutron credentials @@ -116,8 +146,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 @@ -133,14 +161,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 () { @@ -148,68 +169,104 @@ 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 $FORMAT mynet1 + neutron $NEUTRON_AUTH net-create mynet1 CHECK=$(neutron $NEUTRON_AUTH net-list | grep id) if [ -z "$CHECK" ]; then echo "Network listing failed" && FAILURE=true; fi } check_neutron_openvswitch () { - # Workaround for bug #1371184 if ! $UBUNTU then - chown root:neutron /etc/neutron/plugins/openvswitch/ovs_neutron_plugin.ini + chown root:neutron /etc/neutron/plugins/ml2/openvswitch_agent.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-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 " ") + STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Open vSwitch agent" | awk -F "|" '{print $6}' | 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 " ") + STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "L3 agent" | awk -F "|" '{print $6}' | tr -d " ") if [ "$STATUS" != ":-)" ]; then echo "L3 agent check failed"; FAILURE=true; fi } 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 " ") + STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "DHCP agent" | awk -F "|" '{print $6}' | 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 " ") + STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Metadata agent" | awk -F "|" '{print $6}' | 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 " ") + STATUS=$(neutron $NEUTRON_AUTH agent-list | grep "Metering agent" | awk -F "|" '{print $6}' | tr -d " ") if [ "$STATUS" != ":-)" ]; then echo "Metering agent check failed"; FAILURE=true; fi } @@ -219,10 +276,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 } @@ -236,7 +294,7 @@ case $PACKAGE in setup_neutron_services upgrade_neutron_db start_neutron_server - check_neutron_server + try check_neutron_server check_error ;; openstack-neutron) @@ -247,10 +305,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) @@ -261,10 +319,10 @@ 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) + openstack-neutron-openvswitch|neutron-openvswitch-agent) install_packages install_neutron_server setup_database @@ -272,7 +330,7 @@ case $PACKAGE in setup_neutron_services upgrade_neutron_db start_neutron_server - check_neutron_openvswitch + try check_neutron_openvswitch check_error ;; python-neutronclient) @@ -287,7 +345,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) @@ -298,7 +356,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) @@ -309,10 +367,10 @@ 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) + openstack-neutron-metering-agent|neutron-metering-agent) install_neutron_server install_packages setup_database @@ -320,7 +378,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