
    i,
                         d Z ddlZddlZddlmZ ddlZej                  j                  d e ee	      j                         j                  d                ej                  d        Zd Zd Zd Zd	 Zy)
uE   tests/dev7/test_circuit_breaker.py — Circuit Breaker (task-2367 P1)    N)Path   c                    | dz  dz  j                  d       |j                  dt        |              dd l}|j                  j                  dt        t        t              j                         j                  d   d	z              }	 |j                  j                  |      }|j                  j                  |       | |fS # t        $ r t        j                  d
       Y y w xY w)NmemoryauditT)parentsWORKSPACE_ROOTr   dispatchr   zdispatch.pyu,   dispatch.py import 실패 (외부 의존성))mkdirsetenvstrimportlib.utilutilspec_from_file_locationr   __file__resolver   module_from_specloaderexec_module	Exceptionpytestskip)tmp_pathmonkeypatch	importlibspecds        6/home/jay/workspace/tests/dev7/test_circuit_breaker.pycb_workspacer      s    7"))$)7'X7 >>11DN""$,,Q/-?@DDNN++D1"{ DBCDs   	9C C$#C$c                 X    | \  }}|j                  dt        |            \  }}|du sJ y )Ndev7workspace_rootT)_check_circuit_breakerr   )r   	workspacer   allowedreasons        r   test_no_violation_passesr(      s4    LIq..vc)n.UOGVd??    c           	          | \  }}t        d      D ]#  }|j                  dd| dt        |             % |j                  dt        |            \  }}|du sJ d|v sd|v sJ y y )	N   r!   z
task-test-ztest violationr"   Fzcircuit breaker OPEN
violations)range_record_violationr   r$   )r   r%   r   ir&   r'   s         r   test_three_violations_blocksr0   %   s    LIq1X g	Fj$46FWZ[dWefg..vc)n.UOGVe!V+|v/EEE/E+r)   c                    | \  }}|j                  dddt        |             |dz  dz  dz  }t        j                  |j	                               }|d   d   d	k(  sJ t        |d   d
         d	k(  sJ |d   d
   d   d   dk(  sJ y )Nr!   ztask-xzscope violationr"   r   r   zviolation-count.jsoncount   historyr   task_id)r.   r   jsonloads	read_textlen)r   r%   r   vc_filedatas        r   test_record_violation_persistsr<   /   s    LIq*;CPYN[("W,/EEG::g'')*D< A%%%tF|I&'1,,,<	"1%i0H<<<r)   c                 V   | \  }}|j                  dddt        |             |j                  dddt        |             |j                  dddt        |             |j                  dt        |            \  }}|j                  dt        |            \  }}|du sJ |d	u sJ y
)u   bot별로 카운트 독립.dev1t1vr"   t2t3dev2FTN)r.   r   r$   )r   r%   r   allowed_dev1_allowed_dev2s         r   test_independent_botsrG   9   s    LIqc#i.Ic#i.Ic#i.I..vc)n.UOL!..vc)n.UOL!5   4r)   )__doc__r6   syspathlibr   r   pathinsertr   r   r   r   fixturer   r(   r0   r<   rG    r)   r   <module>rO      sr    K  
   3tH~--/77:; < D D&F= r)   