o
    èó·iÝ  ã                   @   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)ÚutilZ&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   ƒ q1 sw   Y  qW d   ƒ n1 s�w   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   ZBoxZ
NONCE_SIZEr   Zgenerate_tokenÚidZridZnewidÚreadÚintÚsortedÚkeysÚprintÚformatÚ
assertTrue)ÚselfÚresÚrngÚiÚjZv1Zv2Zv3Zv4Zv5Zv6Zv7Zv8Zv9Zv10Zv11ÚdÚentÚeaÚskeysÚk© r.   ú\C:\Users\psant\Downloads\PAF backend\school\venv\Lib\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   ƒ q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__r0   r1   r.   r.   r.   r/   r   &   s    /r   )ÚosÚsysZunittestr   r   Znaclr   r   Zautobahnr   ZskipIfÚenvironÚplatformÚ
startswithZTestCaser   r.   r.   r.   r/   Ú<module>   s   