
    \j#                     X   d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d dlZd d	l d d
lmZmZmZ dZ ej0                  d      j3                  dd      j5                         ZdddidZdddZ e       fdZd Zd Z d Z!d Z"d Z#d Z$ejJ                  jM                  d      d        Z'ejJ                  jM                  d      d        Z(d Z)d Z*d  Z+d! Z,d" Z-d# Z.ed$d%d&id%d'igd(d&d%d'id%d)igd(d%d'id%d*id%d)id%d+id,ed-d%d-iiiZ/ G d. d/e      Z0d0 Z1y)1    )LDClientConfigContext)InMemoryFeatureStore)PollingUpdateProcessor)StreamingUpdateProcessor)NullUpdateProcessor)UpdateProcessor)FEATURESSEGMENTSN)*)CapturingFeatureStoreMockEventProcessorMockUpdateProcessorzhttp://fakexyzbizzledef)keycustomabcT)r   	anonymousc                 b    t        t        dt        t        t        t        t        |             S )NSDK_KEY)sdk_keybase_uri
events_uri
stream_urievent_processor_classupdate_processor_classfeature_storeconfig)r   r   unreachable_urir   r   )stores    ?/root/env/lib/python3.12/site-packages/testing/test_ldclient.pymake_clientr&      s*    6I+:-<-<8J9L057 8 8    c            	      N    t        t        ddt        t        t                    S )NsecretT)r   offliner   r   r   r!   r   r   r#    r'   r%   make_offline_clientr-   (   $    6(*.+:-<-<	> ? ?r'   c            	      N    t        t        ddt        t        t                    S )Nr)   T)r   use_lddr   r   r   r!   r+   r,   r'   r%   make_ldd_clientr1   0   r.   r'   c                 r    | j                   j                  j                  d      }g | j                   _        |S )Nr   )_event_processor_eventspop)ces     r%   get_first_eventr8   8   s1    	""&&q)A!#AHr'   c                 f    t        | j                  j                        }g | j                  _        |S N)lenr3   r4   )r6   ns     r%   count_eventsr=   >   s+    A&&'A!#AHr'   c                  |    t               5 } t        | j                  t              sJ 	 d d d        y # 1 sw Y   y xY wr:   )r-   
isinstance_update_processorr	   clients    r%   5test_client_has_null_update_processor_in_offline_moderC   D   s:    		 I&&224GHHHI I I   2;c                  |    t               5 } t        | j                  t              sJ 	 d d d        y # 1 sw Y   y xY wr:   )r1   r?   r@   r	   rA   s    r%   1test_client_has_null_update_processor_in_ldd_moderF   I   s:    		 If&224GHHHI I IrD   zhCan't currently use a live stream processor in tests because its error logging will disrupt other tests.c                      t        dt        t        d      } t        | d      5 }t        |j                  t
              sJ 	 d d d        y # 1 sw Y   y xY w)Nr)   F)r   r   r   send_eventsr   r"   
start_wait)r   r#   r   r?   r@   r   r"   rB   s     r%   .test_client_has_streaming_processor_by_defaultrL   N   sO    H?hmnF	A	. N&&224LMMMN N Ns   AAziCan't currently use a live polling processor in tests because its error logging will disrupt other tests.c                      t        ddt        t        d      } t        | d      5 }t        |j                  t
              sJ 	 d d d        y # 1 sw Y   y xY w)Nr)   F)r   streamr   r   rH   r   rI   )r   r#   r   r?   r@   r   rK   s     r%   :test_client_has_polling_processor_if_streaming_is_disabledrO   U   sR    HU_Yhv{|F	A	. L&&224JKKKL L Ls   AAc                  x    t               5 } | j                  dt        d       J 	 d d d        y # 1 sw Y   y xY w)Nzfeature.keydefaultr-   	variationuserrA   s    r%   test_toggle_offlinerV   \   sA    		 K&tTBJJJK K Ks   09c                      t        ddddid      } t        |       5 }d|j                  dt        d       k(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nr   http://localhost:3000foobarT)r   defaultsr*   r!   rQ   )r   r   rT   rU   rK   s     r%   test_defaultsr\   a   s\    )&=PU`deF		  DF((d(CCCCD D Ds   AAc                      d} t        t        ddd| it        t        t	                           }|j                  dt        d      }|| k(  sJ y )	NrZ   r   rX   rY   )r   r[   r   r   r    r!   originalDefaultrQ   )r   r   r   r   r   rT   rU   )expected	my_clientactuals      r%   test_defaults_and_onlinerb   g   s[    Hy0G160A=O>Q5I5K!M NI   6G HFXr'   c            	          t        t        ddddit        t                    } d| j	                  dt
        d	      k(  sJ y )
Nr   rX   rY   rZ   )r   r[   r   r   r!   jimbazrQ   )r   r   r   r   rT   rU   )r`   s    r%   #test_defaults_and_online_no_defaultrf   s   sI    y0G16=O>Q	!S TI
 I''tU'CCCCr'   c                  ~    t               5 } d| j                  dt        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)NrZ   rY   rQ   rS   rA   s    r%   test_no_defaultsrh   |   sC    		 E&((e(DDDDE E Es   3<c                      t        j                  d      } ddi}d}t               5 }|j                  |       |k(  sJ |j                  |      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)NMessager   @aa747c502a898200f9e4fa21bac68136f886a0e27aec70ba06daf2e2a5cb5597)r   creater-   secure_mode_hash)context_to_hashequivalent_user_to_hashexpected_hashrB   s       r%   test_secure_mode_hashrq      st    nnY/O$i0VM		 Q&&&7=HHH&&'>?=PPPQ Q Qs   -AA&ar   br6   )r   prerequisitesr7   df)rr   rs   r6   ru   r7   rv   oc                       e Zd Zd Zd Zd Zy)%DependencyOrderingDataUpdateProcessorc                 N    |j                  t               |j                          y r:   )initdependency_ordering_test_dataset)selfr"   r$   readys       r%   __init__z.DependencyOrderingDataUpdateProcessor.__init__   s    

01		r'   c                      y r:   r,   r~   s    r%   startz+DependencyOrderingDataUpdateProcessor.start   s    r'   c                      y)NTr,   r   s    r%   initializedz1DependencyOrderingDataUpdateProcessor.initialized   s    r'   N)__name__
__module____qualname__r   r   r   r,   r'   r%   ry   ry      s    r'   ry   c                     t               } t        dd| t              }t        |       | j                  }|J t        |      dk(  sJ t        |j                               }t        |j                               }|d   t        k(  sJ t        |d         t        t        t                 k(  sJ |d   t        k(  sJ |d   }t        |j                               }t        |      t        t        t                 k(  sJ t        |      D ]r  \  }}|j                  dg       D ]X  }	||	d	      }
|j                  |
      }||kD  s"d
 |D        }t        |d	   d|	d	   d|d	   ddj!                  |      d       t y )Nr   F)r   rH   r    r   r!      r      rt   r   c              3   &   K   | ]	  }|d      yw)r   Nr,   ).0rv   s     r%   	<genexpr>z/test_store_data_set_ordering.<locals>.<genexpr>   s     9AeH9s   z depends on z, but z& was listed first; keys in order are [z, ])r   r   ry   r   received_datar;   listkeysvaluesr   r|   r   	enumerategetindex	Exceptionjoin)r$   r"   datar   r   	flags_map
flags_list
item_indexitemprereqprereq_itemprereq_indexall_keyss                r%   test_store_data_set_orderingr      s   !#EiU%+PRFFDt9>>		D$++- F7hvay>S!>x!HIIII7hq	Ii&&()Jz?c"?"IJJJJ%j1 T
Dhh3 	TF#F5M2K%++K8Lj(9j9%[&-edii>Q!S T T	TTr'   )2ldclient.clientr   r   r   ldclient.feature_storer    ldclient.impl.datasource.pollingr   "ldclient.impl.datasource.streamingr   ldclient.impl.stubsr	   ldclient.interfacesr
   ldclient.versioned_data_kindr   r   pytesttesting.builderstesting.stub_utilr   r   r   r#   builderr}   buildcontextrU   anonymous_userr&   r-   r1   r8   r=   rC   rF   markskiprL   rO   rV   r\   rb   rf   rh   rq   r|   ry   r   r,   r'   r%   <module>r      s   5 5 7 C G 3 / ;   \ \  '//%
 
$
$Xu
5
;
;
=6 
 -. 8??I
I
 |}N ~N }~L LK
D	DE
Q snsn,NPsnsn,NPc^c^c^c^ uc^! 	O 	Tr'   