
    ug                         d dl Z d dlZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dl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mZ  e       ZddZddZdeddfdZdedededdfdZdeddfdZ y)    N)Event)	CliRunner)Client)
Collection)appset_log_file_path)SettingsSystem)get_sql)SqliteDB)Table)
invariantsreturnc                  |    t         j                  t        g d      } d| j                  v sJ d| j                  v sJ y )N)run--pathchroma_test_dataz--port8001z--testr   r   )runnerinvoker   stdout)results    K/var/www/openai/venv/lib/python3.12/site-packages/chromadb/test/test_cli.pytest_appr      s>    ]]	

F ...V]]"""    c                  <    t        dd      } | d   d   d   dk(  sJ y )Nzchromadb/log_config.ymlztest.loghandlersfilefilenamer   )
log_configs    r   test_utils_set_log_file_pathr"   &   s,    "#<jIJj!&)*5CCCr   sqlite_persistentc                    | }|j                  t              }|j                  }|j                  dd       |j	                  |       t        j                  |      }|j                  d      }|j                  d      }dt        dt        dd fd} ||d	        ||d
       |j                         5 }t        d      }	|j                         j                  |	      j                  d      }
t        |
      \  }}|j!                  ||       |j#                         g k(  sJ 	 d d d        t$        j'                  t(        ddd|j*                  j,                  gd      }|j.                  dk(  sJ |j                         5 }t        d      }	|j                         j                  |	      j                  d      }
t        |
      \  }}|j!                  ||       |j#                         }t1        |      dk(  sJ |d   d   dk(  sJ 	 d d d        |`|j                  j3                  d      j4                  sJ t7        j8                  |||gd       y # 1 sw Y   2xY w# 1 sw Y   YxY w)Nautomatically_purgeFcollection1collection2
collectionnumr   c                     t        |      D cg c]  }t        |       }}t        j                  j	                  |d      }| j                  ||       y c c}w )N   )ids
embeddings)rangestrnprandomrandadd)r(   r)   ir,   r-   s        r   add_recordsz test_vacuum.<locals>.add_records9   sG    $Sz*z!s1vz*YY^^C+
3:6 +s   Ad   i  maintenance_log*utilsvacuumr   zy
)inputr      r+   T)instancer   configset_parameter
set_configr   from_systemcreate_collectionr   inttxr   querybuilderfrom_selectr   executefetchallr   r   r   settingspersist_directory	exit_codelenget_parametervaluer   log_size_below_max)r#   systemsqliter>   clientr&   r'   r5   curtqsqlparamsr   rowss                  r   test_vacuumrZ   +   s4   F__X&F ]]F
.6
f 'F**=9K**=9K7
 7 7 7
 S!U# 
#$!''*11#6ajVC ||~### 
 ]]	(Hfoo&G&GH  F
 q    
#$!''*11#6ajVC ||~4yA~~AwqzX%%% 
 	==&&'<=CCCC !!&;*DdK? 
 
s   2A/I?BIII(rJ   ready_eventshutdown_eventc                 2   t        |       }|j                          |j                  t              }|j	                         5 }|j                  d       |j                          |j                          d d d        |j                          y # 1 sw Y   xY w)N)rJ   z"INSERT INTO tenants DEFAULT VALUES)	r   startr=   r   rD   rH   setwaitstop)rJ   r[   r\   rQ   rR   rT   s         r   simulate_transactional_writerb   d   sk     X&F
LLN__X&F	89 

 KKM 
s   2BBc                 ,   t        j                  d      }|j                         }|j                         }|j                  t        | j
                  ||f      }|j                          |j                          	 t        j                  t        ddd| j
                  j                  dg      }|j                  dk(  sJ d|j                  v sJ 	 |j                          |j                          y	# |j                          |j                          w xY w)
zVVacuum command should fail with details if there is a long-lived lock on the database.spawn)targetargsr9   r:   r   z--forcer<   zdatabase is lockedN)multiprocessingget_contextr   Processrb   rJ   r^   r`   r   r   r   rK   rL   r   r_   join)r#   ctxr[   r\   processr   s         r   test_vacuum_errors_if_lockedrm   s   s    

%
%g
.C))+KYY[Nkk+((+~F  G MMO!**<<	
 1$$$#v}}444 	s   ;AC1 1"D)r   N)!rg   multiprocessing.contextmultiprocessing.synchronizer   typer.testingr   chromadb.api.clientr   chromadb.api.models.Collectionr   chromadb.cli.clir   chromadb.cli.utilsr	   chromadb.configr
   r   chromadb.db.baser   chromadb.db.impl.sqliter   pypikar   numpyr0   chromadb.test.propertyr   r   r   r"   rZ   rb   rm    r   r   <module>r|      s      - # & 5   0 , $ ,   -	# D
6L6 6Ld 6Lr%*<A	F t r   