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
Mohammed Naser 7b5cdd7ac0
Revert "Refine waiting for vif plug events during _hard_reboot"
5 years ago
..
api Merge "[placement] re-use existing conf with auth token middleware" into stable/pike 5 years ago
api_samples_test_base
cells Merge "Handle uuids in os-hypervisors API" 6 years ago
cmd Require Placement 1.10 in nova-status upgrade check 6 years ago
compute Merge "Handle glance exception during rotating instance backup" into stable/pike 5 years ago
conductor Store block device mappings in cell0 5 years ago
console conf: remove *_topic config opts 6 years ago
consoleauth conf: remove *_topic config opts 6 years ago
db conf: remove *_topic config opts 6 years ago
fake_loadables
image Merge "Handle glance exception during rotating instance backup" into stable/pike 5 years ago
keymgr
monkey_patch_example
network Merge "Fix possible TypeError in VIF.fixed_ips" into stable/pike 5 years ago
notifications Fix sending legacy instance.update notification 5 years ago
objects Lazy-load instance attributes with read_deleted=yes 5 years ago
pci pci: add uuid field to PciDevice object 6 years ago
scheduler Merge "Proper error handling by _ensure_resource_provider" into stable/pike 5 years ago
servicegroup Fix the display of updated_at time when using memcache driver. 6 years ago
ssl_cert Update SSL cert used in testing 6 years ago
virt Revert "Refine waiting for vif plug events during _hard_reboot" 5 years ago
volume Translate the return value of attachment_create and _update 6 years ago
README.rst
__init__.py
cast_as_call.py Stop using mox stubs in cast_as_call.py 6 years ago
conf_fixture.py Set wsgi.keep_alive=False globally for tests 6 years ago
fake_block_device.py objects: Add attachment_id to BlockDeviceMapping 6 years ago
fake_build_request.py Support tag instances when boot(2/4) 6 years ago
fake_console_auth_token.py
fake_crypto.py
fake_diagnostics.py Added nova objects for intance diagnostics 6 years ago
fake_flavor.py
fake_hosts.py
fake_instance.py Add tags to instance.create Notification 6 years ago
fake_ldap.py [3/3]Replace six.iteritems() with .items() 6 years ago
fake_network.py Removed unnecessary parantheses and fixed formation 6 years ago
fake_network_cache_model.py
fake_notifier.py Short circuit notifications when not enabled 6 years ago
fake_pci_device_pools.py
fake_policy.py Add policy granularity to the Flavors API 6 years ago
fake_processutils.py
fake_request_spec.py Don't persist could-be-stale InstanceGroup fields in RequestSpec 5 years ago
fake_server_actions.py
fake_volume.py Remove check_detach 6 years ago
fake_xvp_console_proxy.py tests: Replace use of CONF with monkey patching 6 years ago
image_fixtures.py
matchers.py Removed unnecessary parantheses and fixed formation 6 years ago
policy_fixture.py update policy UT fixtures 6 years ago
test_api_validation.py Stop using deprecated 'message' attribute in Exception 6 years ago
test_availability_zones.py Avoid lazy-load error when getting instance AZ 6 years ago
test_baserpc.py conf: remove *_topic config opts 6 years ago
test_block_device.py Remove unused validation code from block_device 6 years ago
test_cache.py Do not rely on dogpile internals for mocks 6 years ago
test_cinder.py Fix ksa mocking in test_cinderclient_unsupported_v1 6 years ago
test_conf.py conf: Remove 'virt' file 6 years ago
test_configdrive2.py Merge "Remove mox from nova/tests/unit/test_configdrive2.py" 6 years ago
test_context.py Regenerate context during targeting 5 years ago
test_crypto.py Replace uuid4() with uuidsentinel 6 years ago
test_exception.py Make NovaException format errors fatal for tests 6 years ago
test_fixtures.py add new test fixture flavor with extra_specs 6 years ago
test_flavors.py add new test fixture flavor with extra_specs 6 years ago
test_hacking.py remove hacking rule that enforces log translation 6 years ago
test_hooks.py
test_identity.py Enable custom certificates for keystone communication 5 years ago
test_instance_types_extra_specs.py objects: Move 'arch' to 'fields.Architecture' 6 years ago
test_iptables_network.py Use more specific asserts in tests 6 years ago
test_ipv6.py
test_loadables.py
test_matchers.py Port test_matchers.TestDictMatches.test__str__ to Python 3 6 years ago
test_metadata.py Handle InstanceNotFound when setting password via metadata 5 years ago
test_notifications.py Make notification publisher_id consistent 6 years ago
test_notifier.py Replace messaging.get_transport with get_rpc_transport 6 years ago
test_nova_manage.py Unmap compute nodes when deleting host mapping 5 years ago
test_policy.py Merge "Add policy granularity to the Flavors API" 6 years ago
test_profiler.py Remove nova-cert 6 years ago
test_quota.py Make Quotas object favor the API database 6 years ago
test_rpc.py Make TestRPC inherit from the base nova TestCase 5 years ago
test_safeutils.py Allow wrapping of closures 6 years ago
test_service.py service: use restart_method='mutate' for all services 6 years ago
test_service_auth.py Fix NoneType error when [service_user] is misconfigured 5 years ago
test_test.py Make NovaException format errors fatal for tests 6 years ago
test_test_utils.py
test_utils.py Move the last_bytes util method to libvirt 6 years ago
test_uuid_sentinels.py
test_versions.py
test_weights.py
test_wsgi.py Skip unit tests for SSL + py3 6 years ago
utils.py Make ConductorTaskTestCase run with 2 cells 5 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↩︎