Reviewed: https://review.openstack.org/540420 Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=cab811b89030d6e49f8ef85e29783fce94c763fc Submitter: Zuul Branch: master
commit cab811b89030d6e49f8ef85e29783fce94c763fc Author: Chris Dent <cd...@anticdent.org> Date: Fri Feb 2 15:34:59 2018 +0000 Don't rely on parse.urlencode in url comparisons The tests for allocation_candidates query parameters in test_report.py relied on urlencode with a dict arg to create the expected_url that is compared with the actual URL that the report client creates when communicating with the placement service. This is risky because the ordering of the query parameters is not reliable when the source data is a dict. This change expands the tests where it was used to do more explicit comparisons. Change-Id: I2e51a4574b20c0634ad83a53c0e68261bbf0ac82 Closes-Bug: #1747001 ** Changed in: nova Status: In Progress => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to OpenStack Compute (nova). https://bugs.launchpad.net/bugs/1747001 Title: Use of parse.urlencode with dict in nova/tests/unit/scheduler/client/test_report.py can result in unpredictable query strings and thus unreliable tests Status in OpenStack Compute (nova): Fix Released Bug description: In nova/tests/unit/scheduler/client/test_report.py there are several tests which confirm the URLs that get passed to the placement service. These create query strings by using code like: expected_url = '/allocation_candidates?%s' % parse.urlencode( {'resources': 'MEMORY_MB:1024,VCPU:1', 'required': 'CUSTOM_TRAIT1', 'limit': 1000}) This results in a query string that will have an unpredictable order. Similarly, the code which is doing the actual query string creation is using the same form. Most of the time the results are the same, and the tests pass, but sometimes they do not. There are at least two potential ways to work around this: * build the query strings using a sequence of tuples and set the 'doseq' param to urlencode to True. This will preserve order. * Parse the expected_url's query params in the tests back to a dict and compare dicts To manage notifications about this bug go to: https://bugs.launchpad.net/nova/+bug/1747001/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp