ó
è?F[c           @   sX   d  d l  Z  d  d l m Z m Z d  d l m Z d  d l Z d e f d „  ƒ  YZ d S(   iÿÿÿÿN(   t   datetimet	   timedelta(   t   parse_tst   ResultProcessorc           B   sk   e  Z d  Z d	 d „ Z d „  Z d „  Z e d „ Z e e d „ Z	 e d „ Z
 d „  Z e e d „ Z RS(
   s   log.csvc         C   s‹   | |  _  | |  _ d  |  _ d |  _ d |  _ t j |  _ t j	 |  _
 t j |  _ t j	 |  _ |  j  j d ƒ |  _ |  j  j d ƒ |  _ d  S(   Ni    t   output_queuet   output_domain(   t   sdt   batcht   Nonet   log_fpt	   num_filest
   total_timeR   t   maxt   min_timet   mint   max_timeR    t   earliest_timet   latest_timet   get_objt   queuet   domain(   t   selft
   batch_nameR   t   mimetype_files(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   __init__   s    					c         C   s¬   t  | d ƒ } t  | d ƒ } | | } | |  j k rE | |  _ n  | |  j k  r` | |  _ n  |  j | j 7_ | |  j k  r | |  _ n  | |  j k r¨ | |  _ n  d  S(   Ns   Service-Reads   Service-Write(   R   R   R   R   t   secondsR   R   (   R   t   msgt
   start_timet   end_timet   elapsed_time(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   calculate_stats,   s    
c         C   sÜ   t  | j ƒ  ƒ } |  j se t t j j | |  j ƒ d ƒ |  _ d j | ƒ } |  j j | d ƒ n  g  } xG | D]? } | | } | j	 d ƒ d k r¤ d | } n  | j
 | ƒ qr Wd j | ƒ } |  j j | d ƒ d  S(   Nt   at   ,s   
i    s   "%s"(   t   sortedt   keysR	   t   opent   ost   patht   joint   LogFileNamet   writet   findt   append(   R   R   R%   R"   t   linet   valuest   keyt   value(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   log_message:   s    	$
c   
      C   së   |  j  | | ƒ |  j | ƒ | d j d ƒ } d | k rU t j d | d ƒ } n t j d | d ƒ } xy | D]q } | rÔ | j d ƒ d } | j | ƒ } t j j | | ƒ }	 d | |	 f GH| j |	 ƒ n  |  j	 d	 7_	 qr Wd  S(
   Nt	   OutputKeyR    t   OutputBuckett   s3t   Buckett   ;i    s   retrieving file: %s to %si   (
   R/   R   t   splitt   botot   lookupR$   R%   R&   t   get_contents_to_filenameR
   (
   R   t   recordR%   t   get_filet   outputst   buckett   outputt   key_nameR-   t	   file_name(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   process_recordI   s    c         C   s}   |  j  j ƒ  } xg | rx d | k rf | d |  j k rf |  j | | | ƒ | rf |  j  j | ƒ qf n  |  j  j ƒ  } q Wd  S(   Nt   Batch(   R   t   readR   R@   t   delete_message(   R   R%   R:   t
   delete_msgt   m(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   get_results_from_queueZ   s    	c         C   sA   |  j  j d |  j ƒ } x! | D] } |  j | | | ƒ q  Wd  S(   Ns   ['Batch'='%s'](   R   t   queryR   R@   (   R   R%   R:   t   rst   item(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   get_results_from_domainc   s    c         C   sq   |  j  j d ƒ } | rm d GHxM | D]B } t j j | | ƒ } d | | f GH| j | ƒ |  j d q$ Wn  d  S(   Nt   output_bucketsC   No output queue or domain, just retrieving files from output_buckets   retrieving file: %s to %si   (   R   R   R$   R%   R&   R8   R
   (   R   R%   R<   R-   R?   (    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   get_results_from_bucketh   s    c         C   s+  t  j j | ƒ s" t  j | ƒ n  |  j r> |  j | | ƒ n) |  j rZ |  j | | ƒ n |  j | ƒ |  j	 r€ |  j	 j
 ƒ  n  d |  j GH|  j d k r't |  j ƒ |  j |  _ d |  j j GHd |  j j GHd |  j GH|  j |  j |  _ d |  j j GHd |  j j d |  j } d	 | GHn  d  S(
   Ns"   %d results successfully retrieved.i    s   Minimum Processing Time: %ds   Maximum Processing Time: %ds   Average Processing Time: %fs   Elapsed Time: %dg      ð?g      N@s$   Throughput: %f transactions / minute(   R$   R%   t   isdirt   mkdirR   RF   R   RJ   RL   R	   t   closeR
   t   floatR   t   avg_timeR   R   R   R   R   R   (   R   R%   R:   RD   t   tput(    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   get_resultsr   s&    			N(   t   __name__t
   __module__R'   R   R   R   R/   t   TrueR@   RF   RJ   RL   RS   (    (    (    s3   lib/python2.7/site-packages/boto/services/result.pyR      s   				
(   R$   R    R   t
   boto.utilsR   R6   t   objectR   (    (    (    s3   lib/python2.7/site-packages/boto/services/result.pyt   <module>   s   