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    
dmapi / usr / lib / python2.7 / dist-packages / dmapi / test.pyc
Size: Mime:
ó
-,wac@s
dZddlZejdeƒddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlmZddlmZddlmZddlmZddlmZdd	lmZdd
lmZddl m!Z!ddl"mZ#ddl$m%Z%ddl&Z&ddl'Z'dd
l(m)Z)ddl(m*Z*ddl(m+Z+ddl,m-Z.ddl/m0Z0ddl(m1Z1ddl2m3Z4ddl5m
Z6ddl7m8Z8ddl7m9Z9ddl5m:Z;ddl(m<Z<ddl=m>Z>ej?Z?ej@e?ƒe?jAdeƒejBe?dƒejCe?ƒddddfZDd ZEe&jFržejGZGnejHd!„ƒZGd"e
jIfd#„ƒYZJd$eKfd%„ƒYZLd&eMfd'„ƒYZNd(„ZOeOƒd)eMfd*„ƒYZPePjQƒd+e'jRfd,„ƒYZRd-eMfd.„ƒYZSe&jTejUƒd/e'jRfd0„ƒYƒZVd1e
jIfd2„ƒYZWd3eRfd4„ƒYZXd5eXfd6„ƒYZYd7eMfd8„ƒYZZd9eMfd:„ƒYZ[d;eMfd<„ƒYZ\dS(=s{Base classes for our unit tests.

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

iÿÿÿÿNtos(tcore(t	lockutils(tcfg(tfixture(t
logging_error(tlog(t	jsonutils(t	timeutils(t
moxstubout(tcontext(tdb(t	exception(tmanager(topenstack_driver(tobjects(tbase(tfixtures(tconf_fixture(tpolicy_fixture(tuuidsentinel(tutils(timagest
use_stderrtnovatTruettruet1tyestcell1cgs:tjƒ(}g|D]}|j|ƒ^qVWdQXdS(N(t
contextlibt	ExitStackt
enter_context(tcontextststacktc((s./usr/lib/python2.7/dist-packages/dmapi/test.pytnestedDstSampleNetworkscBs#eZdZdd„Zd„ZRS(s'Create sample networks in the database.cCs
||_dS(N(thost(tselfR&((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt__init__NscCsítt|ƒjƒtjƒ}tjd|jƒ}tj	pCtj
}|j|dddddtjdtj
dtjd	tjd
tjdtjdtjd
|dtjdtjdtjƒ
x'tj|ƒD]}|j||ƒqÏWdS(NR&tlabelttesttcidrs
10.0.0.0/8t
multi_hosttnum_networkstnetwork_sizetcidr_v6tgatewayt
gateway_v6tbridgetbridge_interfacet	vpn_startt
vlan_starttdns1(tsuperR%tsetUpR
tget_admin_contexttnetwork_managertVlanManagerR&tCONFtflat_interfacetvlan_interfacetcreate_networksR,R-R.tfixed_range_v6R0R1tflat_network_bridgeR4R5tflat_network_dnsRtnetwork_get_alltset_network_host(R'tctxttnetworkR3tnet((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR8Qs(									
N(t__name__t
__module__t__doc__tNoneR(R8(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR%JstTestingExceptioncBseZRS((RHRI(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRLhstskipIfcBseZd„Zd„ZRS(cCs||_||_dS(N(t	conditiontreason(R'RNRO((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR(ms	cs¨|j‰|j‰tjˆƒrItjˆƒ‡‡‡fd†ƒ}|Stjˆƒr˜tˆdƒ‰tjˆƒ‡‡‡fd†ƒ}|ˆ_ˆSt	dƒ‚dS(Ncs(ˆrtjjˆƒ‚nˆ||ŽS(N(t	testtoolstTestCaset
skipException(targstkwargs(RNtfunc_or_clsRO(s./usr/lib/python2.7/dist-packages/dmapi/test.pytwrappedusR8cs/ˆrtjjˆƒ‚nˆ|||ŽdS(N(RPRQRR(R'RSRT(RNt	orig_funcRO(s./usr/lib/python2.7/dist-packages/dmapi/test.pytnew_funcss5skipUnless can be used only with functions or classes(
RNROtinspectt
isfunctiontsixtwrapstisclasstgetattrR8t	TypeError(R'RURVRX((RNRURWROs./usr/lib/python2.7/dist-packages/dmapi/test.pyt__call__qs		$$	(RHRIR(R`(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRMls	cCs%d„}|tjjƒtj_dS(Ncs‡fd†}|S(NcsMddddg}|jdƒr@||kr@td|ƒ‚nˆ||ƒS(Ntassert_called_withtassert_called_once_withtassert_has_callstassert_any_callstasserts$%s is not a valid mock assert method(t
startswithtAttributeError(t_selftnamet
valid_asserts(RV(s./usr/lib/python2.7/dist-packages/dmapi/test.pytwrapperŽs	
((RVRk((RVs./usr/lib/python2.7/dist-packages/dmapi/test.pytraise_for_invalid_assert_callss(tmocktMockt__getattr__(Rl((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt-_patch_mock_to_raise_for_invalid_assert_callsŒs	tNovaExceptionReraiseFormatErrorcBs2eZejjZed„ƒZed„ƒZ	RS(cCs|jtj_dS(N(t_wrap_log_exceptionRt
NovaExceptiont_log_exception(tcls((s./usr/lib/python2.7/dist-packages/dmapi/test.pytpatch¦scCs*tjƒ}tj|ƒtj|ŒdS(N(tsystexc_infoRqtreal_log_exceptionR[treraise(R'Rx((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRrªs
(
RHRIRRsRtRytclassmethodRvtstaticmethodRr(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRq£sRQcBs’eZdZeZeZeZeZdZ	dZ
d„Zd„Zd„Z
d„Zd„Zd„Zd
d„Zd	„Zd
d„Zd„ZRS(sŒTest case base class for all unit tests.

    Due to the slowness of DB access, please consider deriving from
    `NoDBTestCase` first.
    icCsmtt|ƒjƒ|jtjtjjddƒ|j	ƒƒ|jt
jƒƒ|jt
jƒƒ|jt
jƒƒtjƒ|_|j|jƒtjƒ|_|j|jƒ|jr|jt
jƒƒj}|jtjtjƒƒ|_|jjd|ddƒn|jtjtƒƒ|jrH|jtjdƒƒntj ddgdd	ƒdt"j#_$t%j%t"j&j'j(ƒ|_)|j*|j+ƒt,j-j.ƒd
dl/m0}g|_1it2_3gt2_1i|_4i|_5|j6r$|jtj7dd
ƒƒ|j8ƒ|jtj9ƒƒn2|j:sV|jtj;ƒƒ|jtj<ƒƒn|jtj=ƒƒ|jt>j?ƒƒdt@_AtBt,jC_Ddt,jC_EdtF_G|jtHjIƒƒ}|jJ|_J|jK|_K|j*|jLƒ|jt
jMdƒƒ|jtNjOƒƒ|_P|jtjQƒƒitR_S|jtjTƒƒ|jtjUƒƒ|jVddddƒdS(s;Run before each test method to initialize test environment.tOS_TEST_TIMEOUTit	lock_pathtgrouptoslo_concurrencys	nova.testtdriverR*toslo_messaging_notificationsiÿÿÿÿ(tapitdatabaseRƒt
http_proxytbuild_failure_weight_multipliergtfilter_schedulerN(WR7RQR8t
useFixturet
nova_fixturestTimeoutRtenvirontgettTIMEOUT_SCALING_FACTORRtNestedTempfiletTempHomeDirtlog_fixturet get_logging_handle_error_fixturetOutputStreamCapturetoutputtStandardLoggingtstdlogtREQUIRES_LOCKINGtTempDirtpathtconfig_fixturetConfigRR<RtconfigRtConfFixturetSTUB_RPCt
RPCFixturetset_defaultRKtobjects_baset
NovaObjecttindirection_apitcopytNovaObjectRegistryt	_registryt_obj_classest_base_test_obj_backupt
addCleanupt_restore_obj_registryRtServicetclear_min_version_cachetnova.computeRƒtCELLSR
t
CELL_CACHEt
cell_mappingst
host_mappingstUSES_DBtDatabaset_setup_cellstDefaultFlavorsFixturetUSES_DB_SELFtSingleCellSimpletDatabasePoisonFixturetWarningsFixturetovo_fixturetStableObjectJsonFixtureRt_IS_NEUTRONtFalsetresource_providert_TRAITS_SYNCEDt	_RC_CACHERtQEMU_VERSIONR	t
MoxStubouttmoxtstubst_clear_attrstEnvironmentVariableRt
PolicyFixturetpolicytPoisonFunctionsRtDRIVER_CACHEt"ForbidNewLegacyNotificationFixturetPrivsepNoHelperFixturetflags(R'R~Rƒtmox_fixture((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR8Ñst

	
	
						
				c	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(
só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.
        sfake://nowhere/R
tuuidRitcell0t
transport_urltdatabase_connectionscell%iitdefaultiN(R‰t
CellDatabasesR
tget_contextRtCellMappingt
CELL0_UUIDtcreateR¯Ritadd_cell_databasetrangetNUMBER_OF_CELLSR^tuuidsRˆ(	R'tcelldbsREtfake_transporttc0txRiRÎtcell((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR³Es2	
		

cCs|jtjj_dS(N(R§R R¤R¥R¦(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR©kscCs`xYgt|jjƒƒD]}|ddkr|^qD]}|dkr9|j|=q9q9WdS(Nit_tid(tlistt__dict__tkeys(R'tktkey((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRÄos?cCs|jtj||ƒƒdS(sUReplace 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(RˆRtMonkeyPatch(R'toldtnew((s./usr/lib/python2.7/dist-packages/dmapi/test.pytstub_out|s
cKsL|jddƒ}x3t|jƒƒD]\}}tj|||ƒq%WdS(s#Override flag variables for a test.RN(tpopRKRãtitemsR<tset_override(R'tkwRRætv((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR̈scKsÈ|dkr£|jr£tjƒ}|j|jdtƒ}tjd|d|pR|d|ƒ}|jƒ||j	|j
<|dk	r£|jt
jd|ƒƒq£n|jt
j|||ƒ}|jS(NtcomputeRàR
R&tcell_mapping(R±R
RÔR¯Rìt
CELL1_NAMERtHostMappingR×R°R&RKRˆR‰tConfPatchertServiceFixturetservice(R'RiR&RTRERàthmtsvc((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt
start_serviceŽs	
cCs$|jƒd|j_|jƒdS(sxRestart a compute service in a realistic way.

        :param:compute: the nova-compute service to be restarted
        N(tstopRKR
t_resource_trackertstart(R'Rñ((s./usr/lib/python2.7/dist-packages/dmapi/test.pytrestart_compute_service¢s
tcst|tjƒr$tj|ƒ}nt|tjƒrHtj|ƒ}n‡fd†‰d‡‡‡fd†‰yˆ||ƒWntjjk
r}|jj	ƒ}|rºd|}ndt
j|ƒt
j|ƒ||f}t|ƒ}||_
||_||_|‚nXdS(s“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.

        cspt|ttfƒs't|tjƒr1t|ƒSt|tƒrl‡fd†t|jƒƒDƒ}t|ƒS|S(Nc3s-|]#\}}ˆ|ƒˆ|ƒfVqdS(N((t.0Rçtvalue(tsort_key(s./usr/lib/python2.7/dist-packages/dmapi/test.pys	<genexpr>Ïs(t
isinstancetsetRãtdatetimetstrtdictRítsorted(RßRí(R(s./usr/lib/python2.7/dist-packages/dmapi/test.pyRËs'

trootc
s;t|tƒrþt|tƒrþˆjt|ƒt|ƒd|t|jƒƒt|jƒƒtt|jƒƒjt|jƒƒƒƒfƒt|ƒ}t|ƒ}ˆj||d|ƒxytt	j
|ƒƒD]&}ˆ|||||d|ƒqÑWn9t|tttfƒr t|tttfƒr ˆjt|ƒt|ƒd|t|dˆƒt|dˆƒgtj
||ƒD]$}||ks›||kr}|^q}fƒtt|dˆƒƒ}tt|dˆƒƒ}xXtt|ƒƒD]*}	ˆt|ƒt|ƒ|d|	ƒqïWnˆj||d|ƒdS(NsGpath: %s. Different dict key sets
expected=%s
observed=%s
difference=%ss!path: %s. Dict keys are not equals.%ssDpath: %s. Different list items
expected=%s
observed=%s
difference=%sRçs[%s]spath: %s(RRtassertEqualtlenRRåRãRtsymmetric_differenceR[titerkeysttuplet	itertoolstchaintiterRÙtnext(
texpectedtobservedR˜t
expected_keyst
observed_keysRçtatexpected_values_itertobserved_values_iterti(tinnerR'R(s./usr/lib/python2.7/dist-packages/dmapi/test.pyRÔs@')smessage: %s
s*
expected:
%s
actual:
%s
difference:
%s
%sN(RR[tstring_typesRtloadsRPtmatcherst
MismatchErrortmismatchtdescribetpprinttpformattAssertionErrorRRt
difference(R'RRtmessageteR%tmsgterror((RR'Rs./usr/lib/python2.7/dist-packages/dmapi/test.pytassertJsonEqual¶s,	+

			cCsçd„}|jj}||ƒ}||ƒ}g}x6t|jƒƒD]"}||krF|j|ƒqFqFW|jg|d|ƒx]t|jƒƒD]I}tj||ƒ}	tj||ƒ}
|j|	|
d||fƒq–WdS(NcSsUi}d„}x?tj||ƒD]+\}}|jdƒrCq"n|||<q"W|S(NcSstj|ƒptj|ƒS(N(RYtismethodRZ(tobject((s./usr/lib/python2.7/dist-packages/dmapi/test.pytfindmethodssRá(RYt
getmembersRf(tinsttmethodsR-RiR((s./usr/lib/python2.7/dist-packages/dmapi/test.pytget_public_apiss	s'public APIs not listed in base class %ss!%s args don't match base class %s(t	__class__RHRRåtappendR
RYt
getargspec(R'tbaseinstR/R1t	baseclasstbasemethodstimplmethodst
extranamesRitbaseargstimplargs((s./usr/lib/python2.7/dist-packages/dmapi/test.pytassertPublicAPISignaturess"	N(RHRIRJRR±R¼RµR–RRÚRR8R³R©RÄRëRÌRKRúRþR*R<(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRQ·s"	t	&		
			ZtAPICoveragecBseZdZd„ZRS(cCs“|j|jƒgt|jƒD]}|jdƒs |^q }gt|ƒD]}|jdƒrN|d^qN}|j|tjj|ƒƒdS(NRáttest_i(tassertIsNotNonet	cover_apitdirRft
assertThatRPRtContainsAll(R'Rßtapi_methodsttest_methods((s./usr/lib/python2.7/dist-packages/dmapi/test.pyttest_api_methods7sN(RHRIRKR@RF(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR=3stSubclassSignatureTestCasecBsYeZdZejd„ƒZd„Zed„ƒZed„ƒZ	d„Z
d„ZRS(s<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(tNotImplementedError(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt_get_base_classQscCs&|jƒ|_tt|ƒjƒdS(N(RIRR7RGR8(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR8UscCszi}xmtj|tjƒD]V\}}|dkr:qnx"t|dƒr^t|dƒ}q=Wtj|ƒ||<qW|S(s>Return a dict of method_name->argspec for every method of cls.R(t__wrapped__(RYR.R+thasattrR^R4(RutargspecsRitmethod((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt
_get_argspecsZs"
cCsd|j|jfS(s'Return the fully qualified name of cls.s%s.%s(RIRH(Ru((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt_clsnamezsc	Cs®x§|jƒD]™}|j|ƒ}xqt|jƒƒD]]\}}||kr5|j|||di|j|ƒd6|j|ƒd6|d6ƒq5q5W|j||ƒq
WdS(Ns@Signature of %(sub)s.%(method)s differs from superclass %(base)sRtsubRM(t__subclasses__RNRãRíR
ROt_test_signatures_recurse(R'Rt
base_argspecsRPtsub_argspecsRMtsub_argspec((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRRscCs#|j|j|j|jƒƒdS(N(RRRRN(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyttest_signatures“s(RHRIRJtabctabstractmethodRIR8R|RNRORRRV(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRGBs	 	tTimeOverridecBseZdZd„ZRS(s*Fixture to start and remove time override.cCs1tt|ƒjƒtjƒ|jtjƒdS(N(R7RYR8Rtset_time_overrideR¨tclear_time_override(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR8šs
(RHRIRJR8(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRY—stNoDBTestCasecBseZdZeZRS(sº`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.
    (RHRIRJR¼R±(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR\ stBaseHookTestCasecBseZd„ZRS(cCs-|jt|dƒƒ|j||jƒdS(Nt
__hook_name__(t
assertTrueRKR
R^(R't
expected_nametfunc((s./usr/lib/python2.7/dist-packages/dmapi/test.pytassert_has_hook©s(RHRIRb(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR]¨st	MatchTypecBs2eZdZd„Zd„Zd„Zd„ZRS(sIMatches 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(twanttype(R'Rd((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR(ÁscCst|ƒ|jkS(N(ttypeRd(R'tother((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt__eq__ÄscCst|ƒ|jkS(N(ReRd(R'Rf((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt__ne__ÇscCsdt|jƒdS(Ns<MatchType:t>(RRd(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt__repr__Ês(RHRIRJR(RgRhRj(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRc®s
			t
MatchObjPrimscBs2eZdZd„Zd„Zd„Zd„ZRS(s&Matches objects with equal primitives.cCs
||_dS(N(twant_obj(R'Rl((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR(ÐscCstj||jƒS(N(R tobj_equal_primsRl(R'Rf((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRgÓscCs||jkS(N(Rl(R'Rf((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRhÖscCsdt|jƒdS(Ns<MatchObjPrims:Ri(RRl(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRjÙs(RHRIRJR(RgRhRj(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRkÎs
			tContainKeyValuecBs2eZdZd„Zd„Zd„Zd„ZRS(s]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(twantkeyt	wantvalue(R'RoRp((s./usr/lib/python2.7/dist-packages/dmapi/test.pyR(ïs	cCs7y||j|jkSWnttfk
r2tSXdS(N(RoRptKeyErrorR_R¼(R'Rf((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRgóscCs7y||j|jkSWnttfk
r2tSXdS(N(RoRpRqR_R(R'Rf((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRhùscCs&dt|jƒdt|jƒdS(Ns<ContainKeyValue: key s and value Ri(RRoRp(R'((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRjÿs(RHRIRJR(RgRhRj(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyRnÝs
			(]RJteventlettmonkey_patchR¼RWRR£RRYRRR"RwRRmt
oslo_cacheRtcacheR€Rtoslo_configRRR™toslo_log.fixtureRRtoslo_logRtloggingtoslo_serializationRt
oslo_utilsRtoslo_versionedobjectsR¹toslotestR	R[RPRR
RRtnova.networkR
R:tnova.network.security_groupRRtnova.objectsRR t
nova.testsR‰tnova.tests.unitRRRRÛRt	nova.virtRR<tregister_optionsRîtsetupt	configuret_TRUE_VALUESRótPY2R$tcontextmanagertFixtureR%t	ExceptionRLR,RMRpRqRvRQR=t
add_metaclasstABCMetaRGRYR\R]RcRkRn(((s./usr/lib/python2.7/dist-packages/dmapi/test.pyt<module>	s„	

	 	
ÿ}T