X-Git-Url: https://review.fuel-infra.org/gitweb?a=blobdiff_plain;f=tests%2Fruntests.sh;h=f92d02cdf679f399bae4b550e3c940755d7489ac;hb=refs%2Fheads%2Fopenstack-ci%2Ffuel-8.0%2Fliberty;hp=f731f1c091f3b460d10bddaa14416a98f5dbd542;hpb=5220da6fb06bd8e8605c44306c64c8ec8f2e29ed;p=openstack-build%2Fceilometer-build.git diff --git a/tests/runtests.sh b/tests/runtests.sh index f731f1c..163281e 100755 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -8,7 +8,7 @@ RES=0 mysql_pass="admin" token=$(openssl rand -hex 10) auth_string="--os-auth-url http://127.0.0.1:35357 --os-token ${token} --os-endpoint http://127.0.0.1:35357/v2.0/" -ceilometer_auth_string="--os-username ceilometer --os-password ceilometer --os-tenant-name ceilometer --os-auth-url http://127.0.0.1:35357/v2.0" +ceilometer_auth_string="--debug --os-username ceilometer --os-password ceilometer --os-tenant-name ceilometer --os-auth-url http://127.0.0.1:35357" ceilometer_service= keystone_log_file="/var/log/keystone/keystone.log" @@ -18,15 +18,15 @@ mongodb_log="/var/log/mongodb/mongodb.log" if [[ `cat /etc/*-release | head -n 1 | awk '{print $1}'` =~ Ubuntu ]]; then os="ubuntu" packages_list="python-pip curl" + export DEBIAN_FRONTEND=noninteractive command_to_install="apt-get install -y --force-yes" keystone_package="keystone" keystone_service="keystone" mysql_service="mysql" mongodb_service="mongodb" - ceilometer_packages_and_services=( + ceilometer_packages=( ceilometer-agent-central ceilometer-agent-compute - ceilometer-agent-ipmi ceilometer-collector ceilometer-agent-notification ceilometer-polling @@ -34,17 +34,41 @@ if [[ `cat /etc/*-release | head -n 1 | awk '{print $1}'` =~ Ubuntu ]]; then ceilometer-alarm-notifier ceilometer-alarm-evaluator ) + + ceilometer_services=("${ceilometer_packages[@]}") + + ceilometer_binaries=( + ceilometer-collector + ceilometer-agent-notification + ceilometer-polling + ceilometer-api + ceilometer-alarm-notifier + ceilometer-alarm-evaluator + ceilometer-dbsync + ceilometer-expirer + ceilometer-rootwrap + ceilometer-send-sample + ) + config_files=( + api_paste.ini + ceilometer.conf + event_definitions.yaml + event_pipeline.yaml + pipeline.yaml + policy.json + ) else - echo "Disable tests for Centos" - exit 0 + setenforce 0 || : + service firewalld stop || : os="centos" packages_list="python-pip curl" command_to_install="yum install -y" keystone_package="openstack-keystone" keystone_service="openstack-keystone" - mysql_service="mysqld" + mysql_service="mysql" mongodb_service="mongod" - ceilometer_packages_and_services=( + ceilometer_packages=( + python-ceilometerclient openstack-ceilometer-central openstack-ceilometer-compute openstack-ceilometer-collector @@ -53,30 +77,37 @@ else openstack-ceilometer-api openstack-ceilometer-alarm ) + ceilometer_services=( + openstack-ceilometer-central + openstack-ceilometer-compute + openstack-ceilometer-collector + openstack-ceilometer-notification + openstack-ceilometer-polling + openstack-ceilometer-api + openstack-ceilometer-alarm-notifier + openstack-ceilometer-alarm-evaluator + ) + ceilometer_binaries=( + ceilometer-agent-notification + ceilometer-alarm-evaluator + ceilometer-alarm-notifier + ceilometer-api + ceilometer-collector + ceilometer-dbsync + ceilometer-expirer + ceilometer-polling + ceilometer-send-sample + ) + config_files=( + api_paste.ini + ceilometer.conf + event_definitions.yaml + event_pipeline.yaml + pipeline.yaml + policy.json + ) fi -ceilometer_binaries=( - ceilometer-collector - ceilometer-agent-notification - ceilometer-polling - ceilometer-api - ceilometer-alarm-notifier - ceilometer-alarm-evaluator - ceilometer-dbsync - ceilometer-expirer - ceilometer-rootwrap - ceilometer-send-sample -) - -config_files=( - api_paste.ini - ceilometer.conf - event_definitions.yaml - pipeline.yaml - policy.json - rootwrap.conf -) - list_commands=( alarm-list event-list @@ -106,7 +137,7 @@ rabbit_hosts = 127.0.0.1 notification_driver = messaging notification_topics = notifications [database] -connection=mysql://keystone:keystone@localhost/keystone +connection=mysql://keystone:keystone@127.0.0.1/keystone [token] provider=keystone.token.providers.uuid.Provider EOF @@ -114,50 +145,52 @@ EOF touch ${keystone_log_file} chown -R keystone:keystone /var/log/keystone/ chown -R keystone:keystone /etc/keystone - keystone-manage db_sync service ${keystone_service} restart sleep 5 - - if [ -z "$(curl -s http://localhost:5000/ | grep '^{"versions":')" ]; then - cat ${keystone_log_file} + if [ -z "$(curl -s http://127.0.0.1:5000/ | grep '^{"versions":')" ]; then exit_on_error 1 "Failed to get to keystone API.\nTests failed because of keystone problem" fi } install_and_setup_mysql() { - 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 - ${command_to_install} mysql-server-5.6 mysql-client-core-5.6 python-mysqldb - if [ -f "/etc/mysql/conf.d/wsrep.cnf" ]; then - rm -f /etc/mysql/conf.d/wsrep.cnf + if [[ "$os" == "ubuntu" ]]; 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 + ${command_to_install} mysql-server mysql-client python-mysqldb + MYSQL_PASSWORD='' + else + ${command_to_install} mysql-client mysql-server mysql-libs MySQL-python + MYSQL_PASSWORD=$(cat /root/.mysql_secret | head -1 | awk -F': ' '{print $2}') fi - - service ${mysql_service} restart - sleep 5 - - if [ -z "$(service ${mysql_service} status | grep "start/running" )" ]; then - exit_on_error 1 "Mysql service has failed to start" + service mysql restart + sleep 10 + if [ ! -z "${MYSQL_PASSWORD}" ]; then + mysqladmin -u root -p${MYSQL_PASSWORD} password ${mysql_pass} + fi + if [ -z "$(service ${mysql_service} status | grep "running" )" ]; then + exit_on_error 1 "Mysql service has failed to start" fi mysql -uroot -p${mysql_pass} -Bse "drop database if exists keystone" mysql -uroot -p${mysql_pass} -Bse "create database keystone" mysql -uroot -p${mysql_pass} -Bse "GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'keystone'" + mysql -uroot -p${mysql_pass} -Bse "drop database if exists ceilometer" + mysql -uroot -p${mysql_pass} -Bse "create database ceilometer" + mysql -uroot -p${mysql_pass} -Bse "GRANT ALL PRIVILEGES ON ceilometer.* TO 'ceilometer'@'localhost' IDENTIFIED BY 'ceilometer'" mysql -uroot -p${mysql_pass} -Bse "flush privileges" } install_and_setup_rabbit() { install_packages rabbitmq-server - echo "127.0.10.1 $(hostname)" >> /etc/hosts + echo "127.0.0.1 $(hostname)" >> /etc/hosts + if [[ "$os" == "ubuntu" ]]; then + update-rc.d rabbitmq-server defaults + else + systemctl enable rabbitmq-server + fi service rabbitmq-server restart sleep 5 - - if [ ! -z "$(service rabbitmq-server status | grep "Error: unable to connect to node")" ]; then - cat /var/log/rabbitmq/startup_log - cat /var/log/rabbitmq/startup_err - - exit_on_error 1 "DB sync command has failures" - fi } ceilometer_configuration() { @@ -168,7 +201,6 @@ policy_file = /etc/ceilometer/policy.json debug = True verbose = True log_dir = ${ceilometer_log_dir} -rpc_backend = rabbit auth_strategy = keystone rabbit_password = guest rabbit_hosts = 127.0.0.1 @@ -180,10 +212,10 @@ auth_protocol = http admin_tenant_name = ceilometer admin_user = ceilometer admin_password = ceilometer -auth_url=http://127.0.0.1:35357/v2.0 +auth_url=http://127.0.0.1:35357 [database] -connection=mongodb://127.0.0.1/ceilometer +connection=mysql://ceilometer:ceilometer@127.0.0.1/ceilometer [notification] store_events = True @@ -211,54 +243,20 @@ EOF --publicurl=http://127.0.0.1:8777/ --internalurl=http://127.0.0.1:8777/ --adminurl=http://127.0.0.1:8777/ } -install_and_setup_mongo() { - install_packages "mongodb mongodb-clients" - cat > /etc/mongodb.conf << EOF -logappend=true -bind_ip = 127.0.0.1 -port = 27017 -dbpath=/var/lib/mongo -pidfilepath = /var/run/mongodb/mongodb.pid -journal = true -logpath = ${mongodb_log} -setParameter = logLevel=1 -EOF - [ -d "/var/log/mongo" ] || mkdir /var/log/mongo - [ -d "/var/lib/mongo" ] || mkdir /var/lib/mongo - [ -d "/var/run/mongodb" ] || mkdir /var/run/mongodb - chown -R mongodb:mongodb /var/log/mongo /var/lib/mongo /var/run/mongodb /etc/mongodb.conf - - service ${mongodb_service} restart - sleep 5 - - if [ -z "$(service ${mongodb_service} status | grep "start/running")" ]; then - cat ${mongodb_log} - exit_on_error 1 "Mongo service has failed to start" - fi - - try=0 - while [ ${try} -le '5' ]; do - mongo --host 127.0.0.1 --eval "db.getSiblingDB('admin')" - if [ "$?" -ne '0' ]; then - try=$((try + 1)) - sleep 5 - else - break - fi - done - if [ "${try}" -ge '5' ]; then - exit_on_error 1 "Mongo shell is not available. Mongo work is broken" +send_fake_instance_notification() { + if [ $os == "centos" ]; then + curl -LO https://bootstrap.pypa.io/get-pip.py + python get-pip.py fi -} -send_fake_instance_notification() { pip install pika==0.9.8 echo '#!/usr/bin/env python import pika +import uuid connection = pika.BlockingConnection(pika.ConnectionParameters(host="127.0.0.1")) channel = connection.channel() channel.queue_declare(queue="notifications.info") -test=r'"'"'{"event_type": "compute.instance.update", "_unique_id": "fake", "payload": {"ephemeral_gb": 0, "instance_id": "fake", "user_id": "fake", "root_gb": 0, "tenant_id": "fake", "memory_mb": 64, "vcpus": 1}, "priority": "INFO"}'"'"' +test='"'"'{"event_type": "compute.instance.create", "payload": {"instance_id": "fake", "memory_mb": 512, "disk_gb": 20, "root_gb": 20, "ephemeral_gb": 0, "vcpus": 1, "instance_type_id": 1, "state": "fake"}, "publisher_id": "fake", "priority":"INFO", "message_id": "%s"}'"'"' % uuid.uuid4() channel.basic_publish(exchange="nova", routing_key="notifications.info", properties=pika.BasicProperties(priority=0, delivery_mode=2, headers="", content_encoding="utf-8", content_type="application/json"), body=test) @@ -278,7 +276,7 @@ exit_on_error() { } found=false -for i in ${ceilometer_packages_and_services[@]}; do +for i in ${ceilometer_packages[@]}; do if [ "${i}" == "${package_to_test}" ]; then found=true fi @@ -292,11 +290,10 @@ fi case ${package_to_test} in ceilometer-common|openstack-ceilometer-common) prepare_vm - install_packages "${ceilometer_packages_and_services[@]}" + install_packages "${ceilometer_packages[@]}" install_and_setup_rabbit install_and_setup_mysql install_and_setup_keystone - install_and_setup_mongo ceilometer_configuration for binary in ${ceilometer_binaries[@]}; do @@ -311,41 +308,39 @@ case ${package_to_test} in fi done - for service in ${ceilometer_packages_and_services[@]}; do + for service in ${ceilometer_services[@]}; do service ${service} restart sleep 5 - if [ -z "$(service ${service} status | grep "start/running")" ]; then + if [ -z "$(service ${service} status | grep "running")" ]; then cat /var/log/ceilometer/${service}.log exit_on_error 1 "Service ${service} has failed to start" fi done - repsonce=$(curl "http://localhost:8777" | grep "Authentication required") + repsonce=$(curl "http://127.0.0.1:8777" | grep "Authentication required") if [ -z "$repsonce" ]; then exit_on_error 1 "Ceilometer api doesn't work.\n No one process is listening on 8777 port" fi + for Command in ${list_commands[@]}; do - ceilometer ${ceilometer_auth_string} ${Command} + ceilometer ${ceilometer_auth_string} ${Command} || true + cat $keystone_log_file if [ "$?" -ne '0' ]; then exit_on_error 1 "Command ${Command} has failed" fi done - - # Ceilometer functionality has changed. - # Remove after test rework. - exit 0 + send_fake_instance_notification # Keystone notifications - if [ -z "$(ceilometer ${ceilometer_auth_string} meter-list | grep identity)" ]; then + if [ -z "$(ceilometer ${ceilometer_auth_string} meter-list | grep fake)" ]; then exit_on_error 1 "Keystone notifications don't work" fi # Instance notification - send_fake_instance_notification resource_id=$(ceilometer ${ceilometer_auth_string} resource-list | grep fake) - if [ -z ${resource_id} ]; then + if [ -z "${resource_id}" ]; then exit_on_error 1 "Notification is not received" fi @@ -373,24 +368,15 @@ case ${package_to_test} in ceilometer-agent-ipmi|openstack-ceilometer-ipmi) # Ceilometer-agent-ipmi is not included in common testing # because it is not used in Fuel now - - # Binary does not exist anymore. ceilometer-polling is - # responsible for service start. - # Remove after test rework. - exit 0 - - if [ ! -f "/usr/bin/ceilometer-agent-ipmi" ]; then - exit_on_error 1 "Ceilometer ipmi binary is missed" - fi + #if [ ! -f "/usr/bin/ceilometer-agent-ipmi" ]; then + # exit_on_error 1 "Ceilometer ipmi binary is missed" + #fi ;; python-ceilometer) python -c 'import ceilometer' if [ $? -ne '0' ]; then exit_on_error 1 "Couldn't import module 'ceilometer'" fi - if [ -z "$(which ceilometer)" ]; then - exit_on_error 1 "Can't find command 'ceilometer'" - fi ;; *) if ! ${found}; then