Extra tests around required traits

This patch adds some tests to prove the following for both GET
/resource_providers and /allocation_candidates API:

* in:trait1,trait2 is not yet supported, this will makes sure we don't
  leak the support to older microversions

* repeated `required` query params are not supported. Interestingly the
  current behavior is that one `required` query param will overwrite the
  rest.

Story: 2005345
Story: 2005346

Change-Id: I67d1af5b8b6e945c744180358d588e95e13c33f6
This commit is contained in:
Balazs Gibizer 2022-01-18 16:28:25 +01:00
parent affb87af23
commit 396634e07c
2 changed files with 77 additions and 0 deletions

@ -0,0 +1,48 @@
fixtures:
- GranularFixture
defaults:
request_headers:
x-auth-token: admin
accept: application/json
openstack-api-version: placement latest
tests:
- name: the 'in:' trait query is not supported yet
GET: /allocation_candidates?required=in:CUSTOM_FOO,HW_CPU_X86_MMX&resources=VCPU:1
request_headers:
openstack-api-version: placement 1.38
status: 400
response_strings:
- "No such trait(s): in:CUSTOM_FOO"
- name: the 'in:' trait query is not supported yet in named request group
GET: /allocation_candidates?requiredX=in:CUSTOM_FOO,HW_CPU_X86_MMX&resourcesX=VCPU:1
request_headers:
openstack-api-version: placement 1.38
status: 400
response_strings:
- "No such trait(s): in:CUSTOM_FOO"
- name: the second required field overwrites the first
# The fixture has one RP for each trait but no RP for both traits.
# As the second 'required' key overwrites the first in <= 1.38 we expect
# that one of that RPs will be returned.
GET: /allocation_candidates?required=CUSTOM_FOO&required=HW_CPU_X86_MMX&resources=VCPU:1
request_headers:
openstack-api-version: placement 1.38
status: 200
response_json_paths:
$.allocation_requests.`len`: 1
- name: the second required field overwrites the first in named groups
# The fixture has one RP for each trait but no RP for both traits.
# As the second 'required' key overwrites the first in <= 1.38 we expect
# that one of that RPs will be returned.
GET: /allocation_candidates?requiredX=CUSTOM_FOO&requiredX=HW_CPU_X86_MMX&resourcesX=VCPU:1
request_headers:
openstack-api-version: placement 1.38
status: 200
response_json_paths:
$.allocation_requests.`len`: 1

@ -0,0 +1,29 @@
fixtures:
- GranularFixture
defaults:
request_headers:
x-auth-token: admin
accept: application/json
openstack-api-version: placement latest
tests:
- name: the 'in:' trait query is not supported yet
GET: /resource_providers?required=in:CUSTOM_FOO,HW_CPU_X86_MMX
request_headers:
openstack-api-version: placement 1.38
status: 400
response_strings:
- "No such trait(s): in:CUSTOM_FOO"
- name: the second required field overwrites the first
# The fixture has one RP for each trait but no RP for both traits.
# As the second 'required' key overwrites the first in <= 1.38 we expect
# that one of that RPs will be returned.
GET: /resource_providers?required=CUSTOM_FOO&required=HW_CPU_X86_MMX
request_headers:
openstack-api-version: placement 1.38
status: 200
response_json_paths:
$.resource_providers.`len`: 1