ó
    ÈvIj#  ã                  ó´  • S SK Jr  S SKrS SKJs  Jr  S SK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JrJr  S SKr\	R&                  R)                  S \" \" \5      R/                  5       R0                  S   S-  5      5        S SKJrJr  S SKJr  S S	KJr  S S
K J!r!J"r"J#r#J$r$J%r%J&r&  S SK'J(r(  SS jr)SS jr*S r+S r,S r-S r.S r/\R`                  " SS9S 5       r1g)é    )ÚannotationsN)ÚPath)Ú	MagicMockÚpatché   Úsrc)Ú	ApiClientÚApiError)ÚConfig)Ú	send_once)Úprocess_commandsÚload_command_statesÚupdate_command_stateÚrecover_interrupted_commandsÚCommandWorkerManagerÚHANDLERS)Úsetup_loggingc                ó    • U [         R                  S'   S[         R                  S'   SS KnSS KnUR	                  U5        UR                  5       $ )NÚWOLFPANEL_DEV_HOMEÚ1ÚWOLFPANEL_API_MOCKr   )ÚosÚenvironÚ	importlibÚconfigÚreloadÚload_config)Útmpr   Úconfig_modules      Ú=D:\Programs\laragon\www\wolf\agent\tests\test_non_blocking.pyÚ_fresh_configr!      sC   € Ø'*„B‡J�JÐ#Ñ$Ø'*„B‡J�JÐ#Ñ$ÛÛ"Ø×Ñ�]Ô#Ø×$Ñ$Ó&Ð&ó    c                ób   • [        U 5      nSSKJnJn  U" U5        U" USS5        [        U 5      $ )Nr   )Úensure_dirsÚstore_credentialsÚ
server_123Úwp_agent_dev_token)r!   Úidentityr$   r%   )r   Úcfgr$   r%   s       r    Ú_registered_configr*   '   s/   € Ü
˜Ó
€Cß7Ù�ÔÙ�c˜<Ð)=Ô>Ü˜ÓÐr"   c                óF  • [        [        U 5      5      n[        5       nSS0 S./UR                  l        [        SS0S9nU[
        S'   S[        R                  S'   S[        R                  S	'   [        S
SS9   [        X5        [        R                  " S5        UR                  5         [        UR                  5      nUS   S   nSoeU:H  ow(       do  [        R                   " SU4SXV45      [        R"                  " U5      [        R"                  " U5      S.-  nSSU0-  n	[%        [        R&                  " U	5      5      eS =n=pvUR(                  R+                  SSS0S5        UR(                  R+                  SSSS0S.S5        S S S 5        g ! , (       d  f       g = f)Née   z	test.noop©ÚidÚcommand_typeÚpayloadÚsuccessT©Úreturn_valuer   ÚWOLFPANEL_TEST_ASYNCÚ!WOLFPANEL_MAX_CONCURRENT_COMMANDSúcommand_runner.load_agent_tokenr'   ç      à?Ú101Ústatus©ú==©z%(py1)s == %(py4)s©Úpy1Úpy4úassert %(py6)sÚpy6ÚrunningÚ	succeeded©r9   Úresult)r*   Ústrr   Úget_pending_commandsr3   r   r   r   r   r   ÚtimeÚsleepÚassert_called_oncer   Úvar_dirÚ
@pytest_arÚ_call_reprcompareÚ	_safereprÚAssertionErrorÚ_format_explanationÚpost_command_resultÚassert_any_call)
Útmp_pathr)   Ú
api_clientÚ	mock_noopÚstatesÚ@py_assert0Ú@py_assert3Ú@py_assert2Ú@py_format5Ú@py_format7s
             r    Útest_command_state_transitionsr\   /   sZ  € Ü
œS ›]Ó
+€Cô “€Jà K¸BÑ?ð4€J×#Ñ#Ô0ô
 ¨	°4Ð'8Ñ9€IØ%„Hˆ[Ñð *-„B‡J�JÐ%Ñ&Ø69„B‡J�JÐ2Ñ3ä	Ð0Ð?SÓ	TÜ˜Ô)ô 	�
Š
�3Œð 	×$Ñ$Ô&ô % S§[¡[Ó1ˆØ�e‰}˜XÑ&Ð3¨)Ð3¨)Ñ3×3×3×3Ò3Ð&×3×3Ô3Ð&×3×3Ó3¨)×3×3×3×3×3×3Ó3ð 	×&Ñ&×6Ñ6°s¸XÀyÐ<QÐSgÔhØ×&Ñ&×6Ñ6°sÀ{Ð_hÐjnÐ^oÑ<pð  sGô  	H÷ 
U×	TÖ	Tús   Á9DFÆ
F c                ó®  ^^• [        [        U 5      5      n[        R                  " 5       m[        R                  " 5       mUU4S jnS nU[        S'   U[        S'   [        5       nSS0 S.SS0 S./UR                  l        S[        R                  S	'   S[        R                  S
'   [        SSS9   [        X5        TR                  SS9  [        UR                  5      nUS   S   nSovU:H  oˆ(       do  [        R                   " SU4SXg45      [        R"                  " U5      [        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =n=p‡US   S   nSovU:H  oˆ(       do  [        R                   " SU4SXg45      [        R"                  " U5      [        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =n=p‡TR)                  5         [*        R,                  " S5        [        UR                  5      nUS   S   nSovU:H  oˆ(       do  [        R                   " SU4SXg45      [        R"                  " U5      [        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =n=p‡US   S   nSovU:H  oˆ(       do  [        R                   " SU4SXg45      [        R"                  " U5      [        R"                  " U5      S.-  n	SSU	0-  n
[%        [        R&                  " U
5      5      eS =n=p‡S S S 5        g ! , (       d  f       g = f)Nc                óJ   >• TR                  5         TR                  SS9  SS0$ )Ng       @©Útimeoutr1   T)ÚsetÚwait)r0   Úevent_1Úevent_2s    €€r    Ú	handler_1Ú)test_concurrency_limit.<locals>.handler_1X   s%   ø€ Ø�‰ŒØ�‰˜SˆÑ!Ø˜4Ð Ð r"   c                ó
   • SS0$ )Nr1   T© )r0   s    r    Ú	handler_2Ú)test_concurrency_limit.<locals>.handler_2]   s   € Ø˜4Ð Ð r"   z
test.slow1z
test.slow2éÉ   r-   éÊ   r   r4   r5   r6   r'   r2   g      ð?r_   Ú201r9   rB   r:   r<   r=   r@   rA   Ú202Úpendingr7   r1   )r*   rF   Ú	threadingÚEventr   r   rG   r3   r   r   r   r   rb   r   rK   rL   rM   rN   rO   rP   ra   rH   rI   )rS   r)   re   ri   rT   rV   rW   rX   rY   rZ   r[   rc   rd   s              @@r    Útest_concurrency_limitrr   R   sM  ù€ Ü
œS ›]Ó
+€Cä�oŠoÓ€GÜ�oŠoÓ€Gö!ò
!ð '„Hˆ\ÑØ&„Hˆ\Ñä“€Jð  L¸RÑ@Ø L¸RÑ@ð4€J×#Ñ#Ô0ð *-„B‡J�JÐ%Ñ&Ø69„B‡J�JÐ2Ñ3ä	Ð0Ð?SÓ	TÜ˜Ô)ð 	�‰˜SˆÑ!ô % S§[¡[Ó1ˆØ�e‰}˜XÑ&Ð3¨)Ð3¨)Ñ3×3×3×3Ò3Ð&×3×3Ô3Ð&×3×3Ó3¨)×3×3×3×3×3×3Ó3Ø�e‰}˜XÑ&Ð3¨)Ð3¨)Ñ3×3×3×3Ò3Ð&×3×3Ô3Ð&×3×3Ó3¨)×3×3×3×3×3×3Ó3ð 	�‰ŒÜ�
Š
�3Œô % S§[¡[Ó1ˆØ�e‰}˜XÑ&Ð3¨)Ð3¨)Ñ3×3×3×3Ò3Ð&×3×3Ô3Ð&×3×3Ó3¨)×3×3×3×3×3×3Ó3Ø�e‰}˜XÑ&Ð3¨)Ð3¨)Ñ3×3×3×3Ò3Ð&×3×3Ô3Ð&×3×3Ó3¨)×3×3×3×3×3×3Ó3÷% 
U×	TÖ	Tús   Â2JMÍ
Mc                ó  ^
• [        [        U 5      5      n[        R                  " 5       m
U
4S jnU[        S'   [        5       nSSSS0S./UR                  l        S[        R                  S'   S[        R                  S	'   [        S
SS9   [        X5        [        R                  " S5        [        UR                  5      nUS   S   nSoeU:H  ow(       do  [         R"                  " SU4SXV45      [         R$                  " U5      [         R$                  " U5      S.-  nSSU0-  n	['        [         R(                  " U	5      5      eS =n=pvUR*                  R-                  SSSS0S.S5        S S S 5        g ! , (       d  f       g = f)Nc                ó*   >• TR                  SS9  SS0$ )Ng      @r_   r1   T)rb   )r0   Úevents    €r    Úslow_handlerÚ*test_command_timeout.<locals>.slow_handlerˆ   s   ø€ Ø�
‰
˜3ˆ
ÑØ˜4Ð Ð r"   ztest.timeouti-  r`   r   r-   r   r4   r5   r6   r'   r2   g      ø?Ú301r9   Úfailedr:   r<   r=   r@   rA   Úerrorz+Command execution timed out after 1 secondsrD   )r*   rF   rp   rq   r   r   rG   r3   r   r   r   r   rH   rI   r   rK   rL   rM   rN   rO   rP   rQ   rR   )rS   r)   rv   rT   rV   rW   rX   rY   rZ   r[   ru   s             @r    Útest_command_timeoutr{   ƒ   s1  ø€ Ü
œS ›]Ó
+€Cä�OŠOÓ€Eõ!ð  ,„Hˆ^Ñä“€Jð  NÀ	È1¸~ÑNð4€J×#Ñ#Ô0ð
 *-„B‡J�JÐ%Ñ&Ø69„B‡J�JÐ2Ñ3ä	Ð0Ð?SÓ	TÜ˜Ô)ô 	�
Š
�3Œô % S§[¡[Ó1ˆØ�e‰}˜XÑ&Ð2¨(Ð2¨(Ñ2×2×2×2Ò2Ð&×2×2Ô2Ð&×2×2Ó2¨(×2×2×2×2×2×2Ó2ð 	×&Ñ&×6Ñ6ØØ¨GÐ5bÐ+cÑdØ ô	
÷ 
U×	TÖ	Tús   ÂC!E6Å6
Fc                ó
  • [        [        U 5      5      n[        UR                  SSSSS9  [        UR                  SSSSS9  [        UR                  SS	SSS9  [	        5       n[        S
SS9   [        X5        [        UR                  5      nUS   S   nSoTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUS   S   nSoTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUS   S   nS	oTU:H  of(       do  [        R                  " SU4SXE45      [        R                  " U5      [        R                  " U5      S.-  nSSU0-  n[        [        R                  " U5      5      eS =n=peUR                  R                  SSSS0S.S5        UR                  R                  SSSS0S.S5        S S S 5        g ! , (       d  f       g = f)NÚ401rB   Úsome_actionÚold_time)r9   r/   Ú
updated_atÚ402ro   Ú403r1   r6   r'   r2   r9   ry   r:   r<   r=   r@   rA   i‘  rz   z(Agent restarted during command executionrD   i’  )r*   rF   r   rK   r   r   r   r   rL   rM   rN   rO   rP   rQ   rR   )	rS   r)   rT   rV   rW   rX   rY   rZ   r[   s	            r    Útest_startup_recoveryrƒ   ©   sÙ  € Ü
œS ›]Ó
+€Cô ˜Ÿ™ e°IÈMÐfpÒqÜ˜Ÿ™ e°IÈMÐfpÒqÜ˜Ÿ™ e°IÈMÐfpÒqä“€Jä	Ð0Ð?SÓ	Tä$ SÔ5ô % S§[¡[Ó1ˆØ�e‰}˜XÑ&Ð2¨(Ð2¨(Ñ2×2×2×2Ò2Ð&×2×2Ô2Ð&×2×2Ó2¨(×2×2×2×2×2×2Ó2Ø�e‰}˜XÑ&Ð2¨(Ð2¨(Ñ2×2×2×2Ò2Ð&×2×2Ô2Ð&×2×2Ó2¨(×2×2×2×2×2×2Ó2Ø�e‰}˜XÑ&Ð3¨)Ð3¨)Ñ3×3×3×3Ò3Ð&×3×3Ô3Ð&×3×3Ó3¨)×3×3×3×3×3×3Ó3ð 	×&Ñ&×6Ñ6ØØ¨GÐ5_Ð+`ÑaØ ô	
ð
 	×&Ñ&×6Ñ6ØØ¨GÐ5_Ð+`ÑaØ ô	
÷! 
U×	TÖ	Tús   Á.G=I4É4
Jc                óÌ
  • [        [        U 5      5      n[        R                  " S5      n[	        UR
                  5       H  nUR                  U5        M     SS KnSUl        [        UR                  [        R                  S9  [        R                  " S5      n[        R                  " S5      nUR                  S5        UR                  S5        [        R                  " 5         UR                  nUR                  R                  S	-  nUR                  o™" 5       oª(       dš  S
S[         R"                  " 5       ;   d  [$        R&                  " U5      (       a  [$        R(                  " U5      OS[$        R(                  " U	5      [$        R(                  " U
5      S.-  n[+        [$        R,                  " U5      5      eS =pšUR                  o™" 5       oª(       dš  S
S[         R"                  " 5       ;   d  [$        R&                  " U5      (       a  [$        R(                  " U5      OS[$        R(                  " U	5      [$        R(                  " U
5      S.-  n[+        [$        R,                  " U5      5      eS =pšUR/                  SS9nUR/                  SS9nSoîU;   oÿ(       d¥  [$        R0                  " SU4SXì45      [$        R(                  " U5      S[         R"                  " 5       ;   d  [$        R&                  " U5      (       a  [$        R(                  " U5      OSS.-  nSSU0-  n[+        [$        R,                  " U5      5      eS =pïSoîU;  oÿ(       d¥  [$        R0                  " SU4SXì45      [$        R(                  " U5      S[         R"                  " 5       ;   d  [$        R&                  " U5      (       a  [$        R(                  " U5      OSS.-  nSSU0-  n[+        [$        R,                  " U5      5      eS =pïSoîU;   oÿ(       d¥  [$        R0                  " SU4SXí45      [$        R(                  " U5      S[         R"                  " 5       ;   d  [$        R&                  " U5      (       a  [$        R(                  " U5      OSS.-  nSSU0-  n[+        [$        R,                  " U5      5      eS =pïSoîU;  oÿ(       d¥  [$        R0                  " SU4SXí45      [$        R(                  " U5      S[         R"                  " 5       ;   d  [$        R&                  " U5      (       a  [$        R(                  " U5      OSS.-  nSSU0-  n[+        [$        R,                  " U5      5      eS =pïg )NÚ	wolfpanelr   F)Úlevelzwolfpanel.heartbeatzwolfpanel.runnerzthis is a heartbeat log messagezthis is a runner log messagezjobs.logzBassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.is_file
}()
}Úagent_log_file)Úpy0Úpy2r?   Újobs_log_filezutf-8)Úencoding)Úin)z%(py1)s in %(py3)sÚagent_content)r>   Úpy3zassert %(py5)sÚpy5)únot in)z%(py1)s not in %(py3)sÚjobs_content)r*   rF   ÚloggingÚ	getLoggerÚlistÚhandlersÚremoveHandlerÚloggerÚ_configuredr   Ú	agent_logÚDEBUGÚinfoÚshutdownÚparentÚis_fileÚ@py_builtinsÚlocalsrL   Ú_should_repr_global_namerN   rO   rP   Ú	read_textrM   )rS   r)   Úroot_loggerÚhandlerr—   Úhb_logÚrun_logr‡   rŠ   Ú@py_assert1rX   rZ   r�   r‘   rW   rY   Ú@py_format4Ú@py_format6s                     r    Útest_split_loggingrª   Ê   s/  € Ü
œS ›]Ó
+€Cô ×#Ò# KÓ0€KÜ˜×,Ñ,Ö-ˆØ×!Ñ! 'Ö*ñ .ó Ø€FÔÜ�#—-‘-¤w§}¡}Ò5ô ×ÒÐ4Ó5€FÜ×ÒÐ 2Ó3€Gà
‡K�KÐ1Ô2Ø‡L�LÐ/Ô0ô ×ÒÔà—]‘]€NØ—M‘M×(Ñ(¨:Ñ5€Mà×!Ñ!Ð#Ð!Ó#Ð#Õ#×#×#×#×#×#Ñ#ˆ>×#×#×#Ñ#ˆ>×#×#Õ#Ð!×#×#Ó#Ð#×#×#×#×#×#Ò#Ø× Ñ Ð"Ð Ó"Ð"Õ"×"×"×"×"×"Ñ"ˆ=×"×"×"Ñ"ˆ=×"×"Õ"Ð ×"×"Ó"Ð"×"×"×"×"×"Ò"à"×,Ñ,°gÐ,Ð>€MØ ×*Ñ*°GÐ*Ð<€Là,Ð=°Ñ=×=×=×=Ò=Ð,×=×=Ô=Ð,×=×=×=×=×=Ô=°×=×=×=Ñ=°×=×=×=×=×=×=Ó=Ø)Ð>°Ñ>×>×>×>Ò>Ð)×>×>Ô>Ð)×>×>×>×>×>Ô>°×>×>×>Ñ>°×>×>×>×>×>×>Ó>à)Ð9¨\Ñ9×9×9×9Ò9Ð)×9×9Ô9Ð)×9×9×9×9×9Ô9¨\×9×9×9Ñ9¨\×9×9×9×9×9×9Ó9Ø,Ð@°LÑ@×@×@×@Ò@Ð,×@×@Ô@Ð,×@×@×@×@×@Ô@°L×@×@×@Ñ@°L×@×@×@×@×@×@Ô@r"   T)Úautousec               #  ó.  #   • [         R                  R                  S5      n [         R                  R                  S5      nSS KnUR                  b!  UR                  R                  5         S Ul        S v •  U b  U [         R                  S'   O [         R                  R                  SS 5        Ub  U[         R                  S'   O [         R                  R                  SS 5        UR                  b"  UR                  R                  5         S Ul        g g 7f)Nr4   r5   r   )r   r   ÚgetÚcommand_runnerÚ_worker_managerrœ   Úpop)Ú
orig_asyncÚorig_maxr®   s      r    Ú	clean_envr³   ò   sÚ   é € ô —‘—‘Ð 6Ó7€JÜ�z‰z�~‰~ÐAÓB€Hó Ø×%Ñ%Ñ1Ø×&Ñ&×/Ñ/Ô1Ø)-ˆÔ&ã	ð ÑØ-7Œ�
‰
Ð)Ò*ä
�
‰
�‰Ð-¨tÔ4àÑØ:BŒ�
‰
Ð6Ò7ä
�
‰
�‰Ð:¸DÔAð ×%Ñ%Ñ1Ø×&Ñ&×/Ñ/Ô1Ø)-ˆÕ&ð 2ùs   ‚DD)r   rF   Úreturnr   )2Ú
__future__r   ÚbuiltinsrŸ   Ú_pytest.assertion.rewriteÚ	assertionÚrewriterL   r   ÚsysrH   r’   rp   Úpathlibr   Úunittest.mockr   r   ÚpytestÚpathÚinsertrF   Ú__file__ÚresolveÚparentsrT   r	   r
   r   r   Ú	heartbeatr   r®   r   r   r   r   r   r   r—   r   r!   r*   r\   rr   r{   rƒ   rª   Úfixturer³   rh   r"   r    Ú<module>rÅ      s¹   ðÝ "ç  „ ƒ	Û 
Û Û Û Ý ß *ã ð ‡�‡��‘3‘t˜H“~×-Ñ-Ó/×7Ñ7¸Ñ:¸UÑBÓCÔ Dç *Ý Ý ÷÷ õ !ô'ôò HòF.4òb#
òL
òB$AðP ‡‚˜Ññ.ó ñ.r"   