From: iberezovskiy Date: Fri, 22 Aug 2014 08:43:35 +0000 (+0400) Subject: Add simple tests for all ceilometer services and packages X-Git-Tag: mos-9.0~22 X-Git-Url: https://review.fuel-infra.org/gitweb?a=commitdiff_plain;h=b6b17a43c56e5dd3600104227493c40e61c771f8;p=openstack-build%2Fceilometer-build.git Add simple tests for all ceilometer services and packages Change-Id: I1c910a2697dc15d25ac7c040f346139b901ad10c --- diff --git a/debian/ceilometer-common.install b/debian/ceilometer-common.install index 326943d..9f58d52 100644 --- a/debian/ceilometer-common.install +++ b/debian/ceilometer-common.install @@ -4,6 +4,8 @@ etc/ceilometer/policy.json etc/ceilometer etc/ceilometer/api_paste.ini etc/ceilometer etc/ceilometer/event_definitions.yaml etc/ceilometer tools/show_data.py usr/share/doc/ceilometer +usr/bin/ceilometer-agent-ipmi usr/bin/ceilometer-dbsync usr/bin/ceilometer-expirer +usr/bin/ceilometer-rootwrap usr/bin/ceilometer-send-sample diff --git a/debian/control b/debian/control index 282a5b5..9d23a34 100644 --- a/debian/control +++ b/debian/control @@ -27,7 +27,6 @@ Build-Depends: python-jsonschema (<< 3.0.0), python-keystoneclient (>= 1:0.9.0), python-keystonemiddleware (>= 1.0.0), - python-kombu (>= 2.4.8), python-lxml (>= 2.3), python-lockfile (>= 0.8), python-migrate (>= 0.9.1), @@ -38,7 +37,10 @@ Build-Depends: python-netaddr (>= 0.7.6), python-nova, python-novaclient (>= 1:2.17.0), + python-neutronclient (>= 2.3.5), python-oslo.config (>= 1:1.2.1), + python-oslo.utils (>= 0.1.1), + python-oslo.i18n (>= 0.1.0), python-oslo.sphinx, python-pastedeploy (>= 1.5.0), python-pbr (>= 0.6), python-pbr (<< 0.7) | python-pbr (>> 0.7), python-pbr (<< 1.0), @@ -84,21 +86,25 @@ Depends: python-jsonschema (<< 3.0.0), python-keystoneclient (>= 1:0.9.0), python-keystonemiddleware (>= 1.0.0), - python-kombu (>= 2.4.8), python-lxml (>= 2.3), python-lockfile (>= 0.8), python-migrate (>= 0.9.1), python-msgpack (>= 0.4.0), python-netaddr (>= 0.7.6), + python-neutronclient (>= 2.3.5), python-novaclient (>= 1:2.17.0), python-oslo.config (>= 1:1.2.1), + python-oslo.db (>= 0.2.0), + python-oslo.utils (>= 0.1.1), python-oslo.messaging (>= 1.3.0), + python-oslo.serialization (>= 0.1.0), python-oslo.vmware (>= 0.4), python-pbr (>= 0.6), python-pbr (<< 0.7) | python-pbr (>> 0.7), python-pbr (<< 1.0), python-pecan (>= 0.5.0), python-posix-ipc, python-pymongo (>= 2.6), python-six (>= 1.7.0), + python-tooz (>= 0.3), python-yaml (>= 3.1.0), python-requests (>= 1.1), python-sqlalchemy (>= 0.8.4), python-sqlalchemy (<< 0.9.5) | python-sqlalchemy (>> 0.9.5), python-sqlalchemy (<= 0.9.99), diff --git a/rpm/SPECS/openstack-ceilometer.spec b/rpm/SPECS/openstack-ceilometer.spec index a0f0bd3..a4496e1 100644 --- a/rpm/SPECS/openstack-ceilometer.spec +++ b/rpm/SPECS/openstack-ceilometer.spec @@ -59,7 +59,6 @@ Summary: OpenStack ceilometer python libraries Group: Applications/System Requires: python-qpid -Requires: python-kombu Requires: python-babel Requires: python-eventlet >= 0.13.0 @@ -81,6 +80,7 @@ Requires: python-lockfile >= 0.8 Requires: python-netaddr >= 0.7.6 Requires: python-pbr >= 0.6, python-pbr < 0.7, python-pbr > 0.7, python-pbr < 1.0 Requires: python-requests >= 1.1 +Requires: python-tooz >= 0.3 Requires: python-sqlalchemy >= 0.8.4, python-sqlalchemy < 0.95, python-sqlalchemy > 0.9.5, python-sqlalchemy <= 0.9.99 Requires: python-alembic >= 0.6.4 @@ -89,12 +89,15 @@ Requires: python-migrate >= 0.9.1 Requires: python-webob >= 1.2.3 Requires: python-oslo-config >= 1:1.2.1 +Requires: python-oslo.db >= 0.2.0 Requires: python-oslo-vmware >= 0.4 +Requires: python-oslo-utils >= 0.1.1 Requires: python-oslo-messaging >= 1.3.0 +Requires: python-oslo.serialization >= 0.1.0 Requires: pysnmp > 4.2.1, pysnmp < 5.0.0 Requires: pytz -Requires: python-croniter +Requires: python-croniter >= 0.3.4 Requires: python-keystonemiddleware >= 1.0.0 Requires: python-paste-deploy >= 1.5.0 @@ -106,6 +109,7 @@ Requires: python-pymongo Requires: python-flask Requires: python-pecan >= 0.5.0 Requires: python-wsme >= 0.6 +Requires: python-neutronclient >= 2.3.5 Requires: python-novaclient >= 2.17.0 Requires: python-keystoneclient >= 0.9.0 Requires: python-glanceclient >= 0.13.1 @@ -133,7 +137,6 @@ Requires(preun): chkconfig Requires(pre): shadow-utils - %description common OpenStack ceilometer provides services to measure and collect metrics from OpenStack components. @@ -502,8 +505,10 @@ fi %dir %attr(0755, ceilometer, root) %{_localstatedir}/log/ceilometer %dir %attr(0755, ceilometer, root) %{_localstatedir}/run/ceilometer +%{_bindir}/ceilometer-agent-ipmi %{_bindir}/ceilometer-dbsync %{_bindir}/ceilometer-expirer +%{_bindir}/ceilometer-rootwrap %{_bindir}/ceilometer-send-sample diff --git a/tests/runtests.sh b/tests/runtests.sh index 47c0026..86255b7 100755 --- a/tests/runtests.sh +++ b/tests/runtests.sh @@ -1,2 +1,243 @@ #!/bin/bash -x -exit 0 + +RES=0 + +package=$1 + +prepare_script() { + echo '#!/usr/bin/env python +import pika +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"}'"'"' +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) +print " [x] Message was sent!" +connection.close()' > $(pwd)/send.py +} + +prepare_config() { + mkdir -p /var/log/ceilometer + echo -e "[DEFAULT] +api_paste_config = /etc/ceilometer/api_paste.ini +policy_file = /etc/ceilometer/policy.json +debug = True +verbose = True +log_file = /var/log/ceilometer/$package.log +rpc_backend = ceilometer.openstack.common.rpc.impl_kombu + +[database] +connection=sqlite:////tmp/ceilometer" > /etc/ceilometer/ceilometer.conf + + ceilometer-dbsync --config-file /etc/ceilometer/ceilometer.conf + if [ $? != "0" ]; then + RES=1 + exit $RES + fi + # Clean log file + rm -f /var/log/ceilometer/$package.log +} + +prepare_vm() { + if [[ `cat /etc/*-release | head -n 1 | awk '{print $1}'` =~ Ubuntu ]]; then + apt-get install rabbitmq-server screen python-pip sqlite3 -y + else + yum install screen rabbitmq-server python-pip sqlite -y + fi + service rabbitmq-server restart + sleep 5 +} + +send_fake_notification() { + pip install pika==0.9.8 + prepare_script + python $(pwd)/send.py +} + +check_fake_notification() { + sqlite3 /tmp/ceilometer 'select * from meter;' + local check=$(sqlite3 /tmp/ceilometer 'select * from meter;' | grep instance) + if [ -z "$check" ]; then + echo -e "Meter 'instance' is lost" + RES=1 + echo $RES + fi +} + +check_pollsters() { + local test1=$(cat /var/log/ceilometer/$package.log | grep "Polling pollster $1") + local test2=$(cat /var/log/ceilometer/$package.log | grep "Polling pollster $2") + local test3=$(cat /var/log/ceilometer/$package.log | grep "Polling pollster $3") + if [ -z "$test1" -o -z "$test2" -o -z "$test3" ]; then + echo -e "Some pollsters aren't work" + RES=1 + echo $RES + fi +} + +check_running() { + if [ $(ps aux | grep $1 | wc -l) -lt "2" ]; then + echo "Process $1 is not running" + RES=1 + echo $RES + fi +} + +case $package in + ceilometer-api|openstack-ceilometer-api) + prepare_config + prepare_vm + + screen -dmS ceilometer-api + sleep 2 + screen -S ceilometer-api -p 0 -X stuff 'ceilometer-api --config-file /etc/ceilometer/ceilometer.conf +' + sleep 10 + check_running ceilometer-api + + repsonce=$(curl "http://localhost:8777" | grep "Authentication required") + if [ -z "$repsonce" ]; then + echo -e "Ceilometer api doesn't work. No one process is listening on 8777 port" + RES=1 + fi + + killall -15 ceilometer-api + + cat /var/log/ceilometer/$package.log + ;; + ceilometer-collector|openstack-ceilometer-collector|ceilometer-agent-notification|openstack-ceilometer-notification) + prepare_config + prepare_vm + + if [[ `cat /etc/*-release | head -n 1 | awk '{print $1}'` =~ Ubuntu ]]; then + apt-get install ceilometer-collector ceilometer-agent-notification -y + else + yum install openstack-ceilometer-collector openstack-ceilometer-notification -y + fi + + screen -dmS ceilometer-collector + screen -dmS ceilometer-agent-notification + sleep 2 + screen -S ceilometer-collector -p 0 -X stuff 'ceilometer-collector --config-file /etc/ceilometer/ceilometer.conf --log-file /var/log/ceilometer/ceilometer-collector.log +' + screen -S ceilometer-agent-notification -p 0 -X stuff 'ceilometer-agent-notification --config-file /etc/ceilometer/ceilometer.conf --log-file /var/log/ceilometer/ceilometer-anotification.log +' + sleep 10 + check_running ceilometer-collector + check_running ceilometer-agent-notification + send_fake_notification + sleep 2 + check_fake_notification + + killall -15 ceilometer-collector ceilometer-agent-notification + + cat /var/log/ceilometer/ceilometer-collector.log + cat /var/log/ceilometer/ceilometer-anotification.log + ;; + ceilometer-alarm-notifier|ceilometer-alarm-evaluator|openstack-ceilometer-alarm) + if [[ `cat /etc/*-release | head -n 1 | awk '{print $1}'` =~ Ubuntu ]]; then + # Testing alarm-notifier and alarm-evaluator together + apt-get install ceilometer-alarm-evaluator ceilometer-alarm-notifier -y --force-yes + fi + + echo "Testing 'ceilometer-alarm-notifier'" + prepare_config + prepare_vm + + screen -dmS ceilometer-alarm-notifier + sleep 2 + screen -S ceilometer-alarm-notifier -p 0 -X stuff 'ceilometer-alarm-notifier --config-file /etc/ceilometer/ceilometer.conf --log-file /var/log/ceilometer/ceilometer-alarm-notifier.log +' + sleep 10 + check_running ceilometer-alarm-notifier + + if [ -z "$(cat /var/log/ceilometer/ceilometer-alarm-notifier.log | grep 'Connected to AMQP server on')" ]; then + echo -e "Start alarm-notifier process is failed" + RES=1 + fi + + killall -15 ceilometer-alarm-notifier + + cat /var/log/ceilometer/ceilometer-alarm-notifier.log + + echo "Testing 'ceilometer-alarm-evaluator'" + screen -dmS ceilometer-alarm-evaluator + sleep 2 + screen -S ceilometer-alarm-evaluator -p 0 -X stuff 'ceilometer-alarm-evaluator --config-file /etc/ceilometer/ceilometer.conf --log-file /var/log/ceilometer/ceilometer-alarm-evaluator.log +' + sleep 10 + check_running ceilometer-alarm-evaluator + + if [ -z "$(cat /var/log/ceilometer/ceilometer-alarm-evaluator.log | grep 'alarm evaluation cycle')" ]; then + echo -e "Start alarm-evalutor process is failed" + RES=1 + fi + + killall -15 ceilometer-alarm-evaluator + + cat /var/log/ceilometer/ceilometer-alarm-evaluator.log + ;; + ceilometer-agent-compute|openstack-ceilometer-compute) + prepare_vm + prepare_config + + screen -dmS ceilometer-agent-compute + sleep 2 + screen -S ceilometer-agent-compute -p 0 -X stuff 'ceilometer-agent-compute --config-file /etc/ceilometer/ceilometer.conf +' + sleep 10 + check_running ceilometer-agent-compute + check_pollsters "cpu" "memory" "disk" + + killall -15 ceilometer-agent-compute + + cat /var/log/ceilometer/$package.log + ;; + ceilometer-agent-central|openstack-ceilometer-central) + prepare_vm + prepare_config + + screen -dmS ceilometer-agent-central + sleep 2 + screen -S ceilometer-agent-central -p 0 -X stuff 'ceilometer-agent-central --config-file /etc/ceilometer/ceilometer.conf +' + sleep 10 + check_running ceilometer-agent-central + check_pollsters "network" "switch" "hardware" + + killall -15 ceilometer-agent-central + + cat /var/log/ceilometer/$package.log + ;; + ceilometer-common|openstack-ceilometer-common) + if [ -z "$(cut -d: -f1 /etc/passwd | grep 'ceilometer')" ]; then + echo -e "User 'ceilometer' doesn't exist" + RES=1 + fi + config_files="ceilometer.conf policy.json pipeline.yaml api_paste.ini event_definitions.yaml" + for i in $config_files; do + if [ ! -f "/etc/ceilometer/$i" ]; then + RES=1 + echo "File /etc/ceilometer/$i doesn't exist" + fi + done + ;; + python-ceilometer) + python -c 'import ceilometer' + if [ $? -ne '0' ]; then + echo -e "Couldn't import module 'ceilometer'" + RES=1 + fi + if [ -z "$(which ceilometer)" ]; then + RES=1 + echo -e "Can't find command 'ceilometer'" + fi + ;; + *) + echo "test not defined, skipping..." + ;; +esac + +exit $RES