U
    be                     @   s   d dl mZ d dlmZmZ d dlmZ d dlZd dlZd dl	Z	d dl
Z
d dlZd dlZedddgZdd	 ZG d
d dZG dd dZdd Zejdddd Zejdddd Zejdddd ZdZeedZedd dd edZedd dd edZdeeegZd d!d"d#gZej ejjd$eed%d&d' Zej ejjd$eed%d(d) Zej ejjd$eed%d*d+ Z ej ejjd$eed%d,d- Z!ej ejjd$eed%d.d/ Z"ej ejjd$eed%d0d1 Z#ej d2d3 Z$ej d4d5 Z%dS )6    )Client)CompressedSerdepickle_serde)FakerNit_ITen_USja_JPc                    s>   t j}t j}t j}|| |  d fddt| D }|S )N c                 3   s   | ]}t  V  qd S N)randomchoice).0itotal b/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pymemcache/test/test_compression.py	<genexpr>   s     z$get_random_string.<locals>.<genexpr>)stringascii_letterspunctuationdigitsjoinrange)lengthletterscharsr   Z
result_strr   r   r   get_random_string   s    r   c                   @   s   e Zd ZdZdd ZdS )CustomObjectz2
    Custom class for verifying serialization
    c                 C   s&   t dd| _t | _t | _d S )Nr   d   )r   randintnumberfaketextr   Zprofileobject)selfr   r   r   __init__!   s    
zCustomObject.__init__N)__name__
__module____qualname____doc__r&   r   r   r   r   r      s   r   c                   @   s   e Zd Zdd ZdS )CustomObjectValuec                 C   s
   || _ d S r
   value)r%   r-   r   r   r   r&   (   s    zCustomObjectValue.__init__N)r'   r(   r)   r&   r   r   r   r   r+   '   s   r+   c                 O   s<   t   }t| D ]}|||}qt   | }tt| |S r
   )timer   printstr)countfuncargskwargsstart_resultdurationr   r   r   	benchmark,   s    r9   session)scopec                  C   s$   g } t dD ]}| t  q| S N   )r   appendr"   name)namesr6   r   r   r   r@   8   s    r@   c                  C   s$   g } t dD ]}| t  q| S r<   )r   r>   r"   r#   )
paragraphsr6   r   r   r   rA   A   s    rA   c                  C   s"   g } t dD ]}| t  q| S r<   )r   r>   r   )objectsr6   r   r   r   rB   J   s    rB      )min_compress_lenc                 C   s   t | dS )N	   )zlibcompressr,   r   r   r   <lambda>Y       rH   c                 C   s
   t | S r
   )rF   
decompressr,   r   r   r   rH   Z   rI   )rG   rJ   rD   c                 C   s
   t | S r
   )zstdrG   r,   r   r   r   rH   _   rI   c                 C   s
   t | S r
   )rK   rJ   r,   r   r   r   rH   `   rI   nonezzlib Zzlib9zzstd serde)idsc                    s.   t ||f|dd  fdd}t| | d S )Nutf-8rM   encodingc                     s,   t D ]\} }d|  } || qd S Nname_	enumerateset)indexr?   keyclientr@   r   r   testr   s    
z-test_bench_compress_set_strings.<locals>.testr   r9   )r1   hostportrM   r@   r[   r   rY   r   test_bench_compress_set_stringsm   s    r_   c           	         sV   t ||f|dd tD ]\}}d| } || q fdd}t| | d S )NrO   rP   rS   c                     s*   t D ]\} }d|  } | qd S rR   rU   getrW   r6   rX   rY   r   r   r[      s    
z-test_bench_compress_get_strings.<locals>.testr   rU   rV   r9   )	r1   r]   r^   rM   r@   rW   r?   rX   r[   r   rY   r   test_bench_compress_get_stringsz   s    
rd   c                    s.   t ||f|dd  fdd}t| | d S )NrO   rP   c                     s,   t D ]\} }d|  } || qd S )NZ
paragraph_rT   )rW   prX   rZ   rA   r   r   r[      s    
z3test_bench_compress_set_large_strings.<locals>.testr\   )r1   r]   r^   rM   rA   r[   r   rf   r   %test_bench_compress_set_large_strings   s    rg   c           	         sV   t ||f|dd tD ]\}}d| } || q fdd}t| | d S )NrO   rP   paragraphs_c                     s*   t D ]\} }d|  } | qd S )Nrh   r`   rb   rf   r   r   r[      s    
z3test_bench_compress_get_large_strings.<locals>.testrc   )	r1   r]   r^   rM   rA   rW   re   rX   r[   r   rf   r   %test_bench_compress_get_large_strings   s    
ri   c                    s.   t ||f|dd  fdd}t| | d S )NrO   rP   c                     s,   t D ]\} }d|  } || qd S Nobjects_rT   )rW   orX   rZ   rB   r   r   r[      s    
z-test_bench_compress_set_objects.<locals>.testr\   )r1   r]   r^   rM   rB   r[   r   rm   r   test_bench_compress_set_objects   s    rn   c           	         sV   t ||f|dd tD ]\}}d| } || q fdd}t| | d S )NrO   rP   rk   c                     s*   t D ]\} }d|  } | qd S rj   r`   rb   rm   r   r   r[      s    
z-test_bench_compress_get_objects.<locals>.testrc   )	r1   r]   r^   rM   rB   rW   rl   rX   r[   r   rm   r   test_bench_compress_get_objects   s    
ro   c            	   	   C   s|   t ddD ]l} t| }t|}ttdd  D ]F\}}t|d  }|d|\}}t|}td| d| d|  q.q
d S )N     rC   fooserializer=	 start=	 end=)r   r   lenrU   serializersrN   	serializer/   )	r   
input_datar5   rW   
serializerr?   r-   r6   endr   r   r   test_optimal_compression_length   s    r|   c            
   	   C   s   t ddD ]} t| }t|}ttd|d }ttdd  D ]F\}}t|d  }|d|\}}t|}	t	d| d| d|	  qBq
d S )	Nrp   rq   rr   r   rC   rs   rt   ru   )
r   r   r+   rv   r   rx   rU   rw   rN   r/   )
r   ry   objr5   rW   rz   r?   r-   r6   r{   r   r   r   'test_optimal_compression_length_objects   s    r~   )&Zpymemcache.client.baser   Zpymemcache.serder   r   Zfakerr   Zpytestr   r   r.   rK   rF   r"   r   r   r+   r9   Zfixturer@   rA   rB   rD   Zdefault_serdeZ
zlib_serdeZ
zstd_serderw   rN   markZparametrizer_   rd   rg   ri   rn   ro   r|   r~   r   r   r   r   <module>   sv   	





	

