
    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    '*BJJ#$'*BJJ#$"]#$$&&    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)Ne   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KB?4J##0
 	4'89I%H[ *-BJJ%&69BJJ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6sXy<QSgh&&66s{_hjn^o<p  sG  	H 
U	T	Ts   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=pU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=pT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=pU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=pS 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ooGooG!
! 'H\&H\J LR@LR@4J##0 *-BJJ%&69BJJ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	Ts   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OOE!  ,H^J N	1~N4J##0
 *-BJJ%&69BJJ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G5b+cd 	
 
U	T	Ts   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 eIMfpqeIMfpqeIMfp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G5_+`a 	

 	&&66G5_+`a 	
! 
U	T	Ts   .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 =pU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 =pUR/                  SS9nUR/                  SS9nSoU;   o(       d  [$        R0                  " SU4SX4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 =pSoU;  o(       d  [$        R0                  " SU4SX4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 =pSoU;   o(       d  [$        R0                  " SU4SX4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 =pSoU;  o(       d  [$        R0                  " SU4SX4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 =pg )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0K,,-!!'* . F#--w}}5 45F 23G
KK12LL/0 ]]NMM((:5M!!#!#########>####>###!##########  " """""""""=""""=""" """"""""""",,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7Jzz~~ABH %%1&&//1)-&	 -7

)*


-t4:B

67


:DA %%1&&//1)-& 2s   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    "   	 
     *  3tH~--/77:UBC D *    !' HF.4b#
L
B$AP . .r"   