TestRealNotificationHA not isolated from local config

Bug #1482695 reported by Chris Dent
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Ceilometer
Fix Released
Low
Zhai, Edwin

Bug Description

Perhaps this is just the way it goes with the new functional testing, but if you run the test below with a coordination.backend_url set in a /etc/ceilometer/ceilometer.conf the test will fail. It would be better if the test was isolated from pre-existing configuration.

I can see, however, that with functional tests using config is kind of the point, though, so I'm not sure if this is actually a bug, but it is annoying :) Would be nice if we could state where config comes from.

FAIL: ceilometer.tests.functional.test_notification.TestRealNotificationHA.test_notification_service
tags: worker-3
----------------------------------------------------------------------
Empty attachments:
  stdout

stderr: {{{
2015-08-07 15:20:16.862 26342 DEBUG ceilometer.pipeline [req-c569ab10-ff79-4651-b0f7-25d0beaa92c7 - - - - -] Pipeline config file: /tmp/tmpzfabdH/pipelineDq6RIByaml _setup_pipeline_manager ceilometer/pipeline.py:759
2015-08-07 15:20:16.863 26342 INFO ceilometer.pipeline [req-c569ab10-ff79-4651-b0f7-25d0beaa92c7 - - - - -] Pipeline config: {'sinks': [{'name': 'test_sink', 'publishers': ['test://'], 'transformers': []}], 'sources': [{'name': 'test_pipeline', 'meters': ['instance', 'memory'], 'interval': 5, 'sinks': ['test_sink']}]}
2015-08-07 15:20:16.864 26342 INFO ceilometer.pipeline [req-c569ab10-ff79-4651-b0f7-25d0beaa92c7 - - - - -] detected decoupled pipeline config format
}}}

Traceback (most recent call last):
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/mock/mock.py", line 1305, in patched
    return func(*args, **keywargs)
  File "ceilometer/tests/functional/test_notification.py", line 388, in test_notification_service
    self._check_notification_service()
  File "ceilometer/tests/functional/test_notification.py", line 237, in _check_notification_service
    self.srv.start()
  File "ceilometer/notification.py", line 146, in start
    self.partition_coordinator.start()
  File "ceilometer/coordination.py", line 73, in start
    backend_url, self._my_id)
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/tooz/coordination.py", line 411, in get_coordinator
    invoke_args=(member_id, parsed_url, options)).driver
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/stevedore/driver.py", line 45, in __init__
    verify_requirements=verify_requirements,
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/stevedore/named.py", line 55, in __init__
    verify_requirements)
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/stevedore/extension.py", line 170, in _load_plugins
    self._on_load_failure_callback(self, ep, err)
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/stevedore/extension.py", line 162, in _load_plugins
    verify_requirements,
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/stevedore/named.py", line 123, in _load_one_plugin
    verify_requirements,
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/stevedore/extension.py", line 183, in _load_one_plugin
    plugin = ep.resolve()
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/pkg_resources/__init__.py", line 2361, in resolve
    module = __import__(self.module_name, fromlist=['__name__'], level=0)
  File "/home/cdent/src/ceilometer/.tox/py-pgsql/lib/python2.7/site-packages/tooz/drivers/redis.py", line 27, in <module>
    import redis
ImportError: No module named redis

gordon chung (chungg)
Changed in ceilometer:
status: New → Triaged
importance: Undecided → Low
Zhai, Edwin (edwin-zhai)
Changed in ceilometer:
assignee: nobody → Zhai, Edwin (edwin-zhai)
Revision history for this message
Zhai, Edwin (edwin-zhai) wrote :

config_file is searched by oslo_config as following:
      ~/.${project}/
      ~/
      /etc/${project}/
      /etc/

There is no ./etc/$(project}/ for local config, unless we CONF.set_override. But we even have no ceilometer.conf as local config, as 'tox -e genconfig' is used to generate one.

So feasible solution seems to be just print the config file name before test to avoid confusion for end user, or add it in the doc?

Revision history for this message
gordon chung (chungg) wrote :

is there a way to avoid checking for config_file and just take the default values given?

Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix proposed to ceilometer (master)

Fix proposed to branch: master
Review: https://review.openstack.org/216632

Changed in ceilometer:
status: Triaged → In Progress
Revision history for this message
OpenStack Infra (hudson-openstack) wrote : Fix merged to ceilometer (master)

Reviewed: https://review.openstack.org/216632
Committed: https://git.openstack.org/cgit/openstack/ceilometer/commit/?id=53c73ec2f8fcdde43d13b3ba505625235417d4f5
Submitter: Jenkins
Branch: master

commit 53c73ec2f8fcdde43d13b3ba505625235417d4f5
Author: Edwin Zhai <email address hidden>
Date: Wed Aug 26 01:35:14 2015 +0800

    Do not use system config file for test

    Use dummy config file so that test depends on default config opts
    instead of system config file.

    Change-Id: I4ffbd389f80bbdb6076cdd99d3b25ffb4a26f32e
    Closes-Bug: #1482695

Changed in ceilometer:
status: In Progress → Fix Committed
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: none → liberty-3
status: Fix Committed → Fix Released
Thierry Carrez (ttx)
Changed in ceilometer:
milestone: liberty-3 → 5.0.0
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.