o
    ¼>hÝ  ã                   @   sŽ   d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 e 
de jv o-e jd  d¡e 
ej d¡ d¡G dd	„ d	ejƒƒƒZdS )
é    N)ÚutilsÚpublic)ÚutilÚ&AUTOBAHN_CI_ENABLE_RNG_DEPLETION_TESTSz\entropy depletion tests not enabled (env var AUTOBAHN_CI_ENABLE_RNG_DEPLETION_TESTS not set)Úlinuxz/entropy depletion tests only available on Linuxc                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestEntropyc              
   C   sp  i }t ddƒ…}tdƒD ]x}tdƒD ]?}t ¡  t ¡ }t ¡ }t d¡}t dd¡}t dd¡}	t 	tdƒ¡}
t
 tjj¡}t d	d	¡}t ¡ }t ¡ }t ¡ }q| d¡}t d
dƒ }t| ¡ ƒd }||vrmd||< ||  d7  < W d   ƒ n1 sw   Y  qW d   ƒ n1 sw   Y  t| ¡ ƒ}tdƒ |D ]}td ||| ¡ƒ q |  |d dk¡ d S )Nz/dev/urandomÚrbéè  éd   é    r   l          é
   é   ú%/proc/sys/kernel/random/entropy_availÚré   ú 
system entropy depletion stats:ú{}: {})ÚopenÚrangeÚrandomÚseedÚuuidÚuuid4ÚgetrandbitsÚrandintÚnormalvariateÚchoicer   r   ÚBoxÚ
NONCE_SIZEr   Úgenerate_tokenÚidÚridÚnewidÚreadÚintÚsortedÚkeysÚprintÚformatÚ
assertTrue)ÚselfÚresÚrngÚiÚjÚv1Úv2Úv3Úv4Úv5Úv6Úv7Úv8Úv9Úv10Úv11ÚdÚentÚeaÚskeysÚk© r?   úv/var/www/vedio/testing/chatpythonscript.ninositsolution.com/env/lib/python3.10/site-packages/autobahn/test/test_rng.pyÚtest_non_depleting*   s>   


ü€ãÿ$zTestEntropy.test_non_depletingc           	   
   C   sè   i }t ddƒA}tdƒD ]4}| d¡}t ddƒ }t| ¡ ƒd }||vr)d||< ||  d	7  < W d   ƒ n1 s;w   Y  qW d   ƒ n1 sKw   Y  t| ¡ ƒ}td
ƒ |D ]}td ||| ¡ƒ q\|  |d dk¡ d S )Nz/dev/randomr   i'  r	   r   r   r
   r   r   r   r   )	r   r   r#   r$   r%   r&   r'   r(   r)   )	r*   r+   r,   r-   r:   r;   r<   r=   r>   r?   r?   r@   Útest_depletingY   s$   
ü€úÿzTestEntropy.test_depletingN)Ú__name__Ú
__module__Ú__qualname__rA   rB   r?   r?   r?   r@   r   &   s    /r   )ÚosÚsysÚunittestr   r   Únaclr   r   Úautobahnr   ÚskipIfÚenvironÚplatformÚ
startswithÚTestCaser   r?   r?   r?   r@   Ú<module>   s   