Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
test failure induced by reading system config file
run run_tests.sh or tox to test the glance code, it will get following failure: test_get_bind_addr_default_value test_get_path_non_exist Analysis -------- The root cause is resided in "glance/tests/unit/api/test_cmd.py". In TestGlanceApiCmd.setUp, the sys.argv is overrided to ['glance-api']. Since sys.argv is "global" variable, and this test entry it run firstly by nosetests while running tests in "glance/tests/unit"(since nosetests search test items alphabetically), the other test entries will inherit the sys.argv value ['glance-api']. Finally the system config file "/etc/glance/glance-api.conf" is read in "setUp" via oslo.config.cfg:ConfigOpts.__call__ -> _pre_setup -> find_config_files. CONF.bind_port and CONF.bind_host is set to the value reading from system config file: /etc/glance/glance-api.conf. A simplied call backtrace: TestGlanceApiCmd.setUp --> sys.argv = ['glance-api'] ->JSONRequestDeserializerTest.setUp ->glance/common/config.py:parse_args ->oslo.config.cfg:ConfigOpts.__call__ ->CONF.bind_port CONF.bind_host is set wsgi.get_bind_addr() will read the CONF.bind_port and CONF.bind_host to return value. if system config file is not read, CONF.bind_host is set to "0.0.0.0", CONF.bind_port is not set. wsgi.get_bind_addr() will return the expected value. This is the reason that individual test of test_get_bind_addr_default_value got passed, but failed while testing all. The failure of test_get_path_non_exist is induced by same reason. Test case should clear up the setting in tearDown(), especially the "global" setting, e.g. sys.argv. Solution -------- The solution is simple: In class TestGlanceApiCmd, add a private variable to backup the sys.argv in setUp(), and restore it in tearDown(). Test method ----------- $ ./run_tests.sh $ tox -evenv -- nosetests \ --tests=glance.tests.unit.common.test_config:TestPasteApp tox -evenv -- nosetests --tests=glance.tests.unit.common.test_wsgi:JSONRequestDeserializerTest Fixes Bug #1204186 Change-Id: I2dac8e506fa794d1faa9509258936d78e2f981d8
- Loading branch information