Ë
    €Ïw2  ã                   óJ  — d 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ddlZddl	Z	ddl
Z
ddlmZ ddlmc 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mZ  e eddd«      «       ddlmZ  G d„ dej:                  «      Z G d„ dej>                  «      Z y)ú'Integration tests for perfdiag command.é    )Úabsolute_import)Úprint_function)Údivision)Úunicode_literalsN)Ú_GenerateFileData)Ú
SkipForXML)ÚObjectToURI)ÚRUN_S3_TESTS)Úunittest)Ú
IS_WINDOWS)Úadd_moveÚMovedModuleÚmockzunittest.mock)r   c                   óø  ‡ — e Zd ZdZeˆ fd„«       Zd„ Zd„ Z	 	 dd„Z	 dd„Z	d„ Z
d„ Z ej                  ed	«      d
„ «       Z ej                  ed	«      d„ «       Zd„ Zd„ Z ej                  ed	«      d„ «       Z ej                  ed	«      d„ «       Z ej                  ed	«      d„ «       Zd„ Zd„ Zd„ Zd„ Z ed«      d„ «       Z ed«      d„ «       Z ej                  ed	«       ed«      d„ «       «       Zˆ xZS )ÚTestPerfDiagr   c                 óz  •— t         t        |   «        t        j                  j                  ddt        j                  j                  j                  j                  «      }d }t        j                  |d «      D ]  }|d   j                  dv sŒ|d   d   } n |st        d|z   «      ‚dd|z   dd	|z   dd
g| _        y )NÚCredentialsÚgs_hostr   )ÚAF_INETÚAF_INET6é   zCount not find IP for ú-ozCredentials:gs_host=zCredentials:gs_host_header=z&Boto:https_validate_certificates=False)Úsuperr   Ú
setUpClassÚbotoÚconfigÚgetÚgsÚ
connectionÚGSConnectionÚDefaultHostÚsocketÚgetaddrinfoÚnameÚConnectionErrorÚ_custom_endpoint_flags)Úclsr   Úgs_ipÚaddress_tupleÚ	__class__s       €ú,platform/gsutil/gslib/tests/test_perfdiag.pyr   zTestPerfDiag.setUpClass.   sÀ   ø€ ä	Œ,˜Ñ'Ô)ô
 k‰ko‰o˜m¨YÜ"Ÿg™g×0Ñ0×=Ñ=×IÑIóK€Gà€EÜ×+Ñ+¨G°TÖ:ˆà	qÑ	×	Ñ	Ð"9Ò	9à˜aÑ  Ñ#ˆÙð ;ñ ÜÐ4°wÑ>Ó?Ð?ð 	Ð$ uÑ,¨dØ%¨Ñ/°Ø0ð"€CÕó    c                 ó¾  — t         j                  d   dk(  xrF t         j                  d   dk  xs. t         j                  d   dk(  xr t         j                  d   dk  }| j                  dk(  xro t         xrf |xrb t        j
                  j                  d«      xs@ t        j
                  j                  d«      xs t        j
                  j                  d	«       S )
Nr   é   é   é   é	   ÚXMLÚ
http_proxyÚhttps_proxyÚHTTPS_PROXY)ÚsysÚversion_infoÚtest_apir   ÚosÚenvironr   )ÚselfÚpython_version_less_than_2_7_9s     r,   Ú!_should_run_with_custom_endpointsz.TestPerfDiag._should_run_with_custom_endpointsG   sÊ   € ô '*×&6Ñ&6°qÑ&9¸QÑ&>ò '@Ü	×	Ñ	˜!Ñ	˜qÑ	 ò 	?Ü	×	Ñ	˜!Ñ	 Ñ	!Ò	=¤c×&6Ñ&6°qÑ&9¸AÑ&=ð #ð M‰M˜UÑ"ò 3¬<Ð'7ò 3Ø*ò3ä—‘—‘ Ó-ò 2´·±·±ÀÓ1Nò 2Ü—J‘J—N‘N =Ó1ð3ð4r-   c                 óì   — | j                  «       }dddddt        |«      g}| j                  |«       | j                  «       r| j                  | j                  |z   «       | j                  |dd¬«       y )	NÚperfdiagú-nÚ1ú-tÚlatr   T©Ú	versioned)ÚCreateBucketÚsuriÚ	RunGsUtilr>   r'   ÚAssertNObjectsInBucket)r<   Ú
bucket_uriÚcmds      r,   Útest_latencyzTestPerfDiag.test_latencyX   sk   € Ø×"Ñ"Ó$€JØt˜S $¨¬t°JÓ/?Ð
@€CØ‡NN3ÔØ×-Ñ-Ô/Ø
‡nnT×0Ñ0°3Ñ6Ô7Ø×Ñ 
¨A¸ÐÕ>r-   c                 ó†  — | j                  «       }ddt        ||z  «      dddt        |«      dt        |«      d|g}||dt        |«      gz  }||d	|gz  }|t        |«      gz  }| j                  |d
¬«      }d }	| j	                  «       r | j                  | j
                  |z   d
¬«      }	| j                  |dd
¬«       ||	fS )Nr@   rA   ú-sÚ1024z-cz-krC   z-jz-pT)Úreturn_stderrr   rE   )rG   ÚstrrH   rI   r>   r'   rJ   )
r<   Ú	test_nameÚnum_processesÚnum_threadsÚparallelism_strategyÚcompression_ratiorK   rL   Ústderr_defaultÚstderr_customs
             r,   Ú_run_throughput_testz!TestPerfDiag._run_throughput_test`   sô   € ð ×"Ñ"Ó$€Jð 	DÜˆM˜KÑ'Ó(¨$°¸ÜˆMÓ˜DÜˆKÓ˜$ 	ð	€Cð Ð$Ø	ˆd”CÐ)Ó*Ð+Ñ+€cØÐ'Ø	ˆdÐ(Ð)Ñ)€cØŒDÓÐÑ€Cà—^‘^ C°t^Ó<€NØ€MØ×-Ñ-Ô/Ø—n‘n T×%@Ñ%@À3Ñ%FØ37ð %ó 9€mà×Ñ 
¨A¸ÐÔ>Ø˜MÐ*Ð*r-   c                 ó–   — | j                  |||d|¬«       t        s-| j                  |||d|¬«       | j                  |||d|¬«       y y )NÚfan©rW   ÚsliceÚboth©rZ   r   )r<   rS   rT   rU   rW   s        r,   Ú"_run_each_parallel_throughput_testz/TestPerfDiag._run_each_parallel_throughput_test|   sv   € ð
 	×Ñ˜iØ+Ø)Ø#Ø0Að	 ô Cõ
 Ø
×Ñ 	Ø -Ø +Ø 'Ø2Cð	  ô Eð
 ×Ñ 	Ø -Ø +Ø &Ø2Cð	  õ Eð r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )NÚwthrur0   Ú
wthru_file©rZ   ©r<   s    r,   Ú2test_write_throughput_single_process_single_threadz?TestPerfDiag.test_write_throughput_single_process_single_thread’   ó&   € Ø×Ñ˜g q¨!Ô,Ø×Ñ˜l¨A¨qÕ1r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )Nrc   r0   r/   rd   ©ra   rf   s    r,   Ú1test_write_throughput_single_process_multi_threadz>TestPerfDiag.test_write_throughput_single_process_multi_thread–   ó&   € Ø×+Ñ+¨G°Q¸Ô:Ø×+Ñ+¨L¸!¸QÕ?r-   z+Multiprocessing is not supported on Windowsc                 óP   — | j                  ddd«       | j                  ddd«       y )Nrc   r/   r0   rd   rj   rf   s    r,   Ú1test_write_throughput_multi_process_single_threadz>TestPerfDiag.test_write_throughput_multi_process_single_threadš   ó&   € à×+Ñ+¨G°Q¸Ô:Ø×+Ñ+¨L¸!¸QÕ?r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )Nrc   r/   rd   rj   rf   s    r,   Ú0test_write_throughput_multi_process_multi_threadz=TestPerfDiag.test_write_throughput_multi_process_multi_threadŸ   ro   r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )NÚrthrur0   Ú
rthru_filere   rf   s    r,   Ú1test_read_throughput_single_process_single_threadz>TestPerfDiag.test_read_throughput_single_process_single_thread¤   rh   r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )Nrs   r0   r/   rt   rj   rf   s    r,   Ú0test_read_throughput_single_process_multi_threadz=TestPerfDiag.test_read_throughput_single_process_multi_thread¨   rl   r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )Nrs   r/   r0   rt   rj   rf   s    r,   Ú0test_read_throughput_multi_process_single_threadz=TestPerfDiag.test_read_throughput_multi_process_single_thread¬   ro   r-   c                 óP   — | j                  ddd«       | j                  ddd«       y )Nrs   r/   rt   rj   rf   s    r,   Ú/test_read_throughput_multi_process_multi_threadz<TestPerfDiag.test_read_throughput_multi_process_multi_thread±   ro   r-   c                 ó°   — | j                  ddd«       | j                  dddd«       t        s)| j                  dddd«       | j                  dddd«       yy)z<Tests that rthru_file and wthru_file work when run together.zrthru_file,wthru_filer0   r/   r\   r^   r_   Nr`   rf   s    r,   Ú!test_read_and_write_file_orderingz.TestPerfDiag.test_read_and_write_file_ordering¶   s^   € ð 	×ÑÐ5°q¸!Ô<Ø×ÑÐ5°q¸!¸UÔCÝØ
×ÑÐ 7¸¸A¸wÔGØ
×ÑÐ 7¸¸A¸vÕFð r-   c                 ó°   — | j                  «       }| j                  «       }| j                  dd|ddddt        |«      g«       | j                  dd|g«       y )Nr@   r   rA   rB   rC   rD   z-i)ÚCreateTempFilerG   rI   rH   )r<   ÚoutpathrK   s      r,   Útest_input_outputzTestPerfDiag.test_input_output¿   s[   € Ø×!Ñ!Ó#€GØ×"Ñ"Ó$€JØ‡NNØ	T˜7 D¨#¨t°UÜ	ˆjÓ	ð	ôð 	‡NNJ  gÐ.Õ/r-   c                 óT   — | j                  g d¢dd¬«      }| j                  d|«       y )N)r@   rA   rB   rO   ÚfoorC   rc   úgs://foobarr0   T©Úexpected_statusrQ   z
Invalid -s©rI   ÚassertIn©r<   Ústderrs     r,   Útest_invalid_sizezTestPerfDiag.test_invalid_sizeÇ   s.   € Ø^‰^ÚJØØð ó €Fð 	‡MM, Õ'r-   c                 óT   — | j                  g d¢dd¬«      }| j                  d|«       y )N)r@   rA   rB   rO   Ú3pbrC   rc   r„   r0   Tr…   z!in-memory tests maximum file sizer‡   r‰   s     r,   Útest_toobig_sizezTestPerfDiag.test_toobig_sizeÎ   s/   € Ø^‰^ÚJØØð ó €Fð 	‡MMÐ5°vÕ>r-   c           
      ó´   — | j                  «       }| j                  dddddt        |«      gd¬«      }| j                  d|«       | j	                  |d	d¬
«       y )Nr@   rA   rB   rC   ÚlistT)Úreturn_stdoutzNumber of listing calls made:r   rE   )rG   rI   rH   rˆ   rJ   )r<   rK   Ústdouts      r,   Útest_listingzTestPerfDiag.test_listingÕ   sd   € Ø×"Ñ"Ó$€JØ^‰^Ø	T˜3  fÜ	ˆjÓ	ð	àð ó €Fð 	‡MMÐ1°6Ô:Ø×Ñ 
¨A¸ÐÕ>r-   z9No compressed transport encoding support for the XML API.c                 óô   — | j                  dddd¬«      \  }}| j                  d|«       | j                  d|«       | j                  dddd¬«      \  }}| j                  d|«       | j                  d|«       y )Nrc   r0   é2   r]   zGzip compression ratio: 50z$Gzip transport encoding writes: Truerd   )rZ   rˆ   )r<   rX   Ú_s      r,   Ú7test_gzip_write_throughput_single_process_single_threadzDTestPerfDiag.test_gzip_write_throughput_single_process_single_threadÞ   sŽ   € à×3Ñ3°GØ45Ø45ØFHð 4ó JÑ€^Qð 	‡MMÐ.°Ô?Ø‡MMÐ8¸.ÔIØ×3Ñ3°LØ45Ø45ØFHð 4ó JÑ€^Qð 	‡MMÐ.°Ô?Ø‡MMÐ8¸.ÕIr-   c                 óX   — | j                  dddd¬«       | j                  dddd¬«       y )Nrc   r0   r/   r•   r]   rd   rj   rf   s    r,   Ú6test_gzip_write_throughput_single_process_multi_threadzCTestPerfDiag.test_gzip_write_throughput_single_process_multi_threadí   s8   € à×+Ñ+¨G°Q¸ÈRÐ+ÔPØ×+Ñ+¨LØ,-Ø,-Ø>@ð ,õ Br-   c                 óX   — | j                  dddd¬«       | j                  dddd¬«       y )Nrc   r/   r•   r]   rd   rj   rf   s    r,   Ú5test_gzip_write_throughput_multi_process_multi_threadzBTestPerfDiag.test_gzip_write_throughput_multi_process_multi_threadõ   s:   € ð 	×+Ñ+¨G°Q¸ÈRÐ+ÔPØ×+Ñ+¨LØ,-Ø,-Ø>@ð ,õ Br-   )NN)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Úclassmethodr   r>   rM   rZ   ra   rg   rk   r   ÚskipIfr   rn   rq   ru   rw   ry   r{   r}   r   r‹   rŽ   r“   r	   r—   r™   r›   Ú__classcell__)r+   s   @r,   r   r   +   s  ø„ Ù/àóó ðò04ò"?ð 15Ø-1ó+ð@ <@ó	Eò,2ò@ð €8‡??:ÐLÓMñ@ó Nð@ð €8‡??:ÐLÓMñ@ó Nð@ò2ò@ð €8‡??:ÐLÓMñ@ó Nð@ð €8‡??:ÐLÓMñ@ó Nð@ð €8‡??:ÐLÓMñGó NðGò0ò(ò?ò?ñ ÐIÓJñJó KðJñ ÐIÓJñBó KðBð €8‡??:ÐLÓMÙÐIÓJñBó Kó NôBr-   r   c                   óv   — e Zd ZdZd„ Z ej                  d«      d„ «       Z ej                  d«      d„ «       Zy)ÚTestPerfDiagUnitTestsz Unit tests for perfdiag command.c           
      ó  — d}| j                  «       }| j                  |d¬«       | j                  |d¬«       | j                  ddt        |«      ddt	        |«      gd	¬
«      }| j                  d|z  |j                  d   «       y )Nr0   s   foo)rK   Úcontentss   barr@   rA   rC   r   T)Úreturn_log_handlerz5Listing produced more than the expected %d object(s).Úwarning)rG   ÚCreateObjectÚ
RunCommandrR   rH   ÚassertNotInÚmessages)r<   Útest_objectsrK   Úmock_log_handlers       r,   Ú.test_listing_does_not_list_preexisting_objectszDTestPerfDiagUnitTests.test_listing_does_not_list_preexisting_objects  s–   € Ø€LØ×"Ñ"Ó$€Jà×Ñ °fÐÔ=Ø×Ñ °fÐÔ=Ø—‘ØØ	Œs<Ó  $¨Ü	ˆjÓ	ð	àð	 'ó !Ðð
 	×ÑØ?À,ÑNØ×!Ñ! )Ñ,õ.r-   z
os.urandomc                 óä  — d„ }||_         t        j                  «       }t        |ddd«       | j	                  d|j                  «       «       | j	                  d|j                  «       «       t        j                  «       }t        |ddd«       | j                  d|j                  «       «       | j                  d|j                  «       «       | j	                  d|j                  «       «       t        j                  «       }t        |ddd«       | j                  d	|j                  «       «       | j                  d|j                  «       «       | j	                  d|j                  «       «       y
)zATest the right amount of random and sequential data is generated.c                 ó   — d| z  S ©Nó   a© ©Úlengths    r,   Úurandomz>TestPerfDiagUnitTests.test_generate_file_data.<locals>.urandom  ó   € ØF‰]Ðr-   iè  éd   sè  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaar•   sô  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaasô  xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxié  sõ  aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaN)Úside_effectÚsixÚBytesIOr   ÚassertEqualÚgetvalueÚtellrˆ   ©r<   Úmock_urandomr·   Úfps       r,   Útest_generate_file_dataz-TestPerfDiagUnitTests.test_generate_file_data  s  € òð  '€LÔä	‰‹€BÜb˜$  TÔ*Ø×Ñ[ "§+¡+£-Ô0Ø×ÑT˜2Ÿ7™7›9Ô%ä	‰‹€BÜb˜$  DÔ)Ø‡MM*˜bŸk™k›mÔ,Ø‡MM*˜bŸk™k›mÔ,Ø×ÑT˜2Ÿ7™7›9Ô%ä	‰‹€BÜb˜$  DÔ)Ø‡MM*˜bŸk™k›mÔ,Ø‡MM*˜bŸk™k›mÔ,Ø×ÑT˜2Ÿ7™7›9Õ%r-   c                 óÜ   — d„ }||_         t        j                  «       }t        |ddd«       | j	                  d|j                  «       «       | j	                  d|j                  «       «       y)z-Test that random data repeats when exhausted.c                 ó   — d| z  S r²   r´   rµ   s    r,   r·   zETestPerfDiagUnitTests.test_generate_file_data_repeat.<locals>.urandom/  r¸   r-   é   r•   r   s   aaxxaaxxN)rº   r»   r¼   r   r½   r¾   r¿   rÀ   s       r,   Útest_generate_file_data_repeatz4TestPerfDiagUnitTests.test_generate_file_data_repeat+  sV   € òð  '€LÔä	‰‹€BÜb˜!˜R Ô#Ø×Ñ[ "§+¡+£-Ô0Ø×ÑQ˜Ÿ™›	Õ"r-   N)	rœ   r   rž   rŸ   r¯   r   ÚpatchrÃ   rÇ   r´   r-   r,   r¤   r¤   ÿ   sH   „ Ù(ò.ð €4‡::ˆlÓñ&ó ð&ð2 €4‡::ˆlÓñ#ó ñ#r-   r¤   )!rŸ   Ú
__future__r   r   r   r   r:   r#   r7   r»   r   Úgslib.commands.perfdiagr   Úgslib.tests.testcaseÚtestsÚtestcaseÚ)gslib.tests.testcase.integration_testcaser	   Úgslib.tests.utilr
   rH   r   r   Úgslib.utils.system_utilr   r   r   Ú	six.movesr   ÚGsUtilIntegrationTestCaser   ÚGsUtilUnitTestCaser¤   r´   r-   r,   Ú<module>rÔ      s}   ðñ .å &Ý %Ý Ý 'ã 	Û Û 
ã 
ã Ý 5ß 'Ð 'Ý @Ý 0Ý )Ý %Ý .ç %á ‰V˜V _Ó	5Ô 6Ý ôQB8×5Ñ5ô QBôh8#˜H×7Ñ7õ 8#r-   