
    \j                         d dl mZ d dlmZ d dlmZmZ d dlmZ d dl	m
Z
 d dlmZ d dlZdZ ee      Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zy)    )BigSegmentsConfig)BigSegmentsStatus)BigSegmentStoreManager_hash_for_user_key)BigSegmentStoreMetadata)MockBigSegmentStore)QueueNzuser-keyc                  >   ddd} t               }|j                          |j                  t        |        t	        t        |            }	 | t        j                  f}|j                  t              |k(  sJ 	 |j                          y # |j                          w xY wNTFkey1key2store)r    setup_metadata_always_up_to_datesetup_membership	user_hashr   r   r   HEALTHYget_user_membershipuser_keystopexpected_membershipr   managerexpected_results       H/root/env/lib/python3.12/site-packages/testing/impl/test_big_segments.py4test_membership_query_uncached_result_healthy_statusr      s    $(%9!E	**,	9&9:$%6U%CDG.0A0I0IJ**84GGG   ,B
 
Bc                     ddd} t               }|j                          |j                  t        |        t	        t        |            }	 | t        j                  f}|j                  t              |k(  sJ |j                  t              |k(  sJ 	 |j                          |j                  t        gk(  sJ y # |j                          w xY wr   r   r   r   r   r   r   r   r   r   r   r   membership_queriesr   s       r   2test_membership_query_cached_result_healthy_statusr"      s    $(%9!E	**,	9&9:$%6U%CDG.0A0I0IJ**84GGG**84GGG##}444 	s   AB: :Cc                     t               } | j                          | j                  t        d        t	        t        |             }	 i t        j                  f}|j                  t              |k(  sJ |j                  t              |k(  sJ 	 |j                          | j                  t        gk(  sJ y # |j                          w xY w)Nr   r    )r   r   r   s      r   .test_membership_query_can_cache_result_of_noner$   (   s    !E	**,	9d+$%6U%CDG0889**84GGG**84GGG##}444 	s   AB5 5Cc                     ddd} t               }|j                          |j                  t        |        t	        t        |d            }	 | t        j                  f}|j                  t              |k(  sJ t        j                  d       |j                  t              |k(  sJ 	 |j                          |j                  t        t        gk(  sJ y # |j                          w xY w)NTFr   g{Gzt?)r   context_cache_timeg?)r   r   r   r   r   r   r   r   r   r   timesleepr   r!   r   s       r   &test_membership_query_cache_can_expirer)   5   s    $(%9!E	**,	9&9:$%6UW\%]^G.0A0I0IJ**84GGG

3**84GGG##I'???? 	s   AC C'c                  >   ddd} t               }|j                          |j                  t        |        t	        t        |            }	 | t        j                  f}|j                  t              |k(  sJ 	 |j                          y # |j                          w xY wr   )r   setup_metadata_always_staler   r   r   r   r   STALEr   r   r   r   s       r   "test_membership_query_stale_statusr-   D   s    $(%9!E	%%'	9&9:$%6U%CDG.0A0G0GH**84GGGr   c                  >   ddd} t               }|j                          |j                  t        |        t	        t        |            }	 | t        j                  f}|j                  t              |k(  sJ 	 |j                          y # |j                          w xY wr   )r   setup_metadata_noner   r   r   r   r   r,   r   r   r   r   s       r   4test_membership_query_stale_status_no_store_metadatar0   P   s    $(%9!E		9&9:$%6U%CDG.0A0G0GH**84GGGr   c                     d\  } }}t        |       t        |      t        |      }}}ddiddiddi}}}t               }	|	j                          |	j                  ||       |	j                  ||       |	j                  ||       t	        t        |	d            }
	 |
j                  |       }|
j                  |      }|
j                  |      }|	j                  |||gk(  sJ |
j                  |      }|
j                  |      }||k(  sJ ||k(  sJ |	j                  |||gk(  sJ |
j                  |       }||k(  sJ |	j                  ||||gk(  sJ 	 |
j                          y # |
j                          w xY w)N)userkey1userkey2userkey3seg1Tseg2seg3   )r   context_cache_size)	r   r   r   r   r   r   r   r!   r   )
user_key_1
user_key_2
user_key_3user_hash_1user_hash_2user_hash_3membership_1membership_2membership_3r   r   result1result2result3result2aresult3aresult1as                    r   =test_membership_query_least_recent_context_evicted_from_cacherI   \   s   )K&J
J,>z,J:&(::(F *K17/?64AQU[]aSc,L!E	**,	;5	;5	;5$%6UWX%YZG--j9--j9--j9''Kk+RRRR
 ..z:..z:7"""7"""''Kk+RRRR..z:7"""''KkS^+____s   B8E% %E7c                     t               } | j                          t               t        t	        | d            }	 |j
                  j                  fd       |j
                  j                  }|j                  dk(  sJ | j                          j                  dd      }|j                  dk(  sJ | j                          j                  dd      }|j                  dk(  sJ 	 |j                          y # |j                          w xY w)N{Gz?r   status_poll_intervalc                 &    j                  |       S Nputstatusstatusess    r   <lambda>zBtest_status_polling_detects_store_unavailability.<locals>.<lambda>       HLL<P     T      ?F)r   r   r	   r   r   status_provideradd_listenerrS   	availablesetup_metadata_errorgetr   r   r   status1status2status3rT   s        @r   0test_status_polling_detects_store_unavailabilityrb      s    !E	**,wH$%6UY]%^_G,,-PQ))00  D(((""$,,tS)  E)))..0,,tS)  D(((   B+C: :Dc                     t               } | j                          t               t        t	        | d            }	 |j
                  j                  fd       |j
                  j                  }|j                  dk(  sJ | j                          j                  dd      }|j                  dk(  sJ | j                          j                  dd      }|j                  dk(  sJ 	 |j                          y # |j                          w xY w)NrK   rL   c                 &    j                  |       S rO   rP   rR   s    r   rU   z:test_status_polling_detects_stale_status.<locals>.<lambda>   rV   rW   FTrX   )r   r   r	   r   r   rY   rZ   rS   staler+   r]   r   r^   s        @r   (test_status_polling_detects_stale_statusrg      s    !E	**,wH$%6UY]%^_G,,-PQ))00}}%%%))+,,tS)}}$$$..0,,tS)}}%%%rc   )ldclient.configr   ldclient.evaluationr   ldclient.impl.big_segmentsr   r   ldclient.interfacesr   testing.mock_componentsr   queuer	   r'   r   r   r   r"   r$   r)   r-   r0   rI   rb   rg    rW   r   <module>ro      sX    - 1 Q 7 7  x(	
55@

#J2rW   