o
    ÓLV^  ã                   @   sê   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mZ d dl	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mZ d dlmZ d dlmZ d dlmZ ed ƒZedƒZdd„ Z
dd„ ZG dd„ dejƒZdS )é    )Úabsolute_importÚunicode_literals)Údatetime)Úcount)Útime)Ústates)ÚEvent)ÚStateÚWorkerÚTask©Úgen_unique_id)Úcelery)Úsnapshot)Úmodels)Ú
make_aware)Úunittest)Úunicodeé   c                  O   s,   |  dttƒ¡ |  dtƒ ¡ t| i |¤ŽS )NÚclockÚlocal_received)Ú
setdefaultÚnextÚ_clockr   Ú_Event)ÚargsÚkwargs© r   úN/var/www/html/env/lib/python3.10/site-packages/djcelery/tests/test_snapshot.pyr      s   r   c                 K   s4   t tƒ d ttƒ¡| d�}tdi t |fi |¤Ž¤ŽS )Nzdjcelery.unittest.task{0})ÚuuidÚnameÚworkerr   )Údictr   Úformatr   Ú_idsr   )r!   r   Údr   r   r   Úcreate_task   s
   þr&   c                   @   sh   e Zd ZejZdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Z	dd„ Z
ddd„Zddd„Zddd„Zdd„ ZdS )Útest_Camerac                 C   s   t ƒ | _|  | j¡| _d S ©N)r	   ÚstateÚCameraÚcam)Úselfr   r   r   ÚsetUp(   s   ztest_Camera.setUpc                 C   s@   |   tƒ ¡}|  |j¡ |  |j¡ |  |j¡ |  |j¡ d S r(   )r*   r	   Ú
assertTruer)   ÚfreqÚcleanup_freqÚlogger)r,   r+   r   r   r   Útest_constructor,   s
   ztest_Camera.test_constructorc                 C   s~   t dd�}|  | j |¡¡ tƒ }tƒ }tƒ }|||fD ]
}| d||i ¡ q|| jj|j< |  	| j |¡t
t |¡ƒ¡ d S )NÚfuzzie©ÚhostnameÚ	heartbeat)r
   ÚassertIsNoner+   Úget_heartbeatr   Úeventr)   Úworkersr5   ÚassertEqualr   r   Úfromtimestamp)r,   r!   Út1Út2Út3Útr   r   r   Útest_get_heartbeat3   s   
ÿztest_Camera.test_get_heartbeatc                 C   s”   t dd�}| dtƒ tƒ i ¡ | jj ¡  | j |j|f¡}|  |¡ |  |j¡ |  |j	¡ |  | 
¡ ¡ |  t|ƒt|jƒ¡ |  t|ƒ¡ d S )Nr3   r4   Úonline)r
   r9   r   r+   Ú_last_worker_writeÚclearÚhandle_workerr5   r.   Úlast_heartbeatÚis_aliver;   r   Úrepr)r,   r!   Úmr   r   r   Útest_handle_worker?   s   

ztest_Camera.test_handle_workerc                 C   sÊ   t dd�}| dtƒ tƒ i ¡ | j |j|f¡ t|ƒ}| dtƒ tƒ i ¡ |  |jd¡ | j 	|j
|f¡}|  |j|j¡ |  t|ƒ¡ |  t|ƒ¡ t ¡ |_|  dt|ƒ¡ |  |tjj ¡ ¡ d S )Nr3   r4   ÚonelineÚreceivedÚRECEIVEDÚeta)r
   r9   r   r+   rE   r5   r&   r;   r)   Úhandle_taskr   r    r.   r   rH   r   ÚnowrN   ÚassertInr   Ú	TaskStateÚobjectsÚactive)r,   r!   ÚtaskÚmtr   r   r   Útest_handle_task_receivedK   s   

z%test_Camera.test_handle_task_receivedc                 C   sV  t dd�}| dtƒ tƒ i ¡ | j |j|f¡}t|ƒ}| dtƒ tƒ i ¡ | j |j|f¡}|  	|j
|¡ t d d�}t|ƒ}| dtƒ tƒ i ¡ | j |j|f¡}|  |j
¡ | dtƒ tƒ ddi¡ |  	|jtj¡ |  	|jd¡ | j |j|f¡}|  	|j|j¡ |  	|jd¡ t|d d�}| d	tƒ tƒ i ¡ | j |j|f¡}|  |¡ d S )
Nr3   r4   rB   rL   Ú	succeededÚresulté*   )r    Úrevoked)r
   r9   r   r+   rE   r5   r&   rO   r   r;   r!   r7   r)   r   ÚSUCCESSrY   r    )r,   Úworker1ÚmwÚtask1rV   Úworker2Útask2Útask3r   r   r   Útest_handle_task[   s,   

ztest_Camera.test_handle_taské
   c                 C   sª   t dd�}| dtƒ tƒ i ¡ t|ƒD ]6}t|ƒ}| dtƒ | tƒ | i ¡ | dtƒ | tƒ | ddi¡ |  |j¡ |  | j |j	|f¡¡ q|  
| j ¡ |¡ d S )Nr3   r4   rB   rL   rX   rY   rZ   )r
   r9   r   Úranger&   r.   r    r+   rO   r   r;   Ú
on_cleanup)r,   ÚdecÚexpiredÚtasksr!   ÚtotalrU   r   r   r   ÚassertExpiresv   s   
 ztest_Camera.assertExpireséà c                 C   ó   |   |d¡ d S )Nrd   ©rk   ©r,   rg   r   r   r   Útest_on_cleanup_expires�   ó   z#test_Camera.test_on_cleanup_expiresr   c                 C   rm   )Nr   rn   ro   r   r   r   Ú#test_on_cleanup_does_not_expire_new„   rq   z/test_Camera.test_on_cleanup_does_not_expire_newc                 C   s„  | j }| j}g d¢}dd„ tdƒD ƒ}td|d d�td|d d�td|d	 d�td
|d d|d d�td|d d|d d�td
|d d|d d�td|d	 d|d	 d�g}|D ]}tƒ |d< | |¡ qX| |¡ |D ]}tjj	j
|d�}|  | ¡ ¡ qltjj	j
|d d�}	|  |	j d¡ |  |	jd¡ tjj	j
|d d�}
|  |
j d¡ tjj	j
|d	 d�}|  |j d¡ td|d |d dd�td|d d|d d�td|d d�g}tt|j|ƒƒ |j ¡  | |¡ tjj	j
|d d�}|  | ¡ ¡ tjj	j
|d d�}	|  |	j d¡ |  |	jd¡ |  |	j|¡ tjj	j
|d d�}
|  |
j d¡ |  |
jd¡ |  |
jj|d ¡ | |¡ d S ) N)zworker1.ex.comzworker2.ex.comzworker3.ex.comc                 S   s   g | ]}t ƒ ‘qS r   r   )Ú.0Úir   r   r   Ú
<listcomp>Œ   s    z/test_Camera.test_on_shutter.<locals>.<listcomp>é2   zworker-onliner   r4   r   é   ztask-receivedÚA)r   r    r5   ztask-startedÚBztask-revokedÚCr   )Útask_idÚSTARTEDrM   ÚREVOKEDztask-succeededrZ   )r   r5   rY   ztask-failedzKeyError('foo'))r   Ú	exceptionr5   zworker-offliner\   Ú42ÚFAILURE)r)   r+   re   r   r   r9   Ú
on_shutterr   ÚWorkerStaterS   Úgetr.   rG   rR   r;   r    ÚlistÚmaprC   rD   ÚassertFalserY   r!   r5   )r,   r)   r+   ÚwsÚuusÚeventsr9   Úhostr!   r=   r>   r?   Úw1r   r   r   Útest_on_shutter‡   sr   ÿÿÿÿ÷

ÿþû

ztest_Camera.test_on_shutterN)rd   )rl   )r   )Ú__name__Ú
__module__Ú__qualname__r   r*   r-   r2   rA   rJ   rW   rc   rk   rp   rr   rŒ   r   r   r   r   r'   %   s    


r'   N) Ú
__future__r   r   r   Ú	itertoolsr   r   r   r   Úcelery.eventsr   r   Úcelery.events.stater	   r
   r   Úcelery.utilsr   Údjceleryr   r   Údjcelery.utilsr   Údjcelery.tests.utilsr   Údjcelery.compatr   r$   r   r&   ÚTestCaser'   r   r   r   r   Ú<module>   s&    