Add simple tests for all ceilometer services and packages openstack-ci/fuel-6.0-updates/2014.2 openstack-ci/fuel-6.0/2014.2
authoriberezovskiy <iberezovskiy@mirantis.com>
Fri, 22 Aug 2014 08:43:35 +0000 (12:43 +0400)
committeriberezovskiy <iberezovskiy@mirantis.com>
Mon, 22 Sep 2014 10:06:01 +0000 (14:06 +0400)
Change-Id: I1c910a2697dc15d25ac7c040f346139b901ad10c

debian/ceilometer-common.install
debian/control
rpm/SPECS/openstack-ceilometer.spec
tests/runtests.sh

index 326943de7c5edeab4902cf9af9551abdc3369b7f..9f58d52a4451615e54dad90c44c20aec73352750 100644 (file)
@@ -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
index 282a5b5c628527dcff3c504f0a27993a79743d8e..9d23a346423c24aa6edb12d2726e12faa12c31f1 100644 (file)
@@ -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),
index a0f0bd36e8918d519aac461537b8f58f6b59bb06..a4496e133b9d5f81b0785c783ce8b36cda822b23 100644 (file)
@@ -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
 
 
index 47c00260b78d3a36a8ba886c934ec2c54f381619..86255b731b4e22599e101620d950810fa3a9e57b 100755 (executable)
@@ -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