
    ZTh                          d dl Z d dlZd dlZd dlmZmZ d dlZd dlZd dl	Z
d dlmZ d Zedk(  r e j                   e              yy)    N)datetimetimezone)
SiftClientc                    K   t        j                  dd      } t        j                  dd      }t        j                  dd      }t        | ||      }|j                  j	                  d	      }|j
                  }t        d
|j                   d| d       |j                  }t        dt        |       d|D cg c]  }|j                   c} d|j                   d| d	       |d   }|j
                  }t        d|j                   d| d       |j                  }	|	D cg c]  }|j
                  |k7  s| }
}t        dt        |
       d|
 d|j                   d| d	       g }|D ]  }j                  |j
                  d      }g }|D ]3  }|j                  dv r|j                  |       #|j                  |       5 t        |      dkD  sjt        dt        |       d|D cg c]  }|j                   c} d|j                   d|j                          t        |      dkD  rLt        dt        |       d|D cg c]  }|j                   c} d|j                   d|j                           n |d   }|j                  dd      }t        d|j                   dt        |       d       t        d        t        j                         }|j                  j                  d|d!      }t        j                         |z
  }d }d }t!        |j#                               D ]r  \  }\  }}t        | d"| d"t        |       d#t%        j&                  ||                 |d$k(  sD|j(                  d   }|j(                  d%   }t        d&| d'|        t |r|rt        d(       t        d)       t        j                         }|j                  j                  |||*      }t        j                         |z
  }t        d+       |||z
  d,z  z   }t        j                         }|j                  j                  |||*      }t        j                         |z
  }t        d-       |||z
  d.z  z
  }t        j                         }|j                  j                  |||*      }t        j                         |z
  }t        d/       |t+        j,                  d,0      z   }|t+        j,                  d0      z   }t        j                         }|j                  j                  |||*      }t        j                         |z
  } t        d1       t/        j0                  t2        j4                        }!t        j                         }|j                  j                  ||!d2      }"t        j                         |z
  }#t!        |"j#                               D ]=  \  }\  }}t        | d"| d"t        |       d#t%        j&                  ||                 ? t        d3       t        j                         }|j                  j                  ||!d2      }"t!        |"j#                               D ]Q  \  }\  }}t        | d"| d"t        |       d#||v rt%        j&                  ||         nt$        j6                          S t        j                         |z
  }$t        d4       t        j                         }|j                  j9                  ||!5      }%t        j                         |z
  }&t!        |%j#                               D ]G  \  }\  }}t        | d"| d"t        |       d#t:        j<                  j'                  ||                 I t        d6       t        d7|d8d9       t        d:|d8d;||z  d<d=       t        d>|d8d;||z  d<d=       t        d?|d8d;||z  d<d=       t        d@| d8d;|| z  d<d=       t        dA|#d8d;|#|z  d<dB       t        dC|$d8d;|#|$z  d<d=       t        dD|&d8d;|&|$z  d<d=       ||k  sJ ||k  sJ ||k  sJ | |k  sJ |$|#k  sJ y y y c c}w c c}w c c}w c c}w w)ENSIFT_GRPC_URIzlocalhost:50051SIFT_REST_URIzlocalhost:8080SIFT_API_KEY )grpc_urlapi_keyrest_urlNostromoLV426)namezUsing asset: z (ID: )zFound z	 run(s): z for asset r   zUsing run: z other asset(s): z	 for run 
   )run_idlimit>   mainmotor.velocitygpiovoltagetemperature   z channel(s): z on run z other channel(s): z$1d5f5c93-eaaa-48f2-94ff-7ec4337faec7d   zChannel data for z has z pointsz#Getting data for multiple channels:)r   channelsr   z: z points. Avg:    zStart time: z, End time: z/
=== Testing cache with varying time ranges ===z;
Test 1: Exact same time range no run_id (should hit cache))r   
start_timeend_timez?
Test 2: Subset of time range (should hit cache if overlapping)   zO
Test 3: Extended time range earlier (should hit cache for overlapping portion)g?z<
Test 4: Different time encompassed range (should hit cache))secondsz4
Test 5: No time range specified (should miss cache))r   r   r   z9
Test 6: No time range specified again (should hit cache)z
Test 7: Get data as arrow)r   r   z"
=== Cache Performance Summary ===zOriginal call: z.4fz secondszExact time range no run_id: z
 seconds (z.1fz	x faster)zSubset time range: zExtended time range earlier: zDifferent time range: zNo time range: z	x slower)zNo time range repeat: zArrow: )osgetenvr   assetsfindid_printr   runslenr   appenddatatimeperf_counterget_data	enumerateitemsnpmeanindexpd	Timedeltar   nowr   utcnanget_data_as_arrowpacompute)'r   r   r   clientassetasset_idr'   runr   
all_assetsother_assetsr   asset_channelsother_channelscchannelchannel_data
perf_start
first_timer   r   ichannel_namer*   _
exact_timemid_timesubset_timeextended_startextended_timedifferent_startdifferent_enddifferent_timefake_no_end_timechannel_data_no_timeno_time_timeno_time_time_repeatchannel_data_arrow
arrow_times'                                          k/home/www/backend.miabetepe.com/venv/lib/python3.12/site-packages/sift_client/_tests/integrated/channels.pymainrZ      sZ	    yy*;<Hyy*:;Hii+G7XNFMMO4EyyH	M%**VH:Q
78 ::D	
T9$%?3chh%?$@EJJ<W]^f]gghi
 q'CWWF	Kzxq
12 J'1KeUYY(5JEKLK	
\"##4\N)CHH:U[\b[ccde
 H swwbA 	)AvvQQ"%%a(		) x=1X}RZ5[wgll5[4\\ghmhrhrgss{|  }E  }E  |F  G >"Q&S011DVdEeQRaffEeDffqrwr|r|q}  ~F  GJ  GO  GO  FP  Q #( qkG<<'MUX<YL	gll^5\1B0C7
KL 

/0""$J??++5PS , L ""$z1JJH#,\-?-?-A#B EL$2l^2c$i[rwwtLGY?Z>[\] 6AJzz"~HLL
CDE h@A 	LM&&(
OO$$! % 

 &&(:5
 	PQJ!6! ;;&&(
OO$$! % 

 '')J6 	`a#x*'<&CC&&(
OO$$% % 

 ))+j8 	MN(2<<+BB"R\\!%<<&&(
OO$$&" % 

 **,z9 	EF#<<5&&(
%77%  8  

 ((*Z7'01E1K1K1M'N 	b#A#dQCr,r#d)N2774P\K]C^B_`a	b
 	JK&&(
%77%  8  

 (11E1K1K1M'N 	#A#d#R~RD	{.`lpt`tlI[A\z|  {A  {A  AB  C	 #//1J> 	+,&&(
#__>>% ? 
 &&(:5
'01C1I1I1K'L 	#A#d#R~RD	{.QUVbQcAd@ef	 	34
3/x89*:c*:*jS]F]_bDcclm	
 	!+c!2*j;>VX[<\\ef	
 	+M#+>j*WdJdfiHjjst	
 	$^C$8
JQ_D_adBeeno	
 	l3/z<*;TVY9ZZcd	
 	$%8$=ZXkIkmpGqqz{	
 	
3'z:@S3SUX1YYbcdJ&&&Z'''z)))
***"\111g zy &@ L$ 6\ FfsM   B7b	9a5Ab	#a:8a:<Bb	b	-a? Ab	bDb	2Tb	__main__)asyncior!   r+   r   r   numpyr0   pandasr3   pyarrowr9   sift_client.clientr   rZ   __name__r>        rY   <module>rd      sC     	  '    )|2~ zGKK rc   