a
     þdB*  ã                   @   sx   d dl mZmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlZddlZddlmZ G d	d
„ d
eƒZdS )é   )ÚTestBaseÚFileCreatoré    )ÚWindowCursorÚSlidingWindowMapManagerÚStaticWindowMapManager)Úalign_to_mmap)Úrandint)ÚtimeN)Úcopyc                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestMManc                 C   s  t | jdƒŽ}tƒ }t|ƒ}| ¡ r(J ‚| ¡ r4J ‚| ¡ dksDJ ‚| |j¡}| ¡ r\J ‚| ¡ shJ ‚| 	¡ |jkszJ ‚| ¡ |jksŒJ ‚W d   ƒ n1 s 0    Y  t
|ƒ}| ¡ sÂ| ¡ sÆJ ‚| ¡ rÒJ ‚| |¡ | ¡ sì| ¡ sðJ ‚| ¡  | ¡  | ¡  t|ƒ ¡  d S )NZcursor_testr   )r   Úk_window_test_sizer   r   Úis_validZis_associatedÚsizeÚmake_cursorÚpathÚ	file_sizer   ZassignÚunuse_regionZ_destroy)ÚselfÚfcÚmanÚciZcvZcio© r   ú]/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/smmap/test/test_mman.pyÚtest_cursor   s(    0
zTestMMan.test_cursorc           
      C   sê  t ƒ }tƒ }||fD ]Î}| ¡ dks*J ‚| ¡ dks:J ‚d}t|tƒrLd}| ¡ |ks\J ‚| ¡ dkslJ ‚| ¡ dks|J ‚| d¡ | d¡ | t	j
¡dks¤J ‚t| jdƒ }t |jtj¡}zò|j|fD ]®}| |¡}| ¡ |u sîJ ‚| dd¡ ¡ sJ ‚| ¡ dksJ ‚| ¡ dks(J ‚t|jdƒ8}	| ¡ d d … |	 d¡dd … ks^J ‚W d   ƒ qÐ1 st0    Y  qÐt|tƒrœ|  t|j¡ n|  t|j¡ W t |¡ nt |¡ 0 W d   ƒ q1 sÚ0    Y  qd S )Nr   éÿÿÿÿé
   Zmanager_testÚrbé   )r   r   Únum_file_handlesÚnum_open_filesÚ
isinstanceÚwindow_sizeÚmapped_memory_sizeÚmax_mapped_memory_sizeZ_collect_lru_regionÚsysÚmaxsizer   r   ÚosÚopenr   ÚO_RDONLYr   Z
path_or_fdÚ
use_regionr   Ú	ofs_beginr   ÚbufferÚreadÚintÚassertRaisesÚ
ValueErrorÚfdÚclose)
r   Z	slide_manZ
static_manr   Zwinsize_cmp_valr   r1   ÚitemÚcÚfpr   r   r   Útest_memory_manager2   s:    



JzTestMMan.test_memory_managerc                 C   s¬  t | jdƒˆ}t|jdƒ}| ¡ }W d   ƒ n1 s:0    Y  t |jtj¡}z$d}td|jd |fft	|jd |jd |fffD ]à\}}|j|fD ]Ê}t
|ƒ|jks¶J ‚||d |d |d d	}	|	 |¡}
|	 ¡ dksêJ ‚|	 ¡ dksúJ ‚d
}|	 ¡ d }|
 ||¡ ¡ s J ‚|
 ¡ }| ¡ dks:J ‚|	 ¡ dksLJ ‚|	 ¡ dks^J ‚|	 ¡ | ¡ kstJ ‚|
 ¡ |ks†J ‚| ¡ dks˜J ‚|	 ¡ rÀ| ¡ t|	 ¡ dƒksÔJ ‚n| ¡ |jksÔJ ‚|
 ¡ d d … ||||pô|
 ¡  … ksJ ‚|p|jd }|
 d|¡ ¡ s*J ‚|
 ¡ |ks<J ‚|	 ¡ dksNJ ‚|
 ¡ |ks`J ‚|
 ¡ dksrJ ‚|
 ¡ d d … |d |… ks”J ‚d}|j|p¨|
 ¡  | }|
 ||¡ ¡ sÆJ ‚|	 ¡ r|	 ¡ dksâJ ‚|
 ¡ |k sôJ ‚|
 ¡ |usJ ‚| ¡ dks.J ‚n|
 ¡ |jk s.J ‚|
 ¡ }| ¡ dksHJ ‚| ¡ |
 ¡ k s^J ‚| ¡ |jksrJ ‚|
 ¡ d d … ||||p’|
 ¡  … ks¢J ‚|
 ¡  |
 ¡ r¸J ‚|	 ¡ rÔ|	 ¡ dksÔJ ‚d
}|}d}tƒ }|
j}|	 ¡ }|	 ¡ }|	j}|	j}|rà|d8 }td|jd ƒ}|	 ¡ r@||ƒ ks@J ‚||ƒ ksPJ ‚|
 ||pb|
 ¡ ¡ ¡ spJ ‚|
 ¡ }|
 ¡ d d … |||| … ksžJ ‚||7 }||ƒs´J ‚||| d ƒsÊJ ‚||| ƒrJ ‚qttƒ | dƒ}tdƒ}t d||| |t!|ƒ||| | f t"j#d |
 |j|¡ ¡ r>J ‚|	 ¡ sLJ ‚|	 $¡ sZJ ‚|	 ¡ dksžJ ‚qžqŠW t %|¡ nt %|¡ 0 W d   ƒ n1 sž0    Y  d S )NZmanager_operation_testr   é   r   é   éd   r   é   )r"   Zmax_memory_sizeZmax_open_handlesiˆ  Tr   i   gü©ñÒMbP?i@B z`%s: Read %i mb of memory with %i random on cursor initialized with %s accesses in %fs (%f mb/s)
)Úfile)&r   r   r(   r   r-   r'   r)   r   r   r   Úlenr   r    r#   r"   r*   r   ZregionZclient_countr   r+   r   r,   Zofs_endr   r
   Úincludes_ofsr$   Úmax_file_handlesr	   ÚmaxÚfloatÚprintÚtyper%   ÚstderrZcollectr2   )r   r   r5   Údatar1   Zmax_num_handlesÚmtypeÚargsr3   r   r4   Zbase_offsetr   ÚrrZnsizeZ	overshootZmax_random_accessesZnum_random_accessesZmemory_readÚstr=   r$   r>   r#   r   ZcsizeÚelapsedÚmbr   r   r   Útest_memman_operation`   s°    &ÿ

0"
0

 &ÿþzTestMMan.test_memman_operationN)Ú__name__Ú
__module__Ú__qualname__r   r6   rK   r   r   r   r   r      s   .r   )Úlibr   r   Z
smmap.mmanr   r   r   Z
smmap.utilr   Úrandomr	   r
   r'   r%   r   r   r   r   r   r   Ú<module>   s   