
    ug                     8    d dl mZmZ d dlmZ ddZddZddZy)    )assignmurmur3hasher)sqrtNc                  n    g dd} dt         dt         dt        ffd}t        | |d      d   dk(  sJ y )	N)abckeymemberreturnc                 &    j                  |       S )N)index)r   r
   memberss     k/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/segment/distributed/test_rendezvous_hash.pymock_hasherz)test_rendezvous_hash.<locals>.mock_hasher
   s    }}V$$       r   r	   )strintr   )r
   r   r   s     @r   test_rendezvous_hashr      sG    G
C%C %c %c % #wQ/2c999r   c                     d} d}t        |       D cg c]  }t        |       }}|t        |      z  }t        |dt        |      z  z  ddt        |      z  z
  z        }d|z  }|D ci c]  }|d }}t        |      D ])  }d| }	t	        |	|t
        d      d   }||xx   dz  cc<   + |D ]  }t        ||   |z
        |k  rJ  y c c}w c c}w )N
   i  r      r   key_)ranger   lenr   r   r   abs)
member_countnum_keysinodesexpectedstddev	tolerancenodekey_distributionr
   s
             r   test_even_distributionr'      s    LH"<010SV0E1#e*$H (a#e*n-QU^1CDEF F
I -22EDaE28_QCjc5-3A6!#  #D)H45	AAA % 2 3s   C
)
Cc                     d} d}d}t        |       D cg c]  }t        |       }}|t        |      z  |z  }t        ||z  dt        |      z  z  ddt        |      z  z
  z        }d|z  }|D ci c]  }|d }	}t        |      D ]F  }d| }
t	        |
|t
        |      }t        t        |            |k(  sJ |D ]  }|	|xx   dz  cc<    H |D ]  }t        |	|   |z
        |k  rJ  y c c}w c c}w )Nr   i'  r   r   r   r   )r   r   r   r   r   r   setr   )r   r   replicationr    r!   r"   r#   r$   r%   r&   r
   nodes_assigneds               r   #test_multi_assign_even_distributionr,   )   s$   LHK"<010SV0E1#e*${2H([(AE
N;q1s5z>?QRSFF
I -22EDaE28_QCjUM;G3~&';666"DT"a'" #  #D)H45	AAA # 2 3s   C/1
C4)r   N)chromadb.utils.rendezvous_hashr   r   mathr   r   r'   r,    r   r   <module>r0      s    @ :B2Br   