
    aj                    t    d dl mZ d dlZd dlmc mZ d dlm	Z	 d dl
mZmZmZ dd	Zdd
ZddZddZddZdS )    )annotationsN)Path)ALLOWED_ACTIONSrestart_system_componentsystem_statustmp_pathr   returnNonec           	     
   | dz  }| dz  }|                                  |                                  t          ||d          }|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j        |                    d x}x}}|d         d         }ddh}||v }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j        |                    d x}x}}|d         d         }ddh}||v }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j        |                    d x}x}}|d         }d}||k    }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j        |                    d x}x}}|d         }d}||u }|slt          j        d|fd||f          t          j        |          t          j        |          d	z  }d
d|iz  }t          t          j        |                    d x}x}}d}t          |          }	|	j        }
 |
            }||v}|st          j        d|fd||f          t          j        |          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |          rt          j        |          ndt          j        |	          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}x}	x}
}d}t          |          }	|	j        }
 |
            }||v}|st          j        d|fd||f          t          j        |          dt          j
                    v st          j        t                    rt          j        t                    nddt          j
                    v st          j        |          rt          j        |          ndt          j        |	          t          j        |
          t          j        |          dz  }dd|iz  }t          t          j        |                    d x}x}x}	x}
}d S ) Nruntimerepozhttp://100.85.29.67:8000)runtime_dir	repo_rootapi_urlpurposesystem_ops_status_v1==z%(py1)s == %(py4)spy1py4assert %(py6)spy6backendstatusrunningofflinein)z%(py1)s in %(py4)sfrontendr   runtime_db_availableFisz%(py1)s is %(py4)stokennot inzh%(py1)s not in %(py10)s
{%(py10)s = %(py8)s
{%(py8)s = %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}.lower
}()
}strr   py3r   r   py8py10assert %(py12)spy12secret)mkdirr   
@pytest_ar_call_reprcompare	_safereprAssertionError_format_explanationr*   lower@py_builtinslocals_should_repr_global_name)r   r   r   r   @py_assert0@py_assert3@py_assert2@py_format5@py_format7@py_assert5@py_assert7@py_assert9@py_format11@py_format13s                 a/home/agent/.hermes/worktrees/FinanceManager-sprint0-v2/tests/unit/test_system_ops_controls_v1.pyCtest_system_status_reports_backend_frontend_runtime_without_secretsrG      sw   "GfDMMOOOJJLLLw$HbcccF)6 66 66666666666 6666666666 6666666666666666666666666666)X&@9i*@@&*@@@@@@@@@@@&*@@@@@@&@@@@*@@@@@@@@@@@@@@@@@@@@@@@@@@@@*h'AIy+AA'+AAAAAAAAAAA'+AAAAAA'AAAA+AAAAAAAAAAAAAAAAAAAAAAAAAAAA): :: ::::::::::: :::::::::: ::::::::::::::::::::::::::::()2U2)U2222222222)U22222)2222U222222222222222222222222222-#f++-++-++---7-----------7------7-----------#-----#-------------f-----f------+----+------------------------------------.3v;;.;,.,,...8...........8......8...........3.....3.............v.....v......;....,......................................    c                   | dz  }| dz  }|dz  }|                     d           |                                  |dz                      dd	           t          ||
          }t          |d                   }d}||v}|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }dd|iz  }	t          t	          j        |	                    d x}}d}||v}|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }dd|iz  }	t          t	          j        |	                    d x}}d}||v}|st	          j        d|fd||f          t	          j        |          dt          j                    v st	          j	        |          rt	          j        |          nddz  }dd|iz  }	t          t	          j        |	                    d x}}d S )Nr   r   logsTparentsops_actions.jsonlz{"action":"restart_backend","status":"scheduled","worker_pid":123,"worker_log":"/private/runtime/restart.log","script":"scripts/restart_backend.sh"}
utf-8encodingr   r   last_restart
worker_pidr'   z%(py1)s not in %(py3)srenderedr   r,   assert %(py5)spy5
worker_logz	/private/)r2   
write_textr   r*   r3   r4   r5   r9   r:   r;   r6   r7   )
r   r   r   rJ   r   rU   r<   r>   @py_format4@py_format6s
             rF   ?test_system_status_redacts_legacy_restart_paths_and_process_idsr]      s   "GfDVDJJtJJJLLL	++ 	a ,   
 w$???F6.)**H'<x''''''''''<x'''''<'''''''''''x'''''x''''''''''''''''''''''''''''<x''''''''''<x'''''<'''''''''''x'''''x'''''''''''''''''''''''''''&;h&&&&&&&&&&;h&&&&&;&&&&&&&&&&&h&&&&&h&&&&&&&&&&&&&&&&&&&&&&&&&&&&&rH   c           	     ~   | dz  }| dz  }|dz  }|                     d           |                                  |dz  }|                    dd	           |                    d
           t          d||          }|d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}|d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}|d         }|s:ddt	          j        |          iz  }t          t	          j        |                    d }|d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}|d         }d}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}d}t          |          }|j
        } |            }||v}|st	          j        d|fd||f          t	          j        |          d t          j                    v st	          j        t                    rt	          j        t                    nd d!t          j                    v st	          j        |          rt	          j        |          nd!t	          j        |          t	          j        |          t	          j        |          d"z  }d#d$|iz  }t          t	          j        |                    d x}x}x}x}}|d%z  d&z  }|j        } |            }|sd'd(t          j                    v st	          j        |          rt	          j        |          nd(t	          j        |          t	          j        |          d)z  }	t          t	          j        |	                    d x}}d}|j        }d} ||	          }||v }|st	          j        d*|fd+||f          t	          j        |          d(t          j                    v st	          j        |          rt	          j        |          nd(t	          j        |          t	          j        |          t	          j        |          d,z  }d-d.|iz  }t          t	          j        |                    d x}x}x}x}}d S )/Nr   r   scriptsTrK   zrestart_frontend.shz,#!/usr/bin/env bash
echo restarted frontend
rN   rO     r!   rQ   r   	scheduledr   r   r   r   r   actionrestart_frontendmessagezassert %(py1)sr   	componentworker_startedr#   r%   zrestarted frontendr'   r)   r*   resultr+   r/   r0   rJ   rM   zAassert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}ops_log)py0py2r   r   )zX%(py1)s in %(py9)s
{%(py9)s = %(py5)s
{%(py5)s = %(py3)s.read_text
}(encoding=%(py7)s)
})r   r,   rX   py7py9zassert %(py11)spy11)r2   rZ   chmodr   r3   r4   r5   r6   r7   r*   r8   r9   r:   r;   exists	read_text)r   r   r   r_   scriptrg   r<   r=   r>   r?   r@   @py_format2rA   rB   rC   rD   rE   rh   @py_assert1@py_assert4@py_assert6@py_assert8@py_format10@py_format12s                           rF   Ftest_restart_uses_only_allowed_repo_scripts_and_writes_runtime_ops_logry   +   s   "GfDYGMM$MMMOOO,,F
FQXYYY
LL%jgQUVVVF(*{*{**********{*********{***************************(1111111111111111111111111111111111111111111111111111)+,*,*,,,,,,,,,,*,,,,,,,,,*,,,,,,,,,,,,,,,,,,,,,,,,,,,"#+t+#t++++++++++#t+++++#++++t+++++++++++++++++++++++++++:s6{{:{'8:'8'8':'::':::::::::::':::::::::::::::::s:::::s:::::::::::::6:::::6::::::{::::'8::::'::::::::::::::::::::::::::::::::!44G>>>77>D!2DGD!2!2G!D!D!DD!DDDDDDDDDDD!DDDDDDDDDDDDDDDDDDDDDDDDDDDD!2DDDDGDDDD!DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDrH   c                >   | dz  }| dz  }|                                  |                                  t          t                    }h d}||k    }|st          j        d|fd||f          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        t                    rt          j        t                    ndt          j        |          t          j        |          dz  }d	d
|iz  }t          t          j
        |                    d x}x}}	 t          d||           t          d          # t          $ r}d}	t          |          }|	|v }|st          j        d|fd|	|f          t          j        |	          dt          j                    v st          j        t                    rt          j        t                    nddt          j                    v st          j        |          rt          j        |          ndt          j        |          dz  }d	d
|iz  }t          t          j
        |                    d x}	x}}Y d }~d S d }~ww xY w)Nr   r   >   r   r!   	dashboardr   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)ssetr   )ri   r   r,   r   assert %(py8)sr-   zrm -rf /rQ   zfree-form command was acceptedunsupported_system_actionr   )z0%(py1)s in %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}r*   excr   r,   r   r   )r2   r|   r   r3   r4   r9   r:   r;   r5   r6   r7   r   
ValueErrorr*   )
r   r   r   r>   rA   rt   r@   @py_format9r   r<   s
             rF   Dtest_restart_rejects_unknown_actions_and_never_accepts_free_commandsr   B   s   "GfDMMOOOJJLLLG#G#G#GG#GGGGGGGGGGG#GGGGGGGGGGGGG3GGGGG3GGGGGGGGGGGGGGGGGGGGGGGGGGGG#GGGGGGGGGGGGGGGGGGGGGGGGGGGG? DQQQQ =>>>  7 7 7*6c#hh6*h6666666666*h66666*66666666666c66666c6666666666666#66666#666666h6666666666666666666666666666666667s   E7 7JDJJc                   | dz  }| dz  }|dz  }|                     d           |                                  |dz  }|                    dd	           |                    d
           t          d||          }|d         }d}||k    }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}|d         }d }||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}|d         }d}||u }|slt	          j        d|fd||f          t	          j        |          t	          j        |          dz  }	dd|	iz  }
t          t	          j        |
                    d x}x}}d}||v}|st	          j        d|fd||f          t	          j        |          dt          j
                    v st	          j        |          rt	          j        |          nddz  }dd|iz  }t          t	          j        |                    d x}}d}||v}|st	          j        d|fd||f          t	          j        |          dt          j
                    v st	          j        |          rt	          j        |          nddz  }dd|iz  }t          t	          j        |                    d x}}d }t          |          }||v}|st	          j        d|fd!||f          t	          j        |          d"t          j
                    v st	          j        t                    rt	          j        t                    nd"dt          j
                    v st	          j        |          rt	          j        |          ndt	          j        |          d#z  }
d$d%|
iz  }t          t	          j        |                    d x}x}}d S )&Nr   r   r_   TrK   zrestart_backend.shz:#!/usr/bin/env bash
echo redacted-sensitive-marker
exit 7
rN   rO   r`   r   rQ   r   ra   r   r   r   r   r   return_coder#   r%   log_availablerY   r'   rT   rg   rV   rW   rX   rS   zredacted-sensitive-marker)z4%(py1)s not in %(py6)s
{%(py6)s = %(py3)s(%(py4)s)
}r*   r   r}   r-   )r2   rZ   rn   r   r3   r4   r5   r6   r7   r9   r:   r;   r*   )r   r   r   r_   rq   rg   r<   r=   r>   r?   r@   r[   r\   rA   r   s                  rF   9test_restart_schedules_worker_without_returning_long_logsr   Q   s1   "GfDYGMM$MMMOOO++F
U`ghhh
LL%iWPTUUUF(*{*{**********{*********{***************************- (D( D(((((((((( D((((( ((((D(((((((((((((((((((((((((((/"*d*"d**********"d*****"****d***************************%<v%%%%%%%%%%<v%%%%%<%%%%%%%%%%%v%%%%%v%%%%%%%%%%%%%%%%%%%%%%%%%%%%<v%%%%%%%%%%<v%%%%%<%%%%%%%%%%%v%%%%%v%%%%%%%%%%%%%%%%%%%%%%%%%%%&9c&kk9&k9999999999&k99999&99999999999c99999c9999999999999&99999&999999k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999rH   )r   r   r	   r
   )
__future__r   builtinsr9   _pytest.assertion.rewrite	assertionrewriter3   pathlibr   "jarvis_finance.services.system_opsr   r   r   rG   r]   ry   r   r    rH   rF   <module>r      s    " " " " " "                     g g g g g g g g g g/ / / / ' ' ' '&E E E E.? ? ? ?: : : : : :rH   