OpenStack Compute (Nova)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
nova/nova/tests/unit
Matthew Booth eec39762cf Fix incomplete instance data returned after build failure 4 years ago
..
api Merge "Flavor extra spec and image properties validation from API" 4 years ago
cells Use uuidsentinel from oslo.utils 4 years ago
cmd Remove "API Service Version" upgrade check 4 years ago
compute Merge "Share snapshot image membership with instance owner" 4 years ago
conductor Fix incomplete instance data returned after build failure 4 years ago
conf Assorted cleanups from numa-aware-vswitches series 4 years ago
console Use X-Forwarded-Proto as origin protocol if present 4 years ago
consoleauth Fix stacktraces with redis caching backend 4 years ago
db Use oslo_db.sqlalchemy.test_fixtures 4 years ago
fake_loadables
image Share snapshot image membership with instance owner 4 years ago
keymgr
network Move slight bonkers IP management to privsep. 4 years ago
notifications The field instance_name was added to InstanceCreatePayload 4 years ago
objects Add user_id field to InstanceMapping 4 years ago
pci Add get_instance_pci_request_from_vif 4 years ago
privsep Move create_tap_dev into privsep. 4 years ago
scheduler Merge "Warn if group_policy is missing from flavor" 4 years ago
servicegroup Fix deprecation warning for threadgroup.add_timer 4 years ago
ssl_cert
virt Merge "Move libvirt calculation of machine type to utils.py" 4 years ago
volume Add compute API validation for when a volume_type is requested 4 years ago
README.rst
__init__.py
cast_as_call.py
conf_fixture.py libvirt: Start populating NUMACell.network_metadata field 4 years ago
fake_block_device.py Use uuidsentinel from oslo.utils 4 years ago
fake_build_request.py Use uuidsentinel from oslo.utils 4 years ago
fake_console_auth_token.py Use uuidsentinel from oslo.utils 4 years ago
fake_crypto.py
fake_diagnostics.py
fake_flavor.py
fake_hosts.py
fake_instance.py
fake_ldap.py
fake_network.py Use uuidsentinel from oslo.utils 4 years ago
fake_network_cache_model.py
fake_notifier.py Fix jsonutils.to_primitive UserWarning 4 years ago
fake_pci_device_pools.py
fake_policy.py Remove deprecated 'os-server-groups' policy 4 years ago
fake_processutils.py
fake_request_spec.py Fix resetting non-persistent fields when saving obj 4 years ago
fake_requests.py
fake_server_actions.py Use nova.db.api directly 4 years ago
fake_volume.py Use uuidsentinel from oslo.utils 4 years ago
fake_xvp_console_proxy.py
image_fixtures.py Merge image_size extension response into image view builder 4 years ago
matchers.py fix bug with XML matcher handling missing children 4 years ago
policy_fixture.py Implement granular policy rules for placement 4 years ago
test_api_validation.py Add python 3.7 unit and functional tox jobs 4 years ago
test_availability_zones.py Use uuidsentinel from oslo.utils 4 years ago
test_baserpc.py
test_block_device.py Add method to generate device names universally 4 years ago
test_cache.py
test_cinder.py Make [cinder]/catalog_info no longer require a service_name 4 years ago
test_conf.py Configure placement DB context manager for nova-manage/status 4 years ago
test_configdrive2.py Merge "We don't need utils.trycmd any more." 4 years ago
test_context.py Remove NovaException logging from scatter_gather_cells 4 years ago
test_crypto.py
test_exception.py Convert exception messages to strings 4 years ago
test_fake_notifier.py Raise error on timeout in wait_for_versioned_notifications 4 years ago
test_fixtures.py Add context.target_cell() stub to DownCellFixture 4 years ago
test_flavors.py Add python 3.7 unit and functional tox jobs 4 years ago
test_hacking.py Skip double word hacking test 4 years ago
test_hooks.py
test_identity.py Adapter raise_exc=False by default 4 years ago
test_instance_types_extra_specs.py
test_iptables_network.py
test_ipv6.py
test_json_ref.py Transform instance.exists notification 4 years ago
test_loadables.py
test_matchers.py fix bug with XML matcher handling missing children 4 years ago
test_metadata.py Allow run metadata api per cell 4 years ago
test_notifications.py Use uuidsentinel from oslo.utils 4 years ago
test_notifier.py
test_nova_manage.py Populate InstanceMapping.user_id during migrations and schedules 4 years ago
test_policy.py Merge "Remove deprecated 'flavors' policy" 4 years ago
test_profiler.py
test_quota.py Merge "quota: remove defaults kwarg in get_project_quotas" 4 years ago
test_rpc.py Fix jsonutils.to_primitive UserWarning 4 years ago
test_safeutils.py
test_service.py Move conductor wait_until_ready() delay before manager init 4 years ago
test_service_auth.py
test_test.py
test_test_utils.py Use nova.db.api directly 4 years ago
test_utils.py Switch to using os-resource-classes 4 years ago
test_versions.py
test_weights.py Per aggregate scheduling weight 4 years ago
test_wsgi.py
utils.py Transform missing delete notifications 4 years ago

README.rst

OpenStack Nova Testing Infrastructure

This README file attempts to provide current and prospective contributors with everything they need to know in order to start creating unit tests for nova.

Note: the content for the rest of this file will be added as the work items in the following blueprint are completed: https://blueprints.launchpad.net/nova/+spec/consolidate-testing-infrastructure

Test Types: Unit vs. Functional vs. Integration

TBD

Writing Unit Tests

TBD

Using Fakes

TBD

test.TestCase

The TestCase class from nova.test (generally imported as test) will automatically manage self.stubs using the stubout module and self.mox using the mox module during the setUp step. They will automatically verify and clean up during the tearDown step.

If using test.TestCase, calling the super class setUp is required and calling the super class tearDown is required to be last if tearDown is overridden.

Writing Functional Tests

TBD

Writing Integration Tests

TBD

Tests and Exceptions

A properly written test asserts that particular behavior occurs. This can be a success condition or a failure condition, including an exception. When asserting that a particular exception is raised, the most specific exception possible should be used.

In particular, testing for Exception being raised is almost always a mistake since it will match (almost) every exception, even those unrelated to the exception intended to be tested.

This applies to catching exceptions manually with a try/except block, or using assertRaises().

Example:

self.assertRaises(exception.InstanceNotFound, db.instance_get_by_uuid,
                  elevated, instance_uuid)

If a stubbed function/method needs a generic exception for testing purposes, test.TestingException is available.

Example:

def stubbed_method(self):
    raise test.TestingException()
self.stubs.Set(cls, 'inner_method', stubbed_method)

obj = cls()
self.assertRaises(test.TestingException, obj.outer_method)

Stubbing and Mocking

Whenever possible, tests SHOULD NOT stub and mock out the same function.

If it's unavoidable, tests SHOULD define stubs before mocks since the TestCase cleanup routine will un-mock before un-stubbing. Doing otherwise results in a test that leaks stubbed functions, causing hard-to-debug interference between tests1.

If a mock must take place before a stub, any stubs after the mock call MUST be manually unset using self.cleanUp calls within the test.


  1. https://bugs.launchpad.net/nova/+bug/1180671