
    \j                        d dl mZ d dlmZ d dlmZ d dl d dl d dlZdZ		 d dl
Z
dZ	ej                  j                  e	 d	      Z G d
 d      Z G d de      Z G d de      Z G d de      Z G d de      Zy# e$ r Y \w xY w)    )_RedisBigSegmentStore)Redis)FEATURES)*NFTz:skipping Redis tests because redis module is not installed)reasonc                   <    e Zd Zedej
                  fd       Zd Zy)RedisTestHelperreturnc                  2    t        j                  ddd      S )N	localhosti  r   )hostportdb)redisStrictRedis     I/root/env/lib/python3.12/site-packages/testing/integrations/test_redis.pymake_clientzRedisTestHelper.make_client   s      kCCr   c                     t         j                         }|j                  d| z        D ]  }|j                  |        y )Nz%s:*)r	   r   keysdelete)prefixrkeys      r   clear_data_for_prefixz%RedisTestHelper.clear_data_for_prefix   s7    '')66&6/* 	CHHSM	r   N)__name__
__module____qualname__staticmethodr   r   r   r   r   r   r   r	   r	      s)    D** D Dr   r	   c                       e Zd ZdefdZd Zy)RedisFeatureStoreTesterr
   c                 0    t        j                  ||      S )N)r   caching)r   new_feature_store)selfr   r$   s      r   create_persistent_feature_storez7RedisFeatureStoreTester.create_persistent_feature_store    s    &&fgFFr   c                 R    t         j                  |xs t        j                         y Nr	   r   r   DEFAULT_PREFIXr&   r   s     r   
clear_dataz"RedisFeatureStoreTester.clear_data#       --f.L8L8LMr   N)r   r   r   FeatureStorer'   r-   r   r   r   r"   r"      s    G, GNr   r"   c            	       R    e Zd ZdefdZd ZdedefdZdedede	e   d	e	e   fd
Z
y)RedisBigSegmentStoreTesterr
   c                 .    t        j                  |      S )N)r   )r   new_big_segment_storer,   s     r   create_big_segment_storez3RedisBigSegmentStoreTester.create_big_segment_store(   s    **&99r   c                 R    t         j                  |xs t        j                         y r)   r*   r,   s     r   r-   z%RedisBigSegmentStoreTester.clear_data+   r.   r   r   metadatac                     t         j                         }|j                  |xs t        j                  t
        j                  z   |j                  d       y t        |j                               y )N )	r	   r   setr   r+   r   KEY_LAST_UP_TO_DATElast_up_to_datestr)r&   r   r6   r   s       r   set_metadataz'RedisBigSegmentStoreTester.set_metadata.   sX    '')	v---1F1Z1ZZ**2B	W8;H<T<T8U	Wr   	user_hashincludesexcludesc                    t         j                         }|xs t        j                  }|D ](  }|j	                  |t
        j                  z   |z   |       * |D ](  }|j	                  |t
        j                  z   |z   |       * y r)   )r	   r   r   r+   saddr   KEY_USER_INCLUDEKEY_USER_EXCLUDE)r&   r   r>   r?   r@   r   refs          r   set_segmentsz'RedisBigSegmentStoreTester.set_segments3   s    '')/5// 	UCFF61BBBYNPST	U 	UCFF61BBBYNPST	Ur   N)r   r   r   BigSegmentStorer4   r-   r<   BigSegmentStoreMetadatar=   ListrF   r   r   r   r1   r1   '   s\    :/ :NW3 W2I W
U3 U3 U$s) UW[\_W` Ur   r1   c                   (    e Zd Zed        Zd Zd Zy)TestRedisFeatureStorec                     t         S r)   )r"   r&   s    r   tester_classz"TestRedisFeatureStore.tester_class=   s    &&r   c                 8   t         j                         t        j                         }|j	                  t
        i i       dddfd}||j                  _        ddd}|j                  t
        |       |j                  t
        dd       }|d   dk(  sJ y )Nflagkey   r   versionc                 z    d   dk  r2j                  | |t        j                               d   dz   d<   y y NrS         hsetjsondumpsbase_keyr   other_clientother_versions     r   hookzjTestRedisFeatureStore.test_upsert_race_condition_against_external_client_with_higher_version.<locals>.hookG   D    Y'1,!!(CM1JK+8+Ca+Gi( -r   rW   c                     | S r)   r   xs    r   <lambda>znTestRedisFeatureStore.test_upsert_race_condition_against_external_client_with_higher_version.<locals>.<lambda>P       ! r   rS   
r	   r   r   r%   initr   _coretest_update_hookupsertgetr&   storer`   featureresultr^   r_   s        @@r   Ftest_upsert_race_condition_against_external_client_with_higher_versionz\TestRedisFeatureStore.test_upsert_race_condition_against_external_client_with_higher_versionA       &224'')

Xr#$!+;	H (,$%16Xw'8Y<i A%%%r   c                 8   t         j                         t        j                         }|j	                  t
        i i       dddfd}||j                  _        ddd}|j                  t
        |       |j                  t
        dd       }|d   dk(  sJ y )NrP   rQ   rR   c                 z    d   dk  r2j                  | |t        j                               d   dz   d<   y y rU   rX   r\   s     r   r`   ziTestRedisFeatureStore.test_upsert_race_condition_against_external_client_with_lower_version.<locals>.hookY   ra   r      c                     | S r)   r   rc   s    r   re   zmTestRedisFeatureStore.test_upsert_race_condition_against_external_client_with_lower_version.<locals>.<lambda>b   rf   r   rS   rg   rm   s        @@r   Etest_upsert_race_condition_against_external_client_with_lower_versionz[TestRedisFeatureStore.test_upsert_race_condition_against_external_client_with_lower_versionS   rr   r   N)r   r   r   propertyrN   rq   rw   r   r   r   rK   rK   <   s    ' '&$&r   rK   c                       e Zd Zed        Zy)TestRedisBigSegmentStorec                     t         S r)   )r1   rM   s    r   rN   z%TestRedisBigSegmentStore.tester_classg   s    ))r   N)r   r   r   rx   rN   r   r   r   rz   rz   f   s    * *r   rz   )8ldclient.impl.integrations.redis.redis_big_segment_storer   ldclient.integrationsr   ldclient.versioned_data_kindr   0testing.integrations.big_segment_store_test_base7testing.integrations.persistent_feature_store_test_baserZ   
have_redisr   ImportErrorpytestmarkskipif
pytestmarkr	   PersistentFeatureStoreTesterr"   BigSegmentStoreTesterr1   PersistentFeatureStoreTestBaserK   BigSegmentStoreTestBaserz   r   r   r   <module>r      s    Z ' 1 > E 
	J [[J7st
 N: NU!6 U*'&: '&T*6 *q  		s   A? ?BB