B 4]@sddlmZddlZddlZddlmZddlmZddlmZddlmZdd lm Z dd lm Z dd l m Z Gd d d ej ZGdddeZdS))dequeN)config)fixtures) profiling) create_engine)MetaData)util)Sessionc@s:eZdZejddZddZddZddZd d Z d S) ReplayFixtureTestcos dVdS)N)selfargkwr r T/opt/alt/python37/lib64/python3.7/site-packages/sqlalchemy/testing/replay_fixture.py _dummy_ctxszReplayFixtureTest._dummy_ctxcsttjjjfdd}ttjj|dd}t||_||_ t ||_ | z|j |jdWd||Xfdd}ttjj|dd}t||_||_ t ||_ | z|j tjdWd|j |XdS)Ncs S)N)recorderr )creator dbapi_sessionr rrsz3ReplayFixtureTest.test_invocation..recorderF)rZuse_native_hstore)ctxcsS)N)playerr )rr rr)sz1ReplayFixtureTest.test_invocation..player)ReplayableSessionrZdbZpoolZ_creatorrZurlr Zmetadataenginer Zsession setup_engine _run_stepsrteardown_engineZdisposerZcount_functionsclose)rrrrr )rrrtest_invocations0        z!ReplayFixtureTest.test_invocationcCsdS)Nr )rr r rr;szReplayFixtureTest.setup_enginecCsdS)Nr )rr r rr>sz!ReplayFixtureTest.teardown_enginecCs tdS)N)NotImplementedError)rrr r rrAszReplayFixtureTest._run_stepsN) __name__ __module__ __qualname__ contextlibcontextmanagerrrrrrr r r rr s (r c@seZdZdZeZeZejrFe dde e D dddDZ n:e dde e DddeD ddd DZ d d Zd d ZddZGdddeZGdddeZdS)raA simple record/playback tool. This is *not* a mock testing class. It only records a session for later playback and makes no assertions on call consistency whatsoever. It's unlikely to be suitable for anything other than DB-API recording. cCs g|]}|dstt|qS)_) startswithgetattrtypes).0tr r r SszReplayableSession.cCsg|]}tt|qSr )r'r()r)r*r r rr+Vs) FunctionTypeBuiltinFunctionType MethodTypeBuiltinMethodType LambdaTypeZUnboundMethodTypecCs g|]}|dstt|qS)r%)r&r'r()r)r*r r rr+escCs"g|]}t|tst|n|qSr ) isinstancetype)r)r*r r rr+lscCsg|]}tt|qSr )r'r()r)r*r r rr+rs)r,r-r.r/r0cCs t|_dS)N)rbuffer)rr r r__init__~szReplayableSession.__init__cCs||j|S)N)Recorderr3)rbaser r rrszReplayableSession.recordercCs ||jS)N)Playerr3)rr r rrszReplayableSession.playerc@s0eZdZddZddZeddZddZd S) zReplayableSession.RecordercCs||_||_dS)N)_buffer_subject)rr3subjectr r rr4sz#ReplayableSession.Recorder.__init__csZfdddD\}}|||}t|tjkrH|tjt||S|||SdS)Ncsg|]}t|qSr )object__getattribute__)r)x)rr rr+sz7ReplayableSession.Recorder.__call__..)r9r8)r2rNativesappendCallable)rargsrr:r3resultr )rr__call__s     z#ReplayableSession.Recorder.__call__cCs|jS)N)r9)rr r r _sqla_unwrapsz'ReplayableSession.Recorder._sqla_unwrapcsy t|Stk r YnXfdddD\}}yt|||}Wn"tk rn|tjYn8Xt|tjkr|tjt||S|||SdS)Ncsg|]}t|qSr )r;r<)r)r=)rr rr+sz?ReplayableSession.Recorder.__getattribute__..)r9r8) r;r<AttributeErrorr2r?r NoAttributer>r@)rkeyr:r3rBr )rrr<s       z+ReplayableSession.Recorder.__getattribute__N)r r!r"r4rCpropertyrDr<r r r rr5s r5c@s0eZdZddZddZeddZddZd S) zReplayableSession.PlayercCs ||_dS)N)r8)rr3r r rr4sz!ReplayableSession.Player.__init__cOs*t|d}|}|tjkr"|S|SdS)Nr8)r;r<popleftrr@)rrArr3rBr r rrCs   z!ReplayableSession.Player.__call__cCsdS)Nr )rr r rrDsz%ReplayableSession.Player._sqla_unwrapcCs`y t||Stk r YnXt|d}|}|tjkrD|S|tjkrXt|n|SdS)Nr8)r;r<rErIrr@rF)rrGr3rBr r rr<s     z)ReplayableSession.Player.__getattribute__N)r r!r"r4rCrHrDr<r r r rr7s r7N)r r!r"__doc__r;r@rFr Zpy2ksetdirr( differencer>union __builtins__valuesr4rrr5r7r r r rrEs(  .r) collectionsrr#r(rrrrr r Zormr ZTestBaser r;rr r r rs        7