zmc
2023-10-12 ed135d79df12a2466b52dae1a82326941211dcc9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
U
¸ý°dpã@sØdZddlmZddlmZddlmZddlZddlmZddlmZddl    m
Z dd    l m Z dd
l m Z dd lmZdd lmZdd lmZddlmZddlmZGdd„deƒZGdd„dedejfiƒƒZdS)z
Tests for greenlet.
 
é)Úabsolute_import)Údivision)Úprint_functionN)Úcollect)Ú get_objects)Ú active_count)Úsleep)Útime)Úgreenlet)Ú
getcurrent)Úget_pending_cleanup_count)Úget_total_main_greenletsé)Ú    leakcheckc@seZdZdd„ZdS)ÚTestCaseMetaClasscCs\d}t| ¡ƒD]:\}}| d¡rt|ƒr| |¡|rBt |¡}|||<qt ||||¡S)NTÚtest)    ÚlistÚitemsÚ
startswithÚcallableÚpoprZ wrap_refcountÚtypeÚ__new__)ÚclsÚ    classnameÚbasesÚ    classDictZcheck_totalrefcountÚkeyÚvalue©rúNd:\z\workplace\vscode\pyvenv\venv\Lib\site-packages\greenlet/tests/__init__.pyrs
 
 
zTestCaseMetaClass.__new__N)Ú__name__Ú
__module__Ú __qualname__rrrrr rsrcs`eZdZdZdZddd„Zedfdd„Zd    Zd    Z    d    Z
d
Z d d „Z ‡fd d„Z ‡fdd„Z‡ZS)ÚTestCasegü©ñÒMbP?rNcCs–|p|j}|p|j}|j}t|ƒtƒ|j}tƒsNtƒ|ksN|jsŒt    ƒ|krŒt|ƒtƒ|kr.t
dƒt
d|dtƒƒt
d|dt    ƒƒqŒq.t ƒdS)NzTime limit exceeded.zThreads: Waiting for onlyz-->zMGlets : Waiting for only) Úthreads_before_testÚmain_greenlets_before_testÚcleanup_attempt_sleep_durationrr    Úcleanup_max_sleep_secondsr Úactive_thread_countÚexpect_greenlet_leakr Úprintr)ÚselfZinitial_active_threadsZinitial_main_greenletsZ
sleep_timeZ
quit_afterrrr Úwait_for_pending_cleanups9s4
 
 
 ÿþýü
ÿÿz"TestCase.wait_for_pending_cleanupsTcsHtdƒD]
}tƒq|r0t‡fdd„tƒDƒƒSt‡fdd„tƒDƒƒS)Néc3s|]}t|ƒˆkrdVqdS©rN)r©Ú.0Úx©Úkindrr Ú    <genexpr>as þz)TestCase.count_objects.<locals>.<genexpr>c3s|]}t|ˆƒrdVqdSr/)Ú
isinstancer0r3rr r5gs
þ)ÚrangerÚsumr)r,r4Z
exact_kindÚ_rr3r Ú count_objects[s  þ þzTestCase.count_objectsrFcCs | td¡S)zJ
        Find all the greenlets and subclasses tracked by the GC.
        F)r:Ú RawGreenlet©r,rrr Úcount_greenletsrszTestCase.count_greenletscsBtt|ƒ ¡tƒtƒ|_tƒ|_| |j|j¡|     ¡|_
dS)N) Úsuperr$ÚsetUpr r)r%r r&r-r=Úgreenlets_before_testr<©Ú    __class__rr r?xs zTestCase.setUpcs2t|ddƒrdS| |j|j¡tt|ƒ ¡dS)NZ skipTearDownF)Úgetattrr-r%r&r>r$ÚtearDownr<rArr rD‚s zTestCase.tearDown)NN)r!r"r#r'r(r-rr:r@r%r&r*r=r?rDÚ __classcell__rrrAr r$1sþ
"
r$ZNewBase)Ú__doc__Ú
__future__rrrZunittestÚgcrrÚ    threadingrr)r    rr
r;r Zgreenlet._greenletr r Úrrrr$rrrr Ú<module>s(              ý