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.
 
 
 
 
 
Zuul 5645f75d6b Merge "libvirt: Handle VIR_ERR_DEVICE_MISSING when detaching devices" into stable/rocky 10 months ago
..
api Merge "Block rebuild when NUMA topology changed" into stable/rocky 12 months ago
api_samples_test_base Fix os-simple-tenant-usage result order 3 years ago
cells Use nova.db.api directly 3 years ago
cmd Fix wrong assertions in unit tests 2 years ago
compute compute: Don't delete the original attachment during pre LM rollback 11 months ago
conductor Avoid circular reference during serialization 1 year ago
conf Assorted cleanups from numa-aware-vswitches series 3 years ago
console Mask the token used to allow access to consoles 2 years ago
consoleauth Mask the token used to allow access to consoles 2 years ago
db Don't delete compute node, when deleting service other than nova-compute 2 years ago
fake_loadables Refactor Ironic driver tests as per review comment 7 years ago
image Share snapshot image membership with instance owner 2 years ago
keymgr Fix spelling mistake 5 years ago
network Add config option for neutron client retries 1 year ago
notifications Transform metrics.update notification 3 years ago
objects objects: Update keypairs when saving an instance 1 year ago
pci Fix non-existent method of Mock 2 years ago
privsep Add tests for _get_trees_matching_all() function 3 years ago
scheduler Merge "Disable limit if affinity(anti)/same(different)host is requested" into stable/rocky 2 years ago
servicegroup Fix service list for disabled compute using MC driver 3 years ago
ssl_cert Make eventlet hub use a monotonic clock 5 years ago
virt libvirt: Handle VIR_ERR_DEVICE_MISSING when detaching devices 11 months ago
volume Add retry to cinder API calls related to volume detach 1 year ago
README.rst Refactor Ironic driver tests as per review comment 7 years ago
__init__.py Do not monkey patch eventlet in unit tests 4 years ago
cast_as_call.py Make eventlet hub use a monotonic clock 5 years ago
conf_fixture.py libvirt: Start populating NUMACell.network_metadata field 3 years ago
fake_block_device.py Make BlockDeviceMapping object support uuid 4 years ago
fake_build_request.py Make eventlet hub use a monotonic clock 5 years ago
fake_console_auth_token.py Add access_url_base to console_auth_tokens table 4 years ago
fake_crypto.py crypto: Remove unused functions 3 years ago
fake_diagnostics.py Make eventlet hub use a monotonic clock 5 years ago
fake_flavor.py test: Store the OutputStreamCapture fixture 4 years ago
fake_hosts.py Enable retry when there are multiple force hosts/nodes 7 years ago
fake_instance.py objects: Update keypairs when saving an instance 1 year ago
fake_ldap.py [3/3]Replace six.iteritems() with .items() 5 years ago
fake_network.py Remove unused stubbing function from test 3 years ago
fake_network_cache_model.py Add ipv6 support to fake network models 7 years ago
fake_notifier.py fake_notifier: Refactor wait_for_versioned_notification 4 years ago
fake_pci_device_pools.py Add numa_node field to PciDevicePool 6 years ago
fake_policy.py Fix a missing policy in test policy data 2 years ago
fake_processutils.py Merge "Stop using mox in unit/fake_processutils.py" 5 years ago
fake_request_spec.py Fix resetting non-persistent fields when saving obj 2 years ago
fake_requests.py Unit test framework: common FakeResponse 3 years ago
fake_server_actions.py Use nova.db.api directly 3 years ago
fake_volume.py Make eventlet hub use a monotonic clock 5 years ago
fake_xvp_console_proxy.py tests: Replace use of CONF with monkey patching 5 years ago
image_fixtures.py Refactor Ironic driver tests as per review comment 7 years ago
matchers.py Removed unnecessary parantheses and fixed formation 5 years ago
policy_fixture.py Implement granular policy rules for placement 3 years ago
test_api_validation.py Fix PatternPropertiesTestCase for py 3.6 3 years ago
test_availability_zones.py Use nova.db.api directly 3 years ago
test_baserpc.py remove unnecessary conf imports 3 years ago
test_block_device.py Remove unused validation code from block_device 5 years ago
test_cache.py Make eventlet hub use a monotonic clock 5 years ago
test_cinder.py Fix bug case by none token context 4 years ago
test_conf.py Configure placement DB context manager for nova-manage/status 3 years ago
test_configdrive2.py Add tests for _get_trees_matching_all() function 3 years ago
test_context.py Use nova.db.api directly 3 years ago
test_crypto.py crypto: Remove unused functions 3 years ago
test_exception.py Add full traceback to ExceptionPayload in versioned notifications 3 years ago
test_fixtures.py Escalate UUID validation warning to error in test 3 years ago
test_flavors.py Remove unused flavor_delete_info() method 3 years ago
test_hacking.py Fix double word hacking test 2 years ago
test_hooks.py Remove core extension list 5 years ago
test_identity.py Adapter raise_exc=False by default 3 years ago
test_instance_types_extra_specs.py objects: Move 'arch' to 'fields.Architecture' 5 years ago
test_iptables_network.py Make eventlet hub use a monotonic clock 5 years ago
test_ipv6.py Fix spelling mistake 5 years ago
test_json_ref.py Transform instance.exists notification 3 years ago
test_loadables.py Refactor Ironic driver tests as per review comment 7 years ago
test_matchers.py Port test_matchers.TestDictMatches.test__str__ to Python 3 5 years ago
test_metadata.py Use nova.db.api directly 3 years ago
test_notifications.py Improve NeutronFixture and remove unncessary stubbing 3 years ago
test_notifier.py Make eventlet hub use a monotonic clock 5 years ago
test_nova_manage.py Fix using template cell urls with nova-manage 3 years ago
test_policy.py Remove support for /os-floating-ip-dns REST API 3 years ago
test_profiler.py Make eventlet hub use a monotonic clock 5 years ago
test_quota.py Use nova.db.api directly 3 years ago
test_rpc.py Use oslo.messaging per-call monitoring 3 years ago
test_safeutils.py Make eventlet hub use a monotonic clock 5 years ago
test_service.py Move conductor wait_until_ready() delay before manager init 3 years ago
test_service_auth.py remove unnecessary conf imports 3 years ago
test_test.py Fix test_rpc_consumer_isolation for oslo.messaging 5.31.0 4 years ago
test_test_utils.py Use nova.db.api directly 3 years ago
test_utils.py Harden placement init under wsgi 3 years ago
test_uuid_sentinels.py Move test_uuid_sentinels to NoDBTestCase 4 years ago
test_versions.py Use stub_out and mock to remove mox: part 2 6 years ago
test_weights.py Add test cases for some classes in objects.fields 6 years ago
test_wsgi.py Refactor WSGI apps and utils to limit imports 3 years ago
utils.py Use nova.db.api directly 3 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