
    gF*                     ~    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
e      Zy)   )TestBaseFileCreator    )WindowCursorSlidingWindowMapManagerStaticWindowMapManager)align_to_mmap)randint)timeN)copyc                       e Zd Zd Zd Zd Zy)TestMManc                 h   t        | j                  d      5 }t               }t        |      }|j	                         rJ |j                         rJ |j                         dk(  sJ |j                  |j                        }|j	                         rJ |j                         sJ |j                         |j                  k(  sJ |j                         |j                  k(  sJ 	 d d d        t              }|j	                         s|j                         sJ j                         rJ |j                  |       |j	                         s|j                         sJ |j                          |j                          |j                          t              j                          y # 1 sw Y   xY w)Ncursor_testr   )r   k_window_test_sizer   r   is_validis_associatedsizemake_cursorpath	file_sizer   assignunuse_region_destroy)selffcmancicvcios         I/var/www/openai/venv/lib/python3.12/site-packages/smmap/test/test_mman.pytest_cursorzTestMMan.test_cursor   s\   00-@B)+Cc"B{{}$$'')))779>!>)B{{}$$##%%%<<>RWW,,,779''' A 2h<<>c&7&7&999 ##%%%
		";;=R%5%5%777 	
 	S""$9 A@s   CF((F1c           	      6   t               }t               }||fD ]I  }|j                         dk(  sJ |j                         dk(  sJ d}t	        |t              rd}|j                         |kD  sJ |j                         dk(  sJ |j                         dkD  sJ |j                  d       |j                  d       |j                  t        j                        dk(  sJ t        | j                  d      5 }t        j                  |j                  t        j                         }	 |j                  |fD ]  }|j#                  |      }|j%                         |u sJ |j'                  dd      j)                         sJ |j+                         dk(  sJ |j-                         dk(  sJ t        |j                  d      5 }	|j/                         d d  |	j1                  d      dd  k(  sJ 	 d d d         t	        t2              r!| j5                  t6        j                         n | j5                  t6        j8                         t        j:                  |       	 d d d        L y # 1 sw Y   =xY w# t        j:                  |       w xY w# 1 sw Y   xY w)Nr   
   manager_testrb   )r   r   num_file_handlesnum_open_files
isinstancewindow_sizemapped_memory_sizemax_mapped_memory_size_collect_lru_regionsysmaxsizer   r   osopenr   O_RDONLYr   
path_or_fd
use_regionr   	ofs_beginr   bufferreadintassertRaises
ValueErrorfdclose)
r   	slide_man
static_manr   winsize_cmp_valr   r=   itemcfps
             r!   test_memory_managerzTestMMan.test_memory_manager2   s6   +-	+-
	*C'')Q...%%'1,,,O#56"$??$666))+q000--/!333 ##A&##B' **3;;71<<< T44nEWWRWWbkk2!!#"OOD1 ||~555 ||B3<<>>> {{}222 vvx2~-~!"''40B#$88:a=BGGBK4D#DD#D 10 !. "$,))*aff=))*add; HHRL' FE) +: 10 HHRL' FEs>   6/J&BI4>+I'	*AI4J'I1,I44JJJ	c                 J   t        | j                  d      5 }t        |j                  d      5 }|j	                         }d d d        t        j                  |j                  t
        j                        }	 d}t        d|j                  dz  |fft        |j                  dz  |j                  dz  |fffD ]  \  }}|j                  |fD ]  }t              |j                  k(  sJ  ||d   |d   |d   	      }	|	j                  |      }
|	j                         dk(  sJ |	j                         dk(  sJ d
}|	j                         dz  }|
j                  ||      j!                         sJ |
j#                         }|j%                         dk(  sJ |	j                         dk(  sJ |	j'                         dk(  sJ |	j                         |j                         k(  sJ |
j)                         |k(  sJ |j)                         dk(  sJ |	j                         r-|j                         t+        |	j                         d      k(  s!J |j                         |j                  k(  sJ |
j-                         d d  ||||xs |
j                         z    k(  sJ |xs |j                  dz
  }|
j                  d|      j!                         sJ |
j#                         |k(  sJ |	j'                         dk(  sJ |
j                         |k(  sJ |
j)                         dk(  sJ |
j-                         d d  |d | k(  sJ d}|j                  |xs |
j                         z
  |z   }|
j                  ||      j!                         sJ |	j                         rS|	j'                         dk(  sJ |
j                         |k  sJ |
j#                         |usJ |j%                         dk(  s!J |
j                         |j                  k  sJ |
j#                         }|j%                         dk(  sJ |j)                         |
j)                         k  sJ |j/                         |j                  k  sJ |
j-                         d d  ||||xs |
j                         z    k(  sJ |
j1                          |
j!                         rJ |	j                         r|	j'                         dk(  sJ d
}|}d}t3               }|
j4                  }|	j7                         }|	j9                         }|	j                  }|	j&                  }|r|dz  }t;        d|j                  dz
        }|	j                         r| |       k\  sJ | |       k\  sJ |
j                  ||xs |
j                               j!                         sJ |
j                         }|
j-                         d d  ||||z    k(  sJ ||z  } ||      sJ  |||z   dz
        sJ  |||z         rJ |rt=        t3               |z
  d      }t?        d      }tA        d|||z  |tC        |      |||z  |z  fz  tD        jF                         |
j                  |j                  |      j!                         rJ |	j'                         sJ |	jI                         sJ |	j'                         dk(  rJ   	 t        jJ                  |       	 d d d        y # 1 sw Y   xY w# t        jJ                  |       w xY w# 1 sw Y   y xY w)Nmanager_operation_testr'      r      d   r      )r,   max_memory_sizemax_open_handlesi  Tr%   i  gMbP?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   r3   r   r9   r2   r4   r   r   r   lenr   r*   r-   r,   r6   r   regionclient_countr)   r7   r	   r8   ofs_endr   r   includes_ofsr.   max_file_handlesr
   maxfloatprinttyper0   stderrcollectr>   )r   r   rD   datar=   max_num_handlesmtypeargsrB   r   rC   base_offsetr   rrnsize	overshootmax_random_accessesnum_random_accessesmemory_readstrS   r.   rT   r-   r)   csizeelapsedmbs                               r!   test_memman_operationzTestMMan.test_memman_operation`   s   002JKrbggt$wwy %"++.Bz"$%;aA=_$`%<rww#~rwwZ[|]l>m$n$qKE4!#""4yBGG333 $QacghicjkOOD1  #113q888"5571<<<&*"0A5 ||K>GGIIIXXZ!0A555"113q888"335:::"5572779DDD  !{{};;;!||~222??,#%779coo>OQU0V#VV#V#%779#77#7  !xxz!}[PTP`XYX^X^X`Aa0bbbb "&B 6 ||Au5>>@@@ xxzR///"335::: vvx5000 {{}111 xxz!}Ve<<< %)	&(gg1A&BY&N ||K>GGIII??,#&#7#7#9Q#>>#>#$668d?2?#$88:R#77#7#%??#4#99#9#$668bgg#55#5XXZ!0A555!||~===!zz|rww666 xxz!}[PTP`XYX^X^X`Aa0bbbb (#$::<//??, $'#7#7#9Q#>>#>
 /3+.A+&'!V ()~~141K1K1M.+.+?+?+A(-0-C-C*+.+?+?(1/14/*1!RWWq[*AK  #0'=ASAU'U U'U#37G7I#II#I#$<<d>Naffh#P#Y#Y#[[#[$%FFHE#$88:a=D[SXEX4Y#YY#Y'50K#/#<<#<#/e0Ca0G#HH#H'3K%4G'HH#H! 2$ #&dfrk5"9";/  B!&b(8:MtTXz[bepsueu  zA  eA  !BB#&::/
 $%<<#>#G#G#III  #33555"{{},}"335:::c !.$qn } LK$$z } LKsG   \[26\6V[?B;[?[?\2[<	7\?\\\"N)__name__
__module____qualname__r"   rE   rj        r!   r   r      s    %>+!\@ro   r   )libr   r   
smmap.mmanr   r   r   
smmap.utilr	   randomr
   r   r2   r0   r   r   rn   ro   r!   <module>rt      s4    & 
 %   	 
 Ox Oro   