Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
python3-dmapi / usr / lib / python3.6 / site-packages / dmapi / __pycache__ / test.cpython-36.pyc
Size: Mime:
3

ÿn‚abqã@sêdZddlZejddddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlmZddlmZddlmZddlmZdd	lmZdd
lmZddlmZddlm Z ddl!mZ"dd
l#m$Z$ddl%Z%ddl&Z&ddl'm(Z(ddl'm)Z)ddl'm*Z*ddl+m,Z-ddl.m/Z/ddl'm0Z0ddl1m2Z3ddl4mZ5ddl6m7Z7ddl6m8Z8ddl4m9Z:ddl'm;Z;ddl<m=Z=ej>Z>ej?e>ƒe>j@ddƒejAe>dƒejBe>ƒd@ZCd!ZDe%jErÞejFZFnejGd"d#„ƒZFGd$d%„d%ejHƒZIGd&d'„d'eJƒZKGd(d)„d)eLƒZMd*d+„ZNeNƒGd,d-„d-eLƒZOeOjPƒGd.d/„d/e&jQƒZQGd0d1„d1eLƒZRe%jSejTƒGd2d3„d3e&jQƒƒZUGd4d5„d5ejHƒZVGd6d7„d7eQƒZWGd8d9„d9eWƒZXGd:d;„d;eLƒZYGd<d=„d=eLƒZZGd>d?„d?eLƒZ[dS)Az{Base classes for our unit tests.

Allows overriding of flags for use of fakes, and some black magic for
inline callbacks.

éNF)Úos)Úcore)Ú	lockutils)Úcfg)Úfixture)Ú
logging_error)Úlog)Ú	jsonutils)Ú	timeutils)Ú
moxstubout)Úcontext)Údb)Ú	exception)Úmanager)Úopenstack_driver)Úobjects)Úbase)Úfixtures)Úconf_fixture)Úpolicy_fixture)Úuuidsentinel)Úutils)ÚimagesZ
use_stderrÚnovaÚTrueÚtrueÚ1ÚyesZcell1c
's,tjƒ‰‡fdd„|DƒVWdQRXdS)Ncsg|]}ˆj|ƒ‘qS©)Ú
enter_context)Ú.0Úc)Ústackrú/usr/lib/python3.6/test.pyú
<listcomp>Gsznested.<locals>.<listcomp>)Ú
contextlibÚ	ExitStack)Zcontextsr)r"r#ÚnestedDs
r'cs*eZdZdZddd„Z‡fdd„Z‡ZS)ÚSampleNetworksz'Create sample networks in the database.NcCs
||_dS)N)Úhost)Úselfr)rrr#Ú__init__NszSampleNetworks.__init__csŽtt|ƒjƒtjƒ}tj|jd}tj	p.tj
}|j|ddtjtj
tjtjtjtjtj|tjtjtjdxtj|ƒD]}|j||ƒqvWdS)N)r)Útestz
10.0.0.0/8)
ZlabelZcidrÚ
multi_hostÚnum_networksÚnetwork_sizeZcidr_v6ÚgatewayÚ
gateway_v6ZbridgeÚbridge_interfaceÚ	vpn_startÚ
vlan_startZdns1)Úsuperr(ÚsetUprZget_admin_contextÚnetwork_managerZVlanManagerr)ÚCONFZflat_interfaceZvlan_interfaceZcreate_networksr-r.r/Zfixed_range_v6r0r1Zflat_network_bridger3r4Zflat_network_dnsr
Znetwork_get_allZset_network_host)r*ÚctxtZnetworkr2Znet)Ú	__class__rr#r6Qs(
zSampleNetworks.setUp)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+r6Ú
__classcell__rr)r:r#r(Js
r(c@seZdZdS)ÚTestingExceptionN)r;r<r=rrrr#r@hsr@c@seZdZdd„Zdd„ZdS)ÚskipIfcCs||_||_dS)N)Ú	conditionÚreason)r*rBrCrrr#r+mszskipIf.__init__csx|j‰|j‰tjˆƒr4tjˆƒ‡‡‡fdd„ƒ}|Stjˆƒrltˆdƒ‰tjˆƒ‡‡‡fdd„ƒ}|ˆ_ˆSt	dƒ‚dS)Ncsˆrtjjˆƒ‚ˆ||ŽS)N)Ú	testtoolsÚTestCaseÚ
skipException)ÚargsÚkwargs)rBÚfunc_or_clsrCrr#Úwrappedusz skipIf.__call__.<locals>.wrappedr6cs$ˆrtjjˆƒ‚ˆ|f|ž|ŽdS)N)rDrErF)r*rGrH)rBÚ	orig_funcrCrr#Únew_funcsz!skipIf.__call__.<locals>.new_funcz5skipUnless can be used only with functions or classes)
rBrCÚinspectÚ
isfunctionÚsixÚwrapsZisclassÚgetattrr6Ú	TypeError)r*rIrJrLr)rBrIrKrCr#Ú__call__qs


zskipIf.__call__N)r;r<r=r+rSrrrr#rAlsrAcCsdd„}|tjjƒtj_dS)Ncs‡fdd„}|S)Ncs4ddddg}|jdƒr*||kr*td|ƒ‚ˆ||ƒS)NZassert_called_withZassert_called_once_withZassert_has_callsZassert_any_callsÚassertz$%s is not a valid mock assert method)Ú
startswithÚAttributeError)Ú_selfÚnameZ
valid_asserts)rJrr#ÚwrapperŽszf_patch_mock_to_raise_for_invalid_assert_calls.<locals>.raise_for_invalid_assert_calls.<locals>.wrapperr)rJrYr)rJr#Úraise_for_invalid_assert_callsszU_patch_mock_to_raise_for_invalid_assert_calls.<locals>.raise_for_invalid_assert_calls)ÚmockZMockÚ__getattr__)rZrrr#Ú-_patch_mock_to_raise_for_invalid_assert_callsŒsr]c@s,eZdZejjZedd„ƒZe	dd„ƒZ
dS)ÚNovaExceptionReraiseFormatErrorcCs|jtj_dS)N)Ú_wrap_log_exceptionrÚ
NovaExceptionÚ_log_exception)Úclsrrr#Úpatch¦sz%NovaExceptionReraiseFormatError.patchcCs tjƒ}tj|ƒtj|ŽdS)N)ÚsysÚexc_infor^Úreal_log_exceptionrOZreraise)r*rerrr#r_ªs
z3NovaExceptionReraiseFormatError._wrap_log_exceptionN)r;r<r=rr`rarfÚclassmethodrcÚstaticmethodr_rrrr#r^£sr^cs„eZdZdZdZdZdZdZdZdZ	‡fdd„Z
dd„Zd	d
„Zdd„Z
d
d„Zdd„Zddd„Zdd„Zddd„Zdd„Z‡ZS)rEzŒTest case base class for all unit tests.

    Due to the slowness of DB access, please consider deriving from
    `NoDBTestCase` first.
    TFécshtt|ƒjƒ|jtjtjjddƒ|j	ƒƒ|jt
jƒƒ|jt
jƒƒ|jt
jƒƒtjƒ|_|j|jƒtjƒ|_|j|jƒ|jr¼|jt
jƒƒj}|jtjtjƒƒ|_|jj|dd|jtjtƒƒ|jrâ|jtjdƒƒtj ddgdd	d
t!j"_#t$j$t!j%j&j'ƒ|_(|j)|j*ƒt+j,j-ƒddl.m/}g|_0it1_2gt1_0i|_3i|_4|j5r€|jtj6dd
ƒ|j7ƒ|jtj8ƒƒn$|j9s¤|jtj:ƒƒ|jtj;ƒƒ|jtj<ƒƒ|jt=j>ƒƒd
t?_@dt+jA_Bd
t+jA_Cd
tD_E|jtFjGƒƒ}|jH|_H|jI|_I|j)|jJƒ|jt
jKdƒƒ|jtLjMƒƒ|_N|jtjOƒƒitP_Q|jtjRƒƒ|jtjSƒƒ|jTdddd
S)z;Run before each test method to initialize test environment.ZOS_TEST_TIMEOUTrÚoslo_concurrency)Ú	lock_pathÚgroupz	nova.testZdriverr,Zoslo_messaging_notifications)rlN)Úapirm)ZdatabaseFZ
http_proxygZfilter_scheduler)Zbuild_failure_weight_multiplierrl)Ur5rEr6Ú
useFixtureÚ
nova_fixturesZTimeoutrÚenvironÚgetÚTIMEOUT_SCALING_FACTORrZNestedTempfileZTempHomeDirÚlog_fixtureZ get_logging_handle_error_fixtureZOutputStreamCaptureÚoutputZStandardLoggingZstdlogÚREQUIRES_LOCKINGZTempDirÚpathÚconfig_fixtureZConfigrr8rÚconfigrZConfFixtureÚSTUB_RPCZ
RPCFixtureZset_defaultÚobjects_baseZ
NovaObjectZindirection_apiÚcopyÚNovaObjectRegistryÚ	_registryÚ_obj_classesÚ_base_test_obj_backupÚ
addCleanupÚ_restore_obj_registryrZServiceZclear_min_version_cacheZnova.computermZCELLSrZ
CELL_CACHEÚ
cell_mappingsÚ
host_mappingsÚUSES_DBZDatabaseÚ_setup_cellsZDefaultFlavorsFixtureÚUSES_DB_SELFZSingleCellSimpleZDatabasePoisonFixtureZWarningsFixtureÚovo_fixtureZStableObjectJsonFixturerZ_IS_NEUTRONZresource_providerZ_TRAITS_SYNCEDZ	_RC_CACHErZQEMU_VERSIONrZ
MoxStuboutZmoxZstubsÚ_clear_attrsZEnvironmentVariablerZ
PolicyFixtureZpolicyZPoisonFunctionsrZDRIVER_CACHEZ"ForbidNewLegacyNotificationFixtureZPrivsepNoHelperFixtureÚflags)r*rkrmZmox_fixture)r:rr#r6Ñst





zTestCase.setUpc	CsÂtjƒ}tjƒ}d}tj|tjjd|tjjd}|jƒ||j|j	<|j
tjjƒx`t|jƒD]R}d|d}t
t|ƒ}tj|||||d}|jƒ||j|<|j
||dkdq^W|j|ƒdS)	zóSetup a normal cellsv2 environment.

        This sets up the CellDatabase fixture with two cells, one cell0
        and one normal cell. CellMappings are created for both so that
        cells-aware code can find those two databases.
        zfake://nowhere/Zcell0)rÚuuidrXZ
transport_urlZdatabase_connectionzcell%irir)ÚdefaultN)roZ
CellDatabasesrÚget_contextrZCellMappingZ
CELL0_UUIDÚcreater‚rXZadd_cell_databaseÚrangeÚNUMBER_OF_CELLSrQÚuuidsrn)	r*Zcelldbsr9Zfake_transportZc0ÚxrXrŠÚcellrrr#r…Es2

zTestCase._setup_cellscCs|jtjj_dS)N)rrzr|r}r~)r*rrr#rkszTestCase._restore_obj_registrycCs6x0dd„t|jjƒƒDƒD]}|dkr|j|=qWdS)NcSsg|]}|ddkr|‘qS)rÚ_r)r Úkrrr#r$ssz)TestCase._clear_attrs.<locals>.<listcomp>Úid)ÚlistÚ__dict__Úkeys)r*Úkeyrrr#rˆoszTestCase._clear_attrscCs|jtj||ƒƒdS)aUReplace a function for the duration of the test.

        Use the monkey patch fixture to replace a function for the
        duration of a test. Useful when you want to provide fake
        methods instead of mocks during testing.

        This should be used instead of self.stubs.Set (which is based
        on mox) going forward.
        N)rnrZMonkeyPatch)r*ÚoldÚnewrrr#Ústub_out|s
zTestCase.stub_outcKs8|jddƒ}x&t|jƒƒD]\}}tj|||ƒqWdS)z#Override flag variables for a test.rlN)Úpopr–Úitemsr8Úset_override)r*Úkwrlr”Úvrrr#r‰ˆszTestCase.flagsNcKs†|dkrj|jrjtjƒ}|j|jdtƒ}tj||p4||d}|jƒ||j	|j
<|dk	rj|jtj
|dƒ|jtj||f|Žƒ}|jS)NÚcomputer’)rr)Zcell_mapping)r))r„rrŒr‚rÚ
CELL1_NAMErZHostMappingrrƒr)rnroZConfPatcherZServiceFixtureZservice)r*rXr)rHr9r’ZhmZsvcrrr#Ú
start_serviceŽszTestCase.start_servicecCs|jƒd|j_|jƒdS)zxRestart a compute service in a realistic way.

        :param:compute: the nova-compute service to be restarted
        N)ÚstoprZ_resource_trackerÚstart)r*r¢rrr#Úrestart_compute_service¢sz TestCase.restart_compute_serviceÚcsÔt|tjƒrtj|ƒ}t|tjƒr,tj|ƒ}‡fdd„‰d	‡‡‡fdd„	‰yˆ||ƒWnvtjjk
rÎ}zV|jj	ƒ}|r„d|}dt
j|ƒt
j|ƒ||f}t|ƒ}||_
||_||_|‚WYdd}~XnXdS)
a“Asserts that 2 complex data structures are json equivalent.

        We use data structures which serialize down to json throughout
        the code, and often times we just need to know that these are
        json equivalent. This means that list order is not important,
        and should be sorted.

        Because this is a recursive set of assertions, when failure
        happens we want to expose both the local failure and the
        global view of the 2 data structures being compared. So a
        MismatchError which includes the inner failure as the
        mismatch, and the passed in expected / observed as matchee /
        matcher.

        csRt|ttfƒst|tjƒr"t|ƒSt|tƒrN‡fdd„t|jƒƒDƒ}t|ƒS|S)Nc3s"|]\}}ˆ|ƒˆ|ƒfVqdS)Nr)r r™Úvalue)Úsort_keyrr#ú	<genexpr>Ïsz=TestCase.assertJsonEqual.<locals>.sort_key.<locals>.<genexpr>)Ú
isinstanceÚsetr–ÚdatetimeÚstrÚdictržÚsorted)r‘rž)rªrr#rªËs

z*TestCase.assertJsonEqual.<locals>.sort_keyÚrootc	stˆtƒr¸tˆtƒr¸ˆjtˆƒtˆƒd|tˆjƒƒtˆjƒƒttˆjƒƒjtˆjƒƒƒƒfƒtˆƒ}tˆƒ}ˆj||d|ƒx2tt	j
ˆƒƒD] }ˆˆ|ˆ||d|ƒq’WnÔtˆtttfƒoÖtˆtttfƒrzˆjtˆƒtˆƒd|tˆˆdtˆˆd‡‡fdd„tj
ˆˆƒDƒfƒttˆˆdƒ}ttˆˆdƒ}xFttˆƒƒD]"}ˆt|ƒt|ƒ|d|ƒqRWnˆjˆˆd	|ƒdS)
NzGpath: %s. Different dict key sets
expected=%s
observed=%s
difference=%sz!path: %s. Dict keys are not equalz.%szDpath: %s. Different list items
expected=%s
observed=%s
difference=%s)r™cs g|]}|ˆks|ˆkr|‘qSrr)r Úa)ÚexpectedÚobservedrr#r$ósz;TestCase.assertJsonEqual.<locals>.inner.<locals>.<listcomp>z[%s]zpath: %s)r¬r°ÚassertEqualÚlenr±r˜r–r­Úsymmetric_differencerOZiterkeysÚtupleÚ	itertoolsÚchainÚiterrŽÚnext)	r´rµrvZ
expected_keysZ
observed_keysr™Zexpected_values_iterZobserved_values_iterÚi)Úinnerr*rª)r´rµr#r¿Ôs>


"

"z'TestCase.assertJsonEqual.<locals>.innerzmessage: %s
z*
expected:
%s
actual:
%s
difference:
%s
%sN)r²)r¬rOZstring_typesr	ÚloadsrDÚmatchersZ
MismatchErrorZmismatchZdescribeÚpprintZpformatÚAssertionErrorr´rµÚ
difference)r*r´rµÚmessageÚerÄÚmsgÚerrorr)r¿r*rªr#ÚassertJsonEqual¶s,

	+
zTestCase.assertJsonEqualcCsªdd„}|jj}||ƒ}||ƒ}g}x&t|jƒƒD]}||kr2|j|ƒq2W|jg|d|ƒxFt|jƒƒD]6}tj||ƒ}	tj||ƒ}
|j|	|
d||fƒqlWdS)NcSs>i}dd„}x,tj||ƒD]\}}|jdƒr.q|||<qW|S)NcSstj|ƒptj|ƒS)N)rMÚismethodrN)Úobjectrrr#ÚfindmethodsszPTestCase.assertPublicAPISignatures.<locals>.get_public_apis.<locals>.findmethodsr“)rMÚ
getmembersrU)ÚinstÚmethodsrÌrXr©rrr#Úget_public_apiss
z;TestCase.assertPublicAPISignatures.<locals>.get_public_apisz'public APIs not listed in base class %sz!%s args don't match base class %s)r:r;r±r˜Úappendr¶rMÚ
getargspec)r*ZbaseinstrÎrÐZ	baseclassZbasemethodsZimplmethodsZ
extranamesrXZbaseargsZimplargsrrr#ÚassertPublicAPISignaturess"z"TestCase.assertPublicAPISignatures)N)r¨)r;r<r=r>r„r†ruryrrrr6r…rrˆrœr‰r¤r§rÉrÓr?rr)r:r#rE·s"t&


ZrEc@seZdZdZdd„ZdS)ÚAPICoverageNcCsJ|j|jƒdd„t|jƒDƒ}dd„t|ƒDƒ}|j|tjj|ƒƒdS)NcSsg|]}|jdƒs|‘qS)r“)rU)r r‘rrr#r$9sz0APICoverage.test_api_methods.<locals>.<listcomp>cSs"g|]}|jdƒr|dd…‘qS)Ztest_éN)rU)r r‘rrr#r$;s)ZassertIsNotNoneÚ	cover_apiÚdirZ
assertThatrDrÁZContainsAll)r*Zapi_methodsZtest_methodsrrr#Útest_api_methods7szAPICoverage.test_api_methods)r;r<r=rÖrØrrrr#rÔ3srÔcsVeZdZdZejdd„ƒZ‡fdd„Zedd„ƒZ	edd	„ƒZ
d
d„Zdd
„Z‡Z
S)ÚSubclassSignatureTestCasea<Ensure all overriden methods of all subclasses of the class
    under test exactly match the signature of the base class.

    A subclass of SubclassSignatureTestCase should define a method
    _get_base_class which:

    * Returns a base class whose subclasses will all be checked
    * Ensures that all subclasses to be tested have been imported

    SubclassSignatureTestCase defines a single test, test_signatures,
    which does a recursive, depth-first check of all subclasses, ensuring
    that their method signatures are identical to those of the base class.
    cCs
tƒ‚dS)N)ÚNotImplementedError)r*rrr#Ú_get_base_classQsz)SubclassSignatureTestCase._get_base_classcs|jƒ|_tt|ƒjƒdS)N)rÛrr5rÙr6)r*)r:rr#r6Us
zSubclassSignatureTestCase.setUpcCsVi}xLtj|tjƒD]:\}}|dkr&qxt|dƒr>t|dƒ}q(Wtj|ƒ||<qW|S)z>Return a dict of method_name->argspec for every method of cls.r+Ú__wrapped__)rMrÍrÊÚhasattrrQrÒ)rbZargspecsrXÚmethodrrr#Ú
_get_argspecsZs
z'SubclassSignatureTestCase._get_argspecscCsd|j|jfS)z'Return the fully qualified name of cls.z%s.%s)r<r;)rbrrr#Ú_clsnamezsz"SubclassSignatureTestCase._clsnamec
Csxxr|jƒD]f}|j|ƒ}xJt|jƒƒD]:\}}||kr&|j|||d|j|ƒ|j|ƒ|dœƒq&W|j||ƒq
WdS)Nz@Signature of %(sub)s.%(method)s differs from superclass %(base)s)rÚsubrÞ)Ú__subclasses__rßr–ržr¶ràÚ_test_signatures_recurse)r*rZ
base_argspecsráZsub_argspecsrÞZsub_argspecrrr#rãs
z2SubclassSignatureTestCase._test_signatures_recursecCs|j|j|j|jƒƒdS)N)rãrrß)r*rrr#Útest_signatures“sz)SubclassSignatureTestCase.test_signatures)r;r<r=r>ÚabcÚabstractmethodrÛr6rhrßràrãrär?rr)r:r#rÙBs rÙcs eZdZdZ‡fdd„Z‡ZS)ÚTimeOverridez*Fixture to start and remove time override.cs&tt|ƒjƒtjƒ|jtjƒdS)N)r5rçr6r
Zset_time_overrider€Zclear_time_override)r*)r:rr#r6šszTimeOverride.setUp)r;r<r=r>r6r?rr)r:r#rç—srçc@seZdZdZdZdS)ÚNoDBTestCasezº`NoDBTestCase` differs from TestCase in that DB access is not supported.
    This makes tests run significantly faster. If possible, all new tests
    should derive from this class.
    FN)r;r<r=r>r„rrrr#rè srèc@seZdZdd„ZdS)ÚBaseHookTestCasecCs"|jt|dƒƒ|j||jƒdS)NÚ
__hook_name__)Z
assertTruerÝr¶rê)r*Z
expected_nameÚfuncrrr#Úassert_has_hook©sz BaseHookTestCase.assert_has_hookN)r;r<r=rìrrrr#ré¨sréc@s0eZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)Ú	MatchTypeaIMatches any instance of a specified type

    The MatchType class is a helper for use with the
    mock.assert_called_with() method that lets you
    assert that a particular parameter has a specific
    data type. It enables strict check than the built
    in mock.ANY helper, and is the equivalent of the
    mox.IsA() function from the legacy mox library

    Example usage could be:

      mock_some_method.assert_called_once_with(
            "hello",
            MatchType(objects.Instance),
            mock.ANY,
            "world",
            MatchType(objects.KeyPair))
    cCs
||_dS)N)Úwanttype)r*rîrrr#r+ÁszMatchType.__init__cCst|ƒ|jkS)N)Útyperî)r*Úotherrrr#Ú__eq__ÄszMatchType.__eq__cCst|ƒ|jkS)N)rïrî)r*rðrrr#Ú__ne__ÇszMatchType.__ne__cCsdt|jƒdS)Nz<MatchType:ú>)r¯rî)r*rrr#Ú__repr__ÊszMatchType.__repr__N)r;r<r=r>r+rñròrôrrrr#rí®s
ríc@s0eZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)Ú
MatchObjPrimsz&Matches objects with equal primitives.cCs
||_dS)N)Úwant_obj)r*rörrr#r+ÐszMatchObjPrims.__init__cCstj||jƒS)N)rzZobj_equal_primsrö)r*rðrrr#rñÓszMatchObjPrims.__eq__cCs||jkS)N)rö)r*rðrrr#ròÖszMatchObjPrims.__ne__cCsdt|jƒdS)Nz<MatchObjPrims:ró)r¯rö)r*rrr#rôÙszMatchObjPrims.__repr__N)r;r<r=r>r+rñròrôrrrr#rõÎs
rõc@s0eZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)ÚContainKeyValuea]Checks whether a key/value pair is in a dict parameter.

    The ContainKeyValue class is a helper for use with the
    mock.assert_*() method that lets you assert that a particular
    dict contain a key/value pair. It enables strict check than
    the built in mock.ANY helper, and is the equivalent of the
    mox.ContainsKeyValue() function from the legacy mox library

    Example usage could be:

      mock_some_method.assert_called_once_with(
            "hello",
            ContainKeyValue('foo', bar),
            mock.ANY,
            "world",
            ContainKeyValue('hello', world))
    cCs||_||_dS)N)ÚwantkeyÚ	wantvalue)r*rørùrrr#r+ïszContainKeyValue.__init__cCs.y||j|jkSttfk
r(dSXdS)NF)rørùÚKeyErrorrR)r*rðrrr#rñószContainKeyValue.__eq__cCs.y||j|jkSttfk
r(dSXdS)NT)rørùrúrR)r*rðrrr#ròùszContainKeyValue.__ne__cCs dt|jƒdt|jƒdS)Nz<ContainKeyValue: key z and value ró)r¯rørù)r*rrr#rôÿszContainKeyValue.__repr__N)r;r<r=r>r+rñròrôrrrr#r÷Ýs
r÷)rrrr)\r>ZeventletZmonkey_patchrår%r{r®rMrºrrÂrdrr[Z
oslo_cacherÚcacherjrZoslo_configrrrwZoslo_log.fixturerrsZoslo_logrZloggingZoslo_serializationr	Z
oslo_utilsr
Zoslo_versionedobjectsr‡ZoslotestrrOrDrrr
rZnova.networkrr7Znova.network.security_grouprrZnova.objectsrrzZ
nova.testsroZnova.tests.unitrrrrrZ	nova.virtrr8Zregister_optionsrŸZsetupZ	configureZ_TRUE_VALUESr£ZPY2r'ÚcontextmanagerZFixturer(Ú	Exceptionr@rËrAr]r^rcrErÔZ
add_metaclassÚABCMetarÙrçrèrérírõr÷rrrr#Ú<module>	s†

 ~
T