o
    8ήc                     @   sd   d dl Z d dlmZmZmZmZ d dlmZ eeedG dd deZe	dkr0e 
  dS dS )    N)CUDATestCaseskip_if_cudadevrt_missingskip_on_cudasimskip_unless_cc_60)captured_stdoutz4cudasim doesn't support cuda import at non-top-levelc                       s4   e Zd ZdZ fddZ fddZdd Z  ZS )TestSessionizationz*
    Test click stream sessionization
    c                    s    t  | _| j  t   d S N)r   _captured_stdout	__enter__supersetUpself	__class__ T/tmp/pip-target-vg8gfxp4/lib/python/numba/cuda/tests/doc_examples/test_sessionize.pyr      s   
zTestSessionization.setUpc                    s   | j d d d  t   d S r   )r	   __exit__r   tearDownr   r   r   r   r      s   zTestSessionization.tearDownc                    s   dd l }ddlm  ||dd |g d} |jg dddd	} |t	|} j
 fd
d}|t	|||| t|  g d}|j||  d S )Nr   )cuda3600s)   r   r   r   r   r      r   r      r   r   r   r   r   r   r   r   r      r   r   r   r   r   r   r   r   )r   r   r       i  r   r   r   r   r   r   r   i'  i'  i'  i'  :  iI r   r   iQ  r   i N  ia  ia  ia  ia  zdatetime64[ns])dtypeint64c                    s     d}t| }||krd S |dk}|s0| | | |d  k}|| ||d   k}|p.|}nd}|ro|||<  j }	|	  d}
|||
  dkrq||||
 < |
d7 }
||
 |d kre||||
 < d S |||
  dksKd S d S d S )Nr   r   T)gridlencg	this_gridsync)user_id	timestampresultsgidsizeis_first_datapointnew_user	timed_outis_sess_boundaryr!   
look_aheadr   session_timeoutr   r   
sessionizeC   s2   


z9TestSessionization.test_ex_sessionize.<locals>.sessionize)r   r   r   r   r   r      r3   r3   	   r4      r5      r6   r6   r6                  r;         r=   r=   r=   )numpynumbar   r    timedelta64	to_devicearrayastypezerosr"   jitforallprintcopy_to_hosttestingassert_equal)r   npidssecr(   r2   expectr   r0   r   test_ex_sessionize   s0   
	)z%TestSessionization.test_ex_sessionize)__name__
__module____qualname____doc__r   r   rO   __classcell__r   r   r   r   r      s
    r   __main__)unittestnumba.cuda.testingr   r   r   r   numba.tests.supportr   r   rP   mainr   r   r   r   <module>   s    t