ó
    øÞ jQ  ã                   ót   • S r SSKrSSKrSSKrSSKrSSKJr  SSKrSSK	J
r
  SrSr0 rSS jr " S	 S
\5      rg)z;
Simple perf tests for aiosqlite and the asyncio run loop.
é    N)ÚIsolatedAsyncioTestCaseé   )Úsetup_loggerz:memory:g       @c                 óB   ^ ^• T=(       d    T R                   mU U4S jnU$ )aJ  
Decorator for perf testing a block of async code.

Expects the wrapped function to return an async generator.
The generator should do setup, then yield when ready to start perf testing.
The decorator will then pump the generator repeatedly until the target
time has been reached, then close the generator and print perf results.
c               Ÿ   óô  >#   • T" U 0 UD6nUR                  S 5      I S h  v•N   Sn[        R                  " 5       n US-  n[        R                  " 5       U-
  [        :  n U(       a  UR                  U5      I S h  v•N   OUR                  5       I S h  v•N   OMa  [        R                  " 5       U-
  nX74[        T	'   g  N  NE N.! [         a     M6  [
         a  n[        SU 35         S nAg S nAff = f7f)Nr   r   zexception occurred: )ÚasendÚtimeÚTARGETÚacloseÚStopAsyncIterationÚ	ExceptionÚprintÚRESULTS)
ÚargsÚkwargsÚgenÚcountÚbeforeÚvalueÚeÚdurationÚfnÚnames
           €€ÚN/var/www/html/gaurav/venv/lib/python3.13/site-packages/aiosqlite/tests/perf.pyÚwrapperÚtimed.<locals>.wrapper"   sâ   øé € Ù�$Ð!˜&Ñ!ˆà�i‰i˜‹o×ÐØˆÜ—’“ˆàØ�Q‰JˆEÜ—I’I“K &Ñ(¬6Ñ1ˆEðÞØŸ)™) EÓ*×*Ñ*àŸ*™*›,×&Ð&Øñ ô" —9’9“; Ñ'ˆàÐ)Œ�Šñ/ 	ñ +á&øô &ó Úäó ÜÐ,¨Q¨CÐ0Ô1Üûðüsv   ƒC8 C¡A C8Á"C Á=CÁ>C ÂC8ÂC ÂCÂC Â'C8ÃC ÃC Ã
C5ÃC8Ã	C5ÃC0Ã+C8Ã0C5Ã5C8)Ú__name__)r   r   r   s   `` r   Útimedr      s   ù€ ð ×�2—;‘;€Dö*ð8 €Nó    c                   óÊ   • \ rS rSr\S 5       r\S 5       r\S 5       r\S 5       r	\S 5       r
\S 5       r\S 5       r\S	 5       r\S
 5       r\S 5       r\S 5       rS rSrg)ÚPerfTestéA   c                 ó@   • [        S[        S S35        [        5         g )Nz Running perf tests for at least z.1fz	s each...)r   r
   r   )Úclss    r   Ú
setUpClassÚPerfTest.setUpClassB   s   € äÐ0´¸°¸IÐFÔGÜ�r   c                 óÎ   • [        SSS SSS 35        [        [        5       H?  n[        U   u  p#X#-  nUR                  SS5      n[        US S	US
 SUS SUS S35        MA     g )NÚ
z	Perf Testz<25z Iterations  Duration  ÚRatez>11Útest_Ú Ú z>10z  z>7.1fzs  z>9.1fz/s)r   Úsortedr   Úreplace)r$   r   r   r   Úrates        r   ÚtearDownClassÚPerfTest.tearDownClassG   sx   € ä��;˜sÐ#Ð#:¸6À#¸,ÐGÔHÜœ7–OˆDÜ% d™m‰OˆEØÑ#ˆDØ—<‘< ¨Ó,ˆDÜ�T˜#�J˜a  c˜{¨"¨X°eÐ,<¸CÀÀU¸|È2ÐNÖOò	 $r   c                ó¾   #   •  S 7v •  [         R                  " [        5       IS h  v•N    S S S 5      IS h  v•N   M;   N N! , IS h  v•N  (       d  f       N= f7f©N)Ú	aiosqliteÚconnectÚTEST_DB)Úselfs    r   Útest_connection_memoryÚPerfTest.test_connection_memoryP   s8   é € àÜÜ ×(Ò(¬×1Õ1Ø÷ 2×1ñ ç1×1×1Ò1üs@   ‚%A§?¨A«A­A¸A¹AÁAÁAÁ	AÁ
AÁAc                ót  #   • [         R                  " SS9 nUR                  nUR                  5         [        R
                  " U5       IS h  v•N nUR                  S5      I S h  v•N   UR                  S5      I S h  v•N   UR                  5       I S h  v•N   S S S 5      IS h  v•N    S 7v •  [        R
                  " U5       IS h  v•N    S S S 5      IS h  v•N   M7   N– N Nh NR ND! , IS h  v•N  (       d  f       NY= f N; N,! , IS h  v•N  (       d  f       NA= f! , (       d  f       g = f7f)NF)Údeleteú8create table perf (i integer primary key asc, k integer)ú$insert into perf (k) values (2), (3))ÚtempfileÚNamedTemporaryFiler   Úcloser4   r5   ÚexecuteÚcommit)r7   ÚtfÚpathÚdbs       r   Útest_connection_fileÚPerfTest.test_connection_fileW   sá   é € ä×(Ò(°Ò6¸"Ø—7‘7ˆDØ�H‰HŒJä ×(Ò(¨×.Ô.°"Ø—j‘jØNó÷ ð ð —j‘jÐ!GÓH×HÐHØ—i‘i“k×!Ð!÷ /×.ð ÜÜ$×,Ò,¨T×2Õ2Ø÷ 3×2ñ ñ /ññ IÙ!÷ /×.×.Ð.ú÷ 3×2×2Ò2ú÷ 7Õ6üsÐ   ‚D8—7D'ÁC%ÁD'ÁC/Á'C'Á(C/Â C)ÂC/ÂC+ÂC/ÂD'Â(C-Â)$D'ÃD	ÃD'ÃDÃD'ÃDÃD'Ã'C/Ã)C/Ã+C/Ã-D'Ã/D	Ã5C8Ã6D	ÄD'ÄD'ÄD$	ÄDÄD$	Ä D'Ä'
D5Ä1D8c                óü  #   • [         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   UR                  S5      I S h  v•N   UR	                  5       I S h  v•N    S 7v •  UR                  S5       IS h  v•N nUR                  5       I S h  v•N   S S S 5      IS h  v•N   MI   N˜ N� Nj NT N6 N  N! , IS h  v•N  (       d  f       N'= f! , IS h  v•N  (       d  f       g = f7f)Nr<   r=   úselect last_insert_rowid()©r4   r5   r6   rA   rB   Úfetchone©r7   rE   Úcursors      r   Útest_atomicsÚPerfTest.test_atomicsi   sµ   é € ä×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—*‘*ÐCÓD×DÐDØ—)‘)“+×ÐàÜØŸ:™:Ð&B×CÔCÀvØ Ÿ/™/Ó+×+Ð+÷ D×Cñ ñ .ÙXÙDÙñ DÙ+÷ D×C×CÐCú÷ .×-Ö-üsÀ   ‚C<¡B:¢C<¥C"ºB<»C"ÁB>ÁC"Á+C Á,C"ÂCÂC"ÂCÂ#CÂ$CÂ(C"Â3CÂ4C"Â:C<Â<C"Â>C"Ã C"ÃC"ÃCÃC"ÃC	ÃCÃC	ÃC"Ã"C9Ã(C+Ã)C9Ã5C<c                ól  #   • [         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   UR	                  5       I S h  v•N    S 7v •  UR                  S5      I S h  v•N   UR	                  5       I S h  v•N   M8   Nn NW NA N$ N! , IS h  v•N  (       d  f       g = f7f)Nr<   ú)insert into perf (k) values (1), (2), (3))r4   r5   r6   rA   rB   ©r7   rE   s     r   Útest_insertsÚPerfTest.test_insertsu   s†   é € ä×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—)‘)“+×ÐàÜØ—j‘jÐ!LÓM×MÐMØ—i‘i“k×!Ð!ñ ñ	 .ÙXÙñ NÙ!÷ .×-Ö-üóx   ‚B4¡B¢B4¥BºB»BÁBÁBÁ1BÁ2BÂ	BÂ
BÂB4ÂBÂBÂBÂBÂB1Â B#Â!B1Â-B4c                ó¨  #   • S n[         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   UR	                  U5      I S h  v•N   UR                  5       I S h  v•N    S 7v •  UR                  S5      I S h  v•N   UR                  5       I S h  v•N   M8   N‡ Np NY NC N& N! , IS h  v•N  (       d  f       g = f7f)Nc                 ój   • U [         R                  :X  a  [         R                  $ [         R                  $ r3   )Úsqlite3ÚSQLITE_DROP_TABLEÚSQLITE_DENYÚ	SQLITE_OK)Úaction_codeÚarg1Úarg2Údb_nameÚtrigger_names        r   Ú
deny_dropsÚ4PerfTest.test_inserts_authorized.<locals>.deny_drops‚   s(   € Øœg×7Ñ7Ó7Ü×*Ñ*Ð*Ü×$Ñ$Ð$r   r<   rQ   )r4   r5   r6   rA   Úset_authorizerrB   )r7   ra   rE   s      r   Útest_inserts_authorizedÚ PerfTest.test_inserts_authorized€   s¤   é € ò	%ô
 ×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ×#Ñ# JÓ/×/Ð/Ø—)‘)“+×ÐàÜØ—j‘jÐ!LÓM×MÐMØ—i‘i“k×!Ð!ñ ñ .ÙXÙ/Ùñ NÙ!÷ .×-Ö-üsŠ   ‚"C¤B,¥C¨B8½B.¾B8ÁB0ÁB8Á.B2Á/B8ÂB4ÂB8Â%B6Â&B8Â,CÂ.B8Â0B8Â2B8Â4B8Â6B8Â8CÂ>CÂ?CÃCc                óÖ  #   • [         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   UR	                  5       I S h  v•N    S 7v •  UR                  S5      I S h  v•N nUR                  S5      I S h  v•N   UR                  5       I S h  v•N   UR	                  5       I S h  v•N   Mi   NŸ Nˆ Nr NU N> N( N! , IS h  v•N  (       d  f       g = f7f)Nr<   úinsert into perf (k) values (1)rI   rJ   rL   s      r   Útest_insert_idsÚPerfTest.test_insert_ids‘   s®   é € ä×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—)‘)“+×ÐàÜØ!Ÿz™zÐ*KÓL×L�Ø—n‘nÐ%AÓB×BÐBØ—o‘oÓ'×'Ð'Ø—i‘i“k×!Ð!ñ ñ	 .ÙXÙñ MÙBÙ'Ù!÷ .×-Ö-üsœ   ‚C)¡C¢C)¥CºC»CÁCÁCÁ1CÁ2CÂ
C	ÂCÂ"CÂ#CÂ:CÂ;CÃC)ÃCÃCÃCÃ	CÃCÃCÃC&ÃCÃC&Ã"C)c                ól  #   • [         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   UR	                  5       I S h  v•N    S 7v •  UR                  S5      I S h  v•N   UR	                  5       I S h  v•N   M8   Nn NW NA N$ N! , IS h  v•N  (       d  f       g = f7f)Nr<   rg   )r4   r5   r6   rA   rB   Úexecute_insertrR   s     r   Útest_insert_macro_idsÚPerfTest.test_insert_macro_idsž   sˆ   é € ä×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXØ—)‘)“+×ÐàÜØ×'Ñ'Ð(IÓJ×JÐJØ—i‘i“k×!Ð!ñ ñ	 .ÙXÙñ KÙ!÷ .×-Ö-ürU   c                óì  #   • [         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   [	        S5       H   nUR                  SU4-  5      I S h  v•N   M"     UR                  5       I S h  v•N    S 7v •  UR                  S5      I S h  v•N n[        UR                  5       I S h  v•N 5      S:X  d   eMG   N¬ N• Nl NR N5 N! , IS h  v•N  (       d  f       g = f7f©Nr<   éd   z insert into perf (k) values (%d)zselect i, k from perf)r4   r5   r6   rA   ÚrangerB   ÚlenÚfetchall)r7   rE   ÚirM   s       r   Útest_selectÚPerfTest.test_select©   s¾   é € ä×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXÜ˜3–Z�Ø—j‘jÐ!CÀqÀdÑ!JÓK×KÒKñ  à—)‘)“+×ÐàÜØ!Ÿz™zÐ*AÓB×B�Ü §¡Ó!2×2Ó3°sÓ:Ð:Ð:ñ ñ .ÙXáKÙñ CÙ2÷ .×-Ö-üsŠ   ‚C4¡C¢C4¥CºC»*CÁ%CÁ&CÂCÂCÂ CÂ!CÂ=C
Â>CÃC4ÃCÃCÃCÃCÃCÃC1Ã C#Ã!C1Ã-C4c                ó¸  #   • [         R                  " [        5       IS h  v•N nUR                  S5      I S h  v•N   [	        S5       H   nUR                  SU4-  5      I S h  v•N   M"     UR                  5       I S h  v•N    S 7v •  [        UR                  S5      I S h  v•N 5      S:X  d   eM/   N” N} NT N: N! , IS h  v•N  (       d  f       g = f7fro   )r4   r5   r6   rA   rq   rB   rr   Úexecute_fetchall)r7   rE   rt   s      r   Útest_select_macroÚPerfTest.test_select_macro¶   s¯   é € ä×$Ò$¤W×-Ô-°Ø—*‘*ÐWÓX×XÐXÜ˜3–Z�Ø—j‘jÐ!CÀqÀdÑ!JÓK×KÒKñ  à—)‘)“+×ÐàÜÜ ×!4Ñ!4Ð5LÓ!M×MÓNÐRUÓUÐUÐUñ ñ .ÙXáKÙñ N÷ .×-Ö-üsx   ‚C¡B6¢C¥C ºB8»*C Á%B:Á&C ÂB<Â#C Â%B>
Â&C Â6CÂ8C Â:C Â<C Â>C Ã CÃC	ÃCÃCc              ƒ   ó–  ^#   • [         R                  " [        5       IS h  v•N mTR                  S5      I S h  v•N   [	        S5       Hh  nUS-  nTR                  S/ [	        X"S-   5       Vs/ sH  nU[        R                  4PM     snQ5      I S h  v•N   TR                  5       I S h  v•N   Mj     S[        4U4S jjn[	        SS5       Vs/ sH  nS	U-  PM
     sn H   n[        US
U 35      " U5      I S h  v•N   M"     S S S 5      IS h  v•N   g  Nö Nßs  snf  N‹ Nus  snf  N+ N! , IS h  v•N  (       d  f       g = f7f)Nz]create table ic_perf (i integer primary key asc, k integer, a integer, b integer, c char(16))é€   i   z3insert into ic_perf (k, a, b, c) values(?, 1, 2, ?)Ú
chunk_sizec                óØ   >#   •  TR                  S5       IS h  v•N nXl        U  S h  v•N nS 7v •  M   N N
 S S S 5      IS h  v•N    O! , IS h  v•N  (       d  f       O= fMe  7f)NzSELECT * FROM ic_perf)rA   Úiter_chunk_size)r}   rM   Ú_rE   s      €r   Ú	test_perfÚ5PerfTest.test_iterable_cursor_perf.<locals>.test_perfÕ   sV   øé € ØØ!Ÿz™zÐ*A×BÔBÀfØ1;Ô.Ù'-÷ " !Þ!ñ  Cñ" v÷  C×B×B×B×BÐBúñ ùs[   ƒA*š7›A*ž	A§;«9¬;¯A·A*¹;»A¼A*ÁA
ÁA*ÁA%ÁAÁA%Á!	A*é   é   é   ziterable_cursor @ )r4   r5   r6   rA   rq   ÚexecutemanyÚstringÚascii_lowercaserB   Úintr   )r7   ÚbatchÚr_startrt   r�   r}   rE   s         @r   Útest_iterable_cursor_perfÚ"PerfTest.test_iterable_cursor_perfÂ   s6  øé € Ü×$Ò$¤W×-Ô-°Ø—*‘*ðZó÷ ð ô ˜sž�Ø $™,�Ø—n‘nØIðô &+¨7¸d±NÔ%Cóá%C ð ¤× 6Ñ 6Ó7Ù%Cñðó÷ ð ð —i‘i“k×!Ò!ñ $ð"¬C÷ "ô .3°1°b¬\Ó:©\¨˜q !œt©\Ô:�
Ü˜IÐ);¸J¸<Ð'HÔIÈ*ÓU×UÒUñ ;÷3 .×-Ò-ñùòññ "ùò ;ÙU÷5 .×-×-Ð-üs¢   ƒE	¢D£E	¦D/»D¼4D/Á0DÂD/ÂD"ÂD/Â.D$Â/$D/ÃD&Ã!D/Ã?D+Ä D/ÄE	ÄD-ÄE	ÄD/ÄD/Ä$D/Ä&D/Ä-E	Ä/EÄ5D8Ä6EÅE	© N)r   Ú
__module__Ú__qualname__Ú__firstlineno__Úclassmethodr%   r0   r   r8   rF   rN   rS   rd   rh   rl   ru   ry   rŒ   Ú__static_attributes__rŽ   r   r   r!   r!   A   sæ   † Øñó ðð ñPó ðPð ñó ðð ñó ðð" ñ	,ó ð	,ð ñ"ó ð"ð ñ"ó ð"ð  ñ
"ó ð
"ð ñ"ó ð"ð ñ
;ó ð
;ð ñ	Vó ð	VõVr   r!   r3   )Ú__doc__rX   r‡   r>   r	   Úunittestr   ÚTestCaser4   Úsmoker   r6   r
   r   r   r!   rŽ   r   r   Ú<module>r˜      sF   ðñó Û Û Û å 8ã Ý à
€Ø	€Ø
€ô(ôV\Vˆxõ \Vr   