U
    •uÄcÝ  ã                   @   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koZe 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   sJ  i }t ddƒ�ì}tdƒD ]Ü}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ƒ�6}t| ¡ ƒd }||krÚd||< ||  d7  < W 5 Q R X qW 5 Q R X 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ÚuuidZ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v3Úv4Zv5Zv6Zv7Zv8Zv9Zv10Zv11ÚdÚentÚeaÚskeysÚk© r.   úU/var/www/html/VBACK/school/venv/lib/python3.8/site-packages/autobahn/test/test_rng.pyÚtest_non_depleting*   s6    


&zTestEntropy.test_non_depletingc           	      C   sÀ   i }t ddƒ�d}tdƒD ]T}| d¡}t ddƒ�6}t| ¡ ƒd }||krRd||< ||  d	7  < W 5 Q R X qW 5 Q R X 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ÚsysÚunittestr   r   Znaclr   r   Úautobahnr   ÚskipIfÚenvironÚplatformÚ
startswithÚTestCaser   r.   r.   r.   r/   Ú<module>   s   