U
    ‰dî	  ã                   @   s¤   d dl mZmZmZmZ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mZ d dlmZ d dlmZ d d	lmZ d d
lZd d
lZG dd„ deƒZd
S )é    )ÚStructÚFetchRecordÚ	NewRecordÚ
FeedRecordÚInitEmptyRecord)ÚcoreÚ	workspace)ÚLocalSession)ÚDataset)Úpipe)ÚQueue)Ú	TaskGroup)ÚTestCase)ÚopsNc                   @   s   e Zd Zdd„ ZdS )ÚTestPipelinec              	      s´  t  d¡}d}d}tdt t|ƒ¡fddt t|ƒ¡ fƒ}tddt t|ƒ¡ fdt |dg ¡fƒ}t  d¡2 t||ƒ}t|| 	¡ ƒ}| 
d	¡‰| 
d
¡‰ W 5 Q R X dd„ }‡ ‡fdd„}	t|ƒ}
t|ƒ}tƒ :}t|
 ¡ td|d|d}t||	d}t|| ¡ ƒ W 5 Q R X tj ¡ }t|||ƒ t|ƒ}| |¡ | |¡ t||d}|jtˆƒ  ¡ }|  |tt t|ƒ| ¡ƒ¡ t | !¡ | !¡ ƒD ]\}}tj" #||¡ q–d S )NÚinité   é   ÚuidÚvaluegš™™™™™¹?é   g        r   é   c              	   S   sV   t  d¡ tt| ƒ}W 5 Q R X t |  ¡ |  ¡ g| ¡ g¡ |jj|  ¡ dd |S )NÚproc1T©ZblobZunsafe)r   Ú	NameScoper   r   ÚAddr   r   Úset©ZrecÚout© r   ú?/tmp/pip-unpacked-wheel-ua33x9lu/caffe2/python/pipeline_test.pyr   &   s
    z-TestPipeline.test_dequeue_many.<locals>.proc1c              	      sh   t  d¡ tt| ƒ}W 5 Q R X |jj|  ¡ dd t |  ¡ |  ¡ g| ¡ g¡ t ˆˆ gˆg¡ |S )NÚproc2Tr   )	r   r   r   r   r   r   ZSubr   r   r   ©ZONEÚcounterr   r    r!   -   s    z-TestPipeline.test_dequeue_many.<locals>.proc2é   )ÚcapacityZnum_dequeue_records)ÚoutputÚ	processor)r'   )Úws)$r   ZNetr   ÚnpÚarrayÚranger   r   r   Zclone_schemaZConstr
   r   r   Úreaderr   Úwriterr   ÚCZ	Workspacer   r	   Úrunr   ZblobsÚstrÚfetchZassertEqualsÚintÚmathÚceilÚfloatÚzipZfield_blobsZtestingZassert_array_equal)ÚselfZinit_netÚNZNUM_DEQUEUE_RECORDSZ
src_valuesZexpected_dstZ	src_blobsZ	dst_blobsr   r!   Zsrc_dsZdst_dsÚtgZout1Zout2r(   Úsessionr&   Znum_dequeuesÚaÚbr   r"   r    Útest_dequeue_many   sX    
þþ

 ÿü


 ÿzTestPipeline.test_dequeue_manyN)Ú__name__Ú
__module__Ú__qualname__r=   r   r   r   r    r      s   r   )Zcaffe2.python.schemar   r   r   r   r   Zcaffe2.pythonr   r   Zcaffe2.python.sessionr	   Zcaffe2.python.datasetr
   Zcaffe2.python.pipeliner   Zcaffe2.python.queue_utilr   Zcaffe2.python.taskr   Zcaffe2.python.test_utilr   Zcaffe2.python.net_builderr   Znumpyr)   r3   r   r   r   r   r    Ú<module>   s   