o ckF[Üã@s@ddlZddlmZmZddlmZddlZGdd„deƒZdS)éN)ÚdatetimeÚ timedelta)Úparse_tsc@sZeZdZdZddd„Zdd„Zdd„Zdd d „Zdd d „Zddd„Z dd„Z ddd„Z dS)ÚResultProcessorzlog.csvNcCs^||_||_d|_d|_d|_tj|_tj|_ t j|_ t j|_ |j  d¡|_|j  d¡|_dS)NrÚ output_queueÚ output_domain)ÚsdÚbatchÚlog_fpÚ num_filesÚ total_timerÚmaxÚmin_timeÚminÚmax_timerÚ earliest_timeÚ latest_timeÚget_objÚqueueÚdomain)ÚselfÚ batch_namerÚmimetype_files©rú6/usr/lib/python3/dist-packages/boto/services/result.pyÚ__init__szResultProcessor.__init__cCsxt|dƒ}t|dƒ}||}||jkr||_||jkr ||_|j|j7_||jkr0||_||jkr:||_dSdS)Nz Service-Readz Service-Write)rrrr Úsecondsrr)rÚmsgÚ start_timeÚend_timeÚ elapsed_timerrrÚcalculate_stats,s       ÿzResultProcessor.calculate_statscCs˜t| ¡ƒ}|js"ttj ||j¡dƒ|_d |¡}|j |d¡g}|D]}||}|  d¡dkr7d|}|  |¡q&d |¡}|j |d¡dS)NÚaú,Ú rz"%s") ÚsortedÚkeysr ÚopenÚosÚpathÚjoinÚ LogFileNameÚwriteÚfindÚappend)rrr)r&ÚlineÚvaluesÚkeyÚvaluerrrÚ log_message:s    zResultProcessor.log_messageTc Cs®| ||¡| |¡|d d¡}d|vrt d|d¡}nt d|d¡}|D]+}|rM| d¡d}| |¡}tj ||¡} td|| fƒ|  | ¡|j d 7_ q)dS) NÚ OutputKeyr#Ú OutputBucketÚs3ÚBucketú;rúretrieving file: %s to %sé) r3r!ÚsplitÚbotoÚlookupr(r)r*ÚprintÚget_contents_to_filenamer ) rÚrecordr)Úget_fileÚoutputsÚbucketÚoutputÚkey_namer1Ú file_namerrrÚprocess_recordIs    ùzResultProcessor.process_recordcCsX|j ¡}|r*d|vr!|d|jkr!| |||¡|r!|j |¡|j ¡}|sdSdS)NÚBatch)rÚreadr rGÚdelete_message)rr)rAÚ delete_msgÚmrrrÚget_results_from_queueZs    ûz&ResultProcessor.get_results_from_queuecCs.|j d|j¡}|D] }| |||¡q dS)Nz['Batch'='%s'])rÚqueryr rG)rr)rAÚrsÚitemrrrÚget_results_from_domaincsÿz'ResultProcessor.get_results_from_domaincCs\|j d¡}|r*tdƒ|D]}tj ||¡}td||fƒ| |¡|jdqdSdS)NÚ output_bucketzCNo output queue or domain, just retrieving files from output_bucketr9r:)rrr>r(r)r*r?r )rr)rCr1rFrrrÚget_results_from_buckeths   úz'ResultProcessor.get_results_from_bucketcCsøtj |¡s t |¡|jr| ||¡n|jr| ||¡n| |¡|j r,|j   ¡t d|j ƒ|j dkrzt |jƒ|j |_t d|jjƒt d|jjƒt d|jƒ|j|j|_t d|jjƒd|jjd|j }t d |ƒdSdS) Nz"%d results successfully retrieved.rzMinimum Processing Time: %dzMaximum Processing Time: %dzAverage Processing Time: %fzElapsed Time: %dgð?gN@z$Throughput: %f transactions / minute)r(r)ÚisdirÚmkdirrrMrrQrSr Úcloser>r Úfloatr Úavg_timerrrrrr )rr)rArKÚtputrrrÚ get_resultsrs(     øzResultProcessor.get_results)N)T)TT) Ú__name__Ú __module__Ú __qualname__r+rr!r3rGrMrQrSrZrrrrrs      r)r(rrÚ boto.utilsrr<ÚobjectrrrrrÚs