
    'i                         d dl Z d dlmZ d dlZddlmZ ddlmZ ddlm	Z	 ded	dfd
Z
ded	dfdZded	dfdZded	dfdZded	dfdZded	dfdZded	dfdZded	dfdZded	dfdZded	dfdZddZy)    N)Path   )debug)
test_slurm   )autotmp_pathreturnc                 X   |j                  t        j                  dd        t        j                         5  t        j                  |       }d d d        j                  dk(  sJ |j                  ddd       |j                  j                  }|d	dd
k(  sJ t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  d       d d d        t        j                  t              5  |j                  d       d d d        t        j                  t        d      5  |j                  dd       d d d        y # 1 sw Y   #xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   fxY w# 1 sw Y   y xY w)N_valid_parametersc                      dhS Nblabla r       Q/var/www/stems/demucs_env/lib/python3.12/site-packages/submitit/auto/test_auto.py<lambda>z%test_slurm_executor.<locals>.<lambda>       8* r   folderslurmr   machinblublu)mem_gbnamedebug_blabla2GB)memjob_namez2.0GB)r   g       @)r   )slurm_host_filterz#debug_blublu.*\n.*local_num_threadsmatch   )debug_blublulocal_num_threads)setattrr   DebugExecutorr   mocked_slurmr   AutoExecutorclusterupdate_parameters	_executor
parameterspytestraisesAssertionError	NameError)r	   monkeypatchexecutorparamss       r   test_slurm_executorr5      s{   ++-@BTU		 	 	" 6$$H56w&&& ahXN**FU9999 
~	& 3""'"23 
y	! /""#"./ 
y	! ?""X">? 
y(N	O J""q"IJ J'6 63 3/ /? ?J Js;   E/4E<(FFF /E9<FFF F)c                     t        j                         5  t        j                  | d      }d d d        j                  dk(  sJ y # 1 sw Y   xY w)Nlocalr   r*   )r   r(   r   r)   r*   r	   r3   s     r   test_local_executorr:   *   sM    		 	 	" G$$HgFGw&&&G Gs   AAc                 j    t        j                  | dd      }|j                  j                  dk(  sJ y )Nr7   gQ?)r   r*   local_max_pickle_size_gb)r   r)   r,   max_pickle_size_gb)r	   exs     r   test_max_pickle_size_gb_in_autor?   0   s/    			(GVZ	[B<<**d222r   c                     t        j                  | dt        j                        }|j	                  d       }|j                         dk(  sJ y )Nr7   )r   r*   local_pythonc                       y)N   r   r   r   r   r   z&test_python_executor.<locals>.<lambda>7   s    r   rC   )r   r)   sys
executablesubmitresultr	   r3   jobs      r   test_python_executorrJ   5   s?      'PSP^P^_H
//*
%C::<2r   c                 $   t        j                         5  t        j                  | d      }d d d        t	        j
                  dd       dk(  sJ t        j                  | dd      }t	        |j
                  dd       dk7  sJ y # 1 sw Y   ZxY w)N   )r   slurm_max_num_timeoutmax_num_timeoutr7   )r   r*   rM   )r   r(   r   r)   getattrr,   r9   s     r   test_executor_argumentrP   ;   s    		 	 	" P$$HBOP8%%'8$?2EEE   'Y[\H8%%'8$?2EEEP Ps   BBc                     t        j                         5  t        j                  t              5  t        j                  | d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrL   )r   slurm_foobar)r   r(   r.   r/   	TypeErrorr   r)   r	   s    r   test_executor_unknown_argumentrU   E   sb    		 	 	" @]]9% 	@XB?	@@ @	@ 	@@ @s"   A$AA$A!	A$$A-c                     t        j                         5  t        j                  t        d      5  t        j                  | d       d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)NrM   r!   rL   )r   rN   )r   r(   r.   warnsUserWarningr   r)   rT   s    r   "test_executor_deprecated_argumentsrY   K   se    		 	 	" C\\+-DE 	CXrB	CC C	C 	CC Cs"   A&A	A&A#	A&&A/c                 n   |j                  t        j                  dd        t        j                         5  t        j                  |       }d d d        j                  dk(  sJ t        j                  t        d      5  |j                  dd	       d d d        y # 1 sw Y   RxY w# 1 sw Y   y xY w)
Nr   c                      dhS r   r   r   r   r   r   z*test_deprecated_argument.<locals>.<lambda>R   r   r   r   r   zblabla.*debug_blablar!   r   r   )r   r   )r&   r   r'   r   r(   r   r)   r*   r.   rW   rX   r+   )r	   r2   r3   s      r   test_deprecated_argumentr\   Q   s    ++-@BTU		 	 	" 6$$H56w&&& 
k)@	A >""!H"=> >6 6
> >s   BB+B(+B4c                 B   t        j                         5  t        j                  | d      }d d d        j	                  dddd       |j
                  j                  }|dddk(  sJ t        j                  | d	      }|j	                  dd
       y # 1 sw Y   ixY w)Nr   r8   <   x   r      )timeout_minslurm_timeout_mintasks_per_nodeslurm_ntasks_per_node)timentasks_per_noder7   )ra   
slurm_time)r   r(   r   r)   r+   r,   r-   )r	   slurm_exslurm_paramslocal_exs       r   test_overriden_argumentsrk   \   s    		 	 	" G$$HgFG #aWX   %%00LCA>>>>   'BH2#>G Gs   BBc                    t        j                         5  t        j                  |       }|j	                         5  |j                  t        d      }d d d        j                         rJ 	 d d d        y # 1 sw Y   %xY w# 1 sw Y   y xY w)Nr   hi)r   r(   r   r)   batchrF   printdonerH   s      r   test_auto_batch_watcherrq   l   sw    		 	 	" $$H5^^ 	///%.C	/88:~:	 	/ 	/ s"   'BA7B7B 	<BBc                    d }| j                  d       | j                  |      }|j                          |j                         J |j	                         }d|v sJ d|v sJ | j                  d       | j                  |      }|j                          d|j                         v sJ d|j	                         v sJ y )Nc                  P    t        d       t        dt        j                         y )Nhelloworld)file)ro   rD   stderrr   r   r   log_to_stderr_and_stdoutz=test_redirect_stdout_stderr.<locals>.log_to_stderr_and_stdoutu   s    ggCJJ'r   T)stderr_to_stdoutrt   ru   F)r+   rF   waitrw   stdout)r3   rx   rI   r{   s       r   test_redirect_stdout_stderrr|   t   s    ( 5
//2
3CHHJ::<ZZ\Fff6
//2
3CHHJcjjl"""cjjl"""r   )r
   N)rD   pathlibr   r.   r7   r   r   r    r   r5   r:   r?   rJ   rP   rU   rY   r\   rk   rq   r|   r   r   r   <module>r      s         J$ J J2'$ '4 '3d 3t 3
4 D FT Fd F@T @d @C C$ C>t >T >?t ? ? d t #r   