
    ՞ie
                     j   d Z ddlZddlZdZdededeeef   fdZdedede	fd	Z
ed
k(  rddlZddlZ eej                        dkD  rej                  d   ndZ eej                        dkD  rej                  d   j#                  d      ndgZ e
ee      Z e ej*                  edd             yy)ug   
api_health.py - API 헬스체크 verifier
subprocess로 curl을 실행하여 HTTP 상태코드 확인
    N   base_urlendpointreturnc                 >   | j                  d      dz   |j                  d      z   }dddddddt        t              d	t        t              |g}	 t	        j
                  |d
d
t        dz         }|j                  j                         }|sdd| dfS 	 t        |      }|dk(  r
d
d| d| fS dd| d| dfS # t        $ r dd| d|fcY S w xY w# t        j                  $ r dd| dt         dfcY S t        $ r Y yt        $ r}dd| d| fcY d}~S d}~ww xY w)uF   단일 엔드포인트를 curl로 체크. (ok, detail_message) 반환./curlz-sz-oz	/dev/nullz-wz%{http_code}z
--max-timez--connect-timeoutT   )capture_outputtexttimeoutFzGET u0    → no response (connection refused or timeout)u    → invalid response:    u    → z (expected 200)u    → timeout after s)Fzcurl not found on this systemu    → unexpected error: N)rstriplstripstrCURL_TIMEOUT
subprocessrunstdoutstripint
ValueErrorTimeoutExpiredFileNotFoundError	Exception)r   r   urlcmdresultstatus_codecodees           =/home/jay/workspace/teams/dev1/qc/verifiers.bak/api_health.py_check_endpointr$      sz   
//#

$xs';
;Cknc,'S.CB 1$	
 mm))+D
*Z[[[	R{#D 3;4ztf555D
%v_EEE  	RD
*A+QQQ	R $$ JXJ&9,qIII 65 BXJ&=aSAAABsU   AC B9 C .
C 9CC CC "D6D D	DDD	endpointsc                     | sddgdS |sddgdS g }d}|D ]'  }t        | |      \  }}|j                  |       |r&d}) |rdnd}||dS )	u  
    API 헬스체크를 수행합니다.

    Args:
        base_url: API 베이스 URL (예: http://localhost:8000)
        endpoints: 체크할 엔드포인트 목록 (예: ['/api/status', '/api/stats'])

    Returns:
        {"status": "PASS"|"FAIL"|"SKIP", "details": [...]}
    SKIPzNo base URL specified)statusdetailszNo endpoints specifiedTFPASSFAIL)r$   append)r   r%   r)   all_passr   okdetailr(   s           r#   verifyr0   6   s{      .E-FGG .F-GHHGH $Xx8
FvH	  VVF11    __main__   zhttp://localhost:8000r
   ,z/api/statusF)ensure_asciiindent)__doc__r   shlexr   r   tupleboolr$   listdictr0   __name__sysjsonlenargvbasesplitepsr   printdumps r1   r#   <module>rH      s      'Bc 'BS 'BU495E 'BT2S 2T 2d 2< zchh-!+388A;1HD$'MA$5#((1+

C
 M?CD#F	*$**V%
:; r1   