The functional tests run against a live Designate, making real requests and verifying they were successful.
The functional tests are written using tempest-lib. All the dependencies should be in the requirements files:
cd designate
pip install -r requirements.txt -r test-requirements.txt
pip install -e .
The Tempest tests require a config file. The config specifies the keystone endpoint to authenticate against, or to run in noauth mode against a Designate without keystone.
Set the TEMPEST_CONFIG environment variable to specify where the config file is:
export TEMPEST_CONFIG=tempest.conf
The config file should look like the following:
[identity]
# optionally override the url from the service catalog
# designate_override_url = http://designate.example.com
# Replace these with values that represent your identity configuration
uri = http://localhost:5000/v2.0
uri_v3 = http://localhost:5000/v3
auth_version = v2
region = RegionOne
username = demo
tenant_name = demo
password = password
domain_name = Default
alt_username = alt_demo
alt_tenant_name = alt_demo
alt_password = password
alt_domain_name = Default
admin_username = admin
admin_tenant_name = admin
admin_password = password
admin_domain_name = Default
[noauth]
# set this to True to run against designate in noauth mode
use_noauth = False
designate_endpoint = http://127.0.0.1:9001
tenant_id = demo
alt_tenant_id = alt_demo
admin_tenant_id = admin
[designate]
# the tests will verify changes propagate out to these nameservers
nameservers = 127.0.0.1:53,127.0.0.2:53
[testconfig]
# Specify how build the path for the request. This will be appended
# directly to the url from the service catalog (or the override url).
# {tenant_id} - the tenant id
# {tenant_name} - the tenant name
# {user} - the username of the tenant
# {user_id} - the user_id of the tenant
# {path} - the versionless resource path, e.g. /zones/ID"),
v2_path_pattern = '/v2/{path}'
# if true, skip doing admin actions like increasing quotas in test setups
no_admin_setup = False
Make sure to set the TEMPEST_CONFIG environment variable to point to your test config file.
Then run the tests with tox (you may need to pip install tox):
tox -e functional