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 051a51f521 Merge "Sanity check instance mapping during scheduling" into stable/stein 7 months ago
..
api Add checks for volume status when rebuilding 9 months ago
cells Use uuidsentinel from oslo.utils 3 years ago
cmd Fix wrong assertions in unit tests 2 years ago
compute Merge "post live migration: don't call Neutron needlessly" into stable/stein 9 months ago
conductor Sanity check instance mapping during scheduling 9 months ago
conf Assorted cleanups from numa-aware-vswitches series 3 years ago
console Mask the token used to allow access to consoles 1 year ago
consoleauth Mask the token used to allow access to consoles 1 year ago
db Don't delete compute node, when deleting service other than nova-compute 2 years ago
fake_loadables move all tests to nova/tests/unit 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 Remove CellMappingPayload database_connection and transport_url fields 2 years ago
objects objects: Update keypairs when saving an instance 11 months ago
pci Fix non-existent method of Mock 2 years ago
privsep Move create_tap_dev into privsep. 2 years ago
scheduler Cache host to cell mapping in HostManager 2 years ago
servicegroup Fix deprecation warning for threadgroup.add_timer 2 years ago
ssl_cert Update SSL cert used in testing 4 years ago
virt Merge "Allow tap interface with multiqueue" into stable/stein 8 months ago
volume Add retry to cinder API calls related to volume detach 1 year ago
README.rst move all tests to nova/tests/unit 7 years ago
__init__.py Do not monkey patch eventlet in unit tests 4 years ago
cast_as_call.py Stop using mox stubs in cast_as_call.py 4 years ago
conf_fixture.py libvirt: Start populating NUMACell.network_metadata field 3 years ago
fake_block_device.py Use uuidsentinel from oslo.utils 3 years ago
fake_build_request.py Use uuidsentinel from oslo.utils 3 years ago
fake_console_auth_token.py Use uuidsentinel from oslo.utils 3 years ago
fake_crypto.py crypto: Remove unused functions 3 years ago
fake_diagnostics.py Added nova objects for intance diagnostics 4 years ago
fake_flavor.py Add Flavor.description attribute 4 years ago
fake_hosts.py Change queries for network services to use binary instead of topic 6 years ago
fake_instance.py objects: Update keypairs when saving an instance 11 months ago
fake_ldap.py [3/3]Replace six.iteritems() with .items() 4 years ago
fake_network.py Use uuidsentinel from oslo.utils 3 years ago
fake_network_cache_model.py Add ipv6 support to fake network models 7 years ago
fake_notifier.py Fix jsonutils.to_primitive UserWarning 3 years ago
fake_pci_device_pools.py Add numa_node field to PciDevicePool 6 years ago
fake_policy.py Remove deprecated 'os-server-groups' policy 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 Use uuidsentinel from oslo.utils 3 years ago
fake_xvp_console_proxy.py tests: Replace use of CONF with monkey patching 5 years ago
image_fixtures.py Merge image_size extension response into image view builder 3 years ago
matchers.py fix bug with XML matcher handling missing children 2 years ago
policy_fixture.py Implement granular policy rules for placement 3 years ago
test_api_validation.py Add python 3.7 unit and functional tox jobs 3 years ago
test_availability_zones.py Use uuidsentinel from oslo.utils 3 years ago
test_baserpc.py remove unnecessary conf imports 3 years ago
test_block_device.py Add method to generate device names universally 2 years ago
test_cache.py Do not rely on dogpile internals for mocks 4 years ago
test_cinder.py Make [cinder]/catalog_info no longer require a service_name 3 years ago
test_conf.py Configure placement DB context manager for nova-manage/status 3 years ago
test_configdrive2.py Merge "We don't need utils.trycmd any more." 3 years ago
test_context.py Remove NovaException logging from scatter_gather_cells 3 years ago
test_crypto.py crypto: Remove unused functions 3 years ago
test_exception.py Convert exception messages to strings 3 years ago
test_fake_notifier.py Raise error on timeout in wait_for_versioned_notifications 3 years ago
test_fixtures.py Add context.target_cell() stub to DownCellFixture 2 years ago
test_flavors.py Add python 3.7 unit and functional tox jobs 3 years ago
test_hacking.py Fix double word hacking test 2 years ago
test_hooks.py Stop using mox stubs in nova/tests/unit 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 Use more specific asserts in tests 4 years ago
test_ipv6.py Fix test_ipv6 and simplify to_global() 5 years ago
test_json_ref.py Transform instance.exists notification 3 years ago
test_loadables.py move all tests to nova/tests/unit 7 years ago
test_matchers.py fix bug with XML matcher handling missing children 2 years ago
test_metadata.py Allow run metadata api per cell 2 years ago
test_notifications.py Use uuidsentinel from oslo.utils 3 years ago
test_notifier.py Replace messaging.get_transport with get_rpc_transport 4 years ago
test_nova_manage.py Populate InstanceMapping.user_id during migrations and schedules 2 years ago
test_policy.py Fix target used in nova.policy.check_is_admin 2 years ago
test_profiler.py Remove nova-cert 4 years ago
test_quota.py Merge "quota: remove defaults kwarg in get_project_quotas" 2 years ago
test_rpc.py Fix jsonutils.to_primitive UserWarning 3 years ago
test_safeutils.py Allow wrapping of closures 4 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 Switch to using os-resource-classes 2 years ago
test_versions.py Use stub_out and mock to remove mox: part 2 6 years ago
test_weights.py Per aggregate scheduling weight 2 years ago
test_wsgi.py Refactor WSGI apps and utils to limit imports 3 years ago
utils.py Transform missing delete notifications 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