o
    ~@Tä  ã                   @   sÖ   d dl mZmZ d dlZd dlm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 dlmZ d d	lmZ d d
lmZ d dlmZ G dd„ deƒZG dd„ dejƒZG dd„ dejƒZG dd„ dejƒZdS )é    )Úabsolute_importÚunicode_literalsN)Ú	timedelta)ÚExceptionInfo)ÚInvalidCacheBackendError)Úresult)Ústates©Úgen_unique_id©Úapp)ÚCacheBackend)Úunittestc                   @   ó   e Zd Zdd„ ZdS )Ú	SomeClassc                 C   s
   || _ d S )N)Údata)Úselfr   © r   úY/var/www/html/env/lib/python3.10/site-packages/djcelery/tests/test_backends/test_cache.pyÚ__init__   s   
zSomeClass.__init__N)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r      ó    r   c                   @   sD   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dS )Útest_CacheBackendc                 C   s|   t td�}tƒ }|  | |¡tj¡ |  | |¡¡ | 	|d¡ |  | |¡tj
¡ |  | |¡d¡ |  | |¡d¡ d S )Nr   é*   )r   r   r
   ÚassertEqualÚ
get_statusr   ÚPENDINGÚassertIsNoneÚ
get_resultÚmark_as_doneÚSUCCESSÚ
assertTrue)r   ÚcbÚtidr   r   r   Útest_mark_as_done   s   
z#test_CacheBackend.test_mark_as_donec                 C   sd   t td�}tƒ }| |ddi¡ |  | |¡ d¡d¡ | |¡ |  ||j	¡ |  
| |¡¡ d S )Nr   ÚfooÚbar)r   r   r
   r!   r   r    ÚgetÚforgetÚassertNotInÚ_cacher   )r   Úbr%   r   r   r   Útest_forget)   s   

ztest_CacheBackend.test_forgetc                 C   sœ   t td�}tƒ }dd„ tdƒD ƒ}tttj|ƒƒ}t ||¡}|j	|d� tjj
||d�}|  |j|¡ |  |j|¡ |j|d� |  tjj
||d�¡ d S )Nr   c                 S   s   g | ]}t ƒ ‘qS r   r	   )Ú.0Úir   r   r   Ú
<listcomp>5   s    zDtest_CacheBackend.test_save_restore_delete_group.<locals>.<listcomp>é
   )Úbackend)r   r   r
   ÚrangeÚlistÚmapr   ÚAsyncResultÚGroupResultÚsaveÚrestoreÚassertListEqualÚsubtasksr   ÚidÚdeleter   )r   r3   Úgroup_idÚsubtask_idsr<   ÚresÚsavedr   r   r   Útest_save_restore_delete_group2   s   
ÿz0test_CacheBackend.test_save_restore_delete_groupc                 C   s^   t td�}tƒ }dtdƒdœ}| ||¡ | |¡}|  | d¡d¡ |  | d¡jd¡ d S )Nr   Úbazi90  )r'   r(   r'   r(   )	r   r   r
   r   r!   r    r   r)   r   )r   r$   Útid2r   Úrindbr   r   r   Útest_is_pickled@   s   

z!test_CacheBackend.test_is_pickledc              
   C   sž   t td�}d }tƒ }ztdƒ‚ ty/ } ztt ¡ ƒ}|j|||jd� W Y d }~nd }~ww |  	| 
|¡tj¡ |  | |¡t¡ |  	| |¡|j¡ d S )Nr   r'   )Ú	traceback)r   r   r
   ÚKeyErrorr   ÚsysÚexc_infoÚmark_as_failurerH   r   r   r   ÚFAILUREÚassertIsInstancer    Úget_traceback)r   r$   ÚeinfoÚtid3Ú	exceptionr   r   r   Útest_mark_as_failureK   s   
€þz&test_CacheBackend.test_mark_as_failurec                 C   s   t td�}| ¡  d S )Nr   )r   r   Úprocess_cleanup)r   r$   r   r   r   Útest_process_cleanupY   s   
z&test_CacheBackend.test_process_cleanupc                 C   s>   t ttdd�d�}|  |jd¡ t tdd�}|  |jd¡ d S )Né   )Úseconds)r   Úexpiresé    )r   r   r   r   rX   )r   Úcb1Úcb2r   r   r   Útest_set_expires]   s   z"test_CacheBackend.test_set_expiresN)
r   r   r   r&   r.   rC   rG   rS   rU   r\   r   r   r   r   r      s    	r   c                   @   r   )Útest_custom_CacheBackendc              	   C   s¨   ddl m} |jj}tjd }tjdkrd|j_nd|j_tj d¡ z&ddl	m
} ddlm
} |  |jjd¡ |  ||¡ W ||j_|tjd< d S ||j_|tjd< w )	Nr   )Úcurrent_appúdjcelery.backends.cache)é   é   z+django.core.cache.backends.dummy.DummyCachezdummy://©Úcachez django.core.cache.backends.dummy)Úceleryr^   ÚconfÚCELERY_CACHE_BACKENDrJ   ÚmodulesÚdjangoÚVERSIONÚpopÚdjcelery.backends.cacherc   Údjango.core.cacher   Ú	__class__r   ÚassertIsNot)r   r^   Úprev_backendÚprev_modulerc   Údjango_cacher   r   r   Útest_custom_cache_backendf   s&   

ÿ
ÿÿz2test_custom_CacheBackend.test_custom_cache_backendN)r   r   r   rr   r   r   r   r   r]   d   r   r]   c                   @   r   )Útest_MemcacheWrapperc           	   	   C   sì   zddl m} ddl m} W n ty   tj d¡ Y d S w z	|j}|j|_W n
 ty2   Y d S w tj	 
d¡}z3ddlm} d}d}d	}|  |j||d
�|¡ | ||¡ |  |j||d
�|¡ W ||_|tj	d< d S ||_|tj	d< w )Nr   )Ú	memcached)Úlocmemz5
* Memcache library is not installed. Skipping test.
r_   rb   zcu.test_memcache_wrapperzThe quick brown fox.zThe lazy dog.)Údefault)Údjango.core.cache.backendsrt   ru   r   rJ   ÚstderrÚwriteÚ
CacheClassÚAttributeErrorrg   rj   rk   rc   r   r)   Úset)	r   rt   ru   Úprev_cache_clsÚprev_backend_modulerc   ÚkeyÚvalrv   r   r   r   Útest_memcache_wrapper   s8   ÿýÿÿz*test_MemcacheWrapper.test_memcache_wrapperN)r   r   r   r�   r   r   r   r   rs   }   r   rs   )Ú
__future__r   r   rJ   Údatetimer   Úbilliard.einfor   rh   Údjango.core.cache.backends.baser   rd   r   r   Úcelery.utilsr
   Údjcelery.appr   rk   r   Údjcelery.tests.utilsr   Úobjectr   ÚTestCaser   r]   rs   r   r   r   r   Ú<module>   s     J