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 / dist-packages / dmapi / __pycache__ / test.cpython-35.pyc
Size: Mime:


èáþ\bqã@sdZddlZejddƒ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>ƒdddd fZCd!ZDe%jErž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)@z{Base classes for our unit tests.

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

éNÚosF)Ú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
's2tjƒ‰‡fdd†|DƒVWdQRXdS)Ncsg|]}ˆj|ƒ‘qS©)Ú
enter_context)Ú.0Úc)Ústackrú,/usr/lib/python3/dist-packages/dmapi/test.pyú
<listcomp>Gs	znested.<locals>.<listcomp>)Ú
contextlibÚ	ExitStack)Zcontextsr)r"r#ÚnestedDsr'cs7eZdZdZddd„Z‡fdd†Z‡S)ÚSampleNetworksz'Create sample networks in the database.NcCs
||_dS)N)Úhost)Úselfr)rrr#Ú__init__NszSampleNetworks.__init__csítt|ƒjƒtjƒ}tjd|jƒ}tj	pCtj
}|j|dddddtjdtj
dtjd	tjd
tjdtjdtjd
|dtjdtjdtjƒ
x'tj|ƒD]}|j||ƒqÏWdS)Nr)ÚlabelÚtestZcidrz
10.0.0.0/8Ú
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/r0Zfixed_range_v6r1r2Zflat_network_bridger4r5Zflat_network_dnsr
Znetwork_get_allZset_network_host)r*ÚctxtÚnetworkr3Únet)Ú	__class__rr#r7Qs(									
zSampleNetworks.setUp)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r+r7rr)r=r#r(Jsr(c@seZdZdS)ÚTestingExceptionN)r>r?r@rrrr#rBhsrBc@s(eZdZdd„Zdd„ZdS)ÚskipIfcCs||_||_dS)N)Ú	conditionÚreason)r*rDrErrr#r+ms	zskipIf.__init__cs®|j‰|j‰tjˆƒrLtjˆƒ‡‡‡fdd†ƒ}|Stjˆƒržtˆdƒ‰tjˆƒ‡‡‡fdd†ƒ}|ˆ_ˆSt	dƒ‚dS)Ncs%ˆrtjjˆƒ‚ˆ||ŽS)N)Ú	testtoolsÚTestCaseÚ
skipException)ÚargsÚkwargs)rDÚfunc_or_clsrErr#Úwrappedusz skipIf.__call__.<locals>.wrappedr7cs,ˆrtjjˆƒ‚ˆ|||ŽdS)N)rFrGrH)r*rIrJ)rDÚ	orig_funcrErr#Únew_funcsz!skipIf.__call__.<locals>.new_funcz5skipUnless can be used only with functions or classes)
rDrEÚinspectÚ
isfunctionÚsixÚwrapsÚisclassÚgetattrr7Ú	TypeError)r*rKrLrNr)rDrKrMrEr#Ú__call__qs		''	zskipIf.__call__N)r>r?r@r+rVrrrr#rClsrCcCs(dd„}|tjjƒtj_dS)Ncs‡fdd†}|S)NcsJddddg}|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)rLrr#ÚwrapperŽs	
zf_patch_mock_to_raise_for_invalid_assert_calls.<locals>.raise_for_invalid_assert_calls.<locals>.wrapperr)rLr\r)rLr#Úraise_for_invalid_assert_callsszU_patch_mock_to_raise_for_invalid_assert_calls.<locals>.raise_for_invalid_assert_calls)ÚmockZMockÚ__getattr__)r]rrr#Ú-_patch_mock_to_raise_for_invalid_assert_callsŒsr`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_inforaÚreal_log_exceptionrQÚreraise)r*rhrrr#rbªs
z3NovaExceptionReraiseFormatError._wrap_log_exceptionN)r>r?r@rrcrdriÚclassmethodrfÚstaticmethodrbrrrr#ra£sracs¾eZdZdZdZdZdZdZdZdZ	‡fdd†Z
dd„Zd	d
„Zdd„Z
d
d„Zdd„Zddd„Zdd„Zddd„Zdd„Z‡S)rGzŒTest case base class for all unit tests.

    Due to the slowness of DB access, please consider deriving from
    `NoDBTestCase` first.
    TFécsdtt|ƒjƒ|jtjtjjddƒ|j	ƒƒ|jt
jƒƒ|jt
jƒƒ|jt
jƒƒtjƒ|_|j|jƒtjƒ|_|j|jƒ|jr
|jt
jƒƒj}|jtjtjƒƒ|_|jjd|ddƒ|jtjtƒƒ|jrB|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|j5r|jtj6dd
ƒƒ|j7ƒ|jtj8ƒƒn/|j9sM|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ƒƒ|jTddddƒd
S)z;Run before each test method to initialize test environment.ZOS_TEST_TIMEOUTrÚ	lock_pathÚgroupÚoslo_concurrencyz	nova.testÚdriverr-Zoslo_messaging_notificationsN)ÚapiZdatabaserrFZ
http_proxyZbuild_failure_weight_multipliergZfilter_scheduler)Ur6rGr7Ú
useFixtureÚ
nova_fixturesZTimeoutrÚenvironÚgetÚTIMEOUT_SCALING_FACTORrZNestedTempfileZTempHomeDirÚlog_fixtureZ get_logging_handle_error_fixtureZOutputStreamCaptureÚoutputZStandardLoggingZstdlogÚREQUIRES_LOCKINGZTempDirÚpathÚconfig_fixtureZConfigrr9rÚ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.computerrZCELLSr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
MoxStuboutZmoxÚstubsÚ_clear_attrsZEnvironmentVariablerZ
PolicyFixtureÚpolicyZPoisonFunctionsrZDRIVER_CACHEZ"ForbidNewLegacyNotificationFixtureZPrivsepNoHelperFixtureÚflags)r*rnrrZmox_fixture)r=rr#r7Ñst

		
						
				zTestCase.setUpc	Cs#tjƒ}tjƒ}d}tjd|dtjjddd|dtjjƒ}|jƒ||j|j	<|j
tjjƒxŽt|jƒD]}}d|d	}t
t|ƒ}tjd|d|d|d|d|ƒ}|jƒ||j|<|j
|d
|dkƒq‘W|j|ƒdS)
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/rÚuuidr[Zcell0Z
transport_urlZdatabase_connectionzcell%irmÚdefaultrN)rtZ
CellDatabasesrÚget_contextrZCellMappingZ
CELL0_UUIDÚcreater‡r[Zadd_cell_databaseÚrangeÚNUMBER_OF_CELLSrTÚuuidsrs)	r*Zcelldbsr:Zfake_transportÚc0Úxr[r‘Úcellrrr#rŠEs2	
		

zTestCase._setup_cellscCs|jtjj_dS)N)r„rrr‚rƒ)r*rrr#r†kszTestCase._restore_obj_registrycCsGx@dd„t|jjƒƒDƒD]}|dkr#|j|=q#WdS)NcSs&g|]}|ddkr|‘qS)rÚ_r)r Úkrrr#r$ss	z)TestCase._clear_attrs.<locals>.<listcomp>Úid)ÚlistÚ__dict__Úkeys)r*Úkeyrrr#rŽos)zTestCase._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)rsrZMonkeyPatch)r*ÚoldÚnewrrr#Ústub_out|s
zTestCase.stub_outcKsL|jddƒ}x3t|jƒƒD]\}}tj|||ƒq%WdS)z#Override flag variables for a test.roN)ÚpopržÚitemsr9Úset_override)r*ÚkwrorœÚvrrr#rˆszTestCase.flagsNcKsÂ|dkr|jrtjƒ}|j|jdtƒ}tjd|d|pR|d|ƒ}|jƒ||j	|j
<|dk	r|jtj
d|ƒƒ|jtj|||ƒ}|jS)NÚcomputeršrr)Zcell_mapping)r‰rr“r‡r¥Ú
CELL1_NAMErZHostMappingr”rˆr)rsrtZConfPatcherZServiceFixtureÚservice)r*r[r)rJr:rš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¢s
z TestCase.restart_compute_serviceÚcs&t|tjƒr!tj|ƒ}t|tjƒrBtj|ƒ}‡fdd†‰d‡‡‡fdd†‰yˆ||ƒWnŸtjjk
r!}zy|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.

        csst|ttfƒs't|tjƒr1t|ƒSt|tƒro‡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|ƒxdtt	j
ˆƒƒD]&}ˆˆ|ˆ||d|ƒqÑWn$tˆtttfƒrtˆtttfƒrˆjtˆƒtˆƒd|tˆdˆƒtˆdˆƒ‡‡fdd†tj
ˆˆƒDƒfƒttˆdˆƒƒ}ttˆdˆƒƒ}xXttˆƒƒD]*}ˆt|ƒt|ƒ|d|ƒqÚWnˆ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=%sr¡cs.g|]$}|ˆks$|ˆkr|‘qSrr)r Úa)ÚexpectedÚobservedrr#r$ós	z;TestCase.assertJsonEqual.<locals>.inner.<locals>.<listcomp>z[%s]zpath: %s)rµr¹ÚassertEqualÚlenrºr ržr¶Úsymmetric_differencerQÚiterkeysÚtupleÚ	itertoolsÚchainÚiterr•Únext)	r½r¾r{Z
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µrQÚstring_typesr	ÚloadsrFÚmatchersZ
MismatchErrorZmismatchÚdescribeÚpprintÚpformatÚAssertionErrorr½r¾Ú
difference)r*r½r¾ÚmessageÚerÑÚmsgÚerrorr)rÉr*r³r#ÚassertJsonEqual¶s,	+

			zTestCase.assertJsonEqualcCsçdd„}|jj}||ƒ}||ƒ}g}x3t|jƒƒD]}||krI|j|ƒqIW|jg|d|ƒx]t|jƒƒD]I}tj||ƒ}	tj||ƒ}
|j|	|
d||fƒq–WdS)NcSsUi}dd„}x<tj||ƒD](\}}|jdƒrCq%|||<q%W|S)NcSstj|ƒptj|ƒS)N)rOÚismethodrP)Úobjectrrr#ÚfindmethodsszPTestCase.assertPublicAPISignatures.<locals>.get_public_apis.<locals>.findmethodsr›)rOÚ
getmembersrX)ÚinstÚmethodsrÙr[r²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¿rOÚ
getargspec)r*ZbaseinstrÛrÝZ	baseclassZbasemethodsZimplmethodsZ
extranamesr[ZbaseargsZimplargsrrr#ÚassertPublicAPISignaturess"z"TestCase.assertPublicAPISignatures)r>r?r@rAr‰r‹rzr~r–rwr7rŠr†rŽr¤rr­r°rÖràrr)r=r#rG·s"t&
ZrGc@s"eZdZdZdd„ZdS)ÚAPICoverageNcCse|j|jƒdd„t|jƒDƒ}dd„t|ƒDƒ}|j|tjj|ƒƒdS)NcSs%g|]}|jdƒs|‘qS)r›)rX)r r™rrr#r$9s	z0APICoverage.test_api_methods.<locals>.<listcomp>cSs/g|]%}|jdƒr|dd…‘qS)Ztest_éN)rX)r r™rrr#r$;s	)ÚassertIsNotNoneÚ	cover_apiÚdirZ
assertThatrFrÌZContainsAll)r*Zapi_methodsZtest_methodsrrr#Útest_api_methods7szAPICoverage.test_api_methods)r>r?r@rärærrrr#rá3srácsyeZdZdZejdd„ƒZ‡fdd†Zedd„ƒZ	edd	„ƒZ
d
d„Zdd
„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érr6rçr7)r*)r=rr#r7UszSubclassSignatureTestCase.setUpcCswi}xjtj|tjƒD]S\}}|dkr7qx"t|dƒr[t|dƒ}q:Wtj|ƒ||<qW|S)z>Return a dict of method_name->argspec for every method of cls.r+Ú__wrapped__)rOrÚr×ÚhasattrrTrß)reZargspecsr[Úmethodrrr#Ú
_get_argspecsZs"
z'SubclassSignatureTestCase._get_argspecscCsd|j|jfS)z'Return the fully qualified name of cls.z%s.%s)r?r>)rerrr#Ú_clsnamezsz"SubclassSignatureTestCase._clsnamecCs¨x¡|jƒD]“}|j|ƒ}xkt|jƒƒD]W\}}||kr5|j|||dd|j|ƒd|j|ƒd|iƒq5W|j||ƒq
WdS)Nz@Signature of %(sub)s.%(method)s differs from superclass %(base)srÚ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@rAÚabcÚabstractmethodrér7rlrírîrñròrr)r=r#rçBs rçcs(eZdZdZ‡fdd†Z‡S)ÚTimeOverridez*Fixture to start and remove time override.cs1tt|ƒjƒtjƒ|jtjƒdS)N)r6rõr7r
Zset_time_overrider…Zclear_time_override)r*)r=rr#r7šs
zTimeOverride.setUp)r>r?r@rAr7rr)r=r#rõ—srõ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@rAr‰rrrr#rö sröc@seZdZdd„ZdS)ÚBaseHookTestCasecCs-|jt|dƒƒ|j||jƒdS)NÚ
__hook_name__)Ú
assertTruerër¿rø)r*Z
expected_nameÚfuncrrr#Úassert_has_hook©sz BaseHookTestCase.assert_has_hookN)r>r?r@rûrrrr#r÷¨sr÷c@sFeZdZdZdd„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@rAr+rrrrrrr#rü®s
rüc@sFeZdZdZdd„Zdd„Zdd„Zdd	„Zd
S)Ú
MatchObjPrimsz&Matches objects with equal primitives.cCs
||_dS)N)Úwant_obj)r*rrrr#r+ÐszMatchObjPrims.__init__cCstj||jƒS)N)rZobj_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@rAr+rrrrrrr#rÎs
rc@sFeZdZdZdd„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*rrrrr#r+ïs	zContainKeyValue.__init__cCs;y||j|jkSWnttfk
r6dSYnXdS)NF)rrÚKeyErrorrU)r*rÿrrr#rószContainKeyValue.__eq__cCs;y||j|jkSWnttfk
r6dSYnXdS)NT)rrr	rU)r*rÿrrr#rùszContainKeyValue.__ne__cCs&dt|jƒdt|jƒdS)Nz<ContainKeyValue: key z and value r)r¸rr)r*rrr#rÿszContainKeyValue.__repr__N)r>r?r@rAr+rrrrrrr#rÝs
r)\rAZeventletZmonkey_patchrór%r€r·rOrÄrrÎrgrr^Z
oslo_cacherÚcacherprZoslo_configrrr|Zoslo_log.fixturerrxZoslo_logrÚloggingZoslo_serializationr	Z
oslo_utilsr
Zoslo_versionedobjectsrŒZoslotestrrQrFrrr
rZnova.networkrr8Znova.network.security_grouprrZnova.objectsrrZ
nova.testsrtZnova.tests.unitrrrr—rZ	nova.virtrr9Zregister_optionsr§ÚsetupZ	configureZ_TRUE_VALUESr«ÚPY2r'ÚcontextmanagerZFixturer(Ú	ExceptionrBrØrCr`rarfrGráÚ
add_metaclassÚABCMetarçrõrör÷rürrrrrr#Ú<module>	s„	

	 
ÿ}T