ó
    €Ïw2  ã                   óJ  • S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSK	r	SSK
r
SSKJr  SSKJs  Jr  SSKJr  SS	KJr  SS
KJr  SSKJr  SSKJr  SSK	JrJr  \" \" SSS5      5        SSKJr   " S S\R:                  5      r " S S\R>                  5      r g)ú'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                   ó  ^ • \ rS rSrSr\U 4S j5       rS rS r  SS jr	 SS jr
S rS	 r\R                  " \S
5      S 5       r\R                  " \S
5      S 5       rS rS r\R                  " \S
5      S 5       r\R                  " \S
5      S 5       r\R                  " \S
5      S 5       rS rS rS rS r\" S5      S 5       r\" S5      S 5       r\R                  " \S
5      \" S5      S 5       5       rSrU =r $ )ÚTestPerfDiagé+   r   c                 óŽ  >• [         [        U ]  5         [        R                  R                  SS[        R                  R                  R                  R                  5      nS n[        R                  " US 5       H   nUS   R                  S;   d  M  US   S   n  O   U(       d  [        SU-   5      eSSU-   SS	U-   SS
/U l        g )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   Ú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                 ó  • [         R                  S   S:H  =(       aP    [         R                  S   S:  =(       d3    [         R                  S   S:H  =(       a    [         R                  S   S:  nU R                  S:H  =(       a‹    [        (       + =(       ay    U=(       ap    [        R
                  R                  S5      =(       dE    [        R
                  R                  S5      =(       d    [        R
                  R                  S	5      (       + $ )
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_endpointsÚ.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                 óð   • U R                  5       nSSSSS[        U5      /nU R                  U5        U R                  5       (       a  U R                  U R                  U-   5        U R                  USSS9  g )	NÚperfdiagú-nÚ1ú-tÚlatr   T©Ú	versioned)ÚCreateBucketÚsuriÚ	RunGsUtilr@   r(   ÚAssertNObjectsInBucket)r>   Ú
bucket_uriÚcmds      r-   Útest_latencyÚTestPerfDiag.test_latencyX   sn   € Ø×"Ñ"Ó$€JØt˜S $¨¬t°JÓ/?Ð
@€CØ‡NN3ÔØ×-Ñ-×/Ñ/Ø
‡nnT×0Ñ0°3Ñ6Ô7Ø×Ñ 
¨A¸ÐÒ>r/   c                 ó~  • U R                  5       nSS[        X#-  5      SSS[        U5      S[        U5      SU/nUb  US[        U5      /-  nUb  US	U/-  nU[        U5      /-  nU R                  US
S9nS n	U R	                  5       (       a  U R                  U R
                  U-   S
S9n	U R                  USS
S9  X‰4$ )NrC   rD   ú-sÚ1024z-cz-krF   z-jz-pT)Úreturn_stderrr   rH   )rJ   ÚstrrK   rL   r@   r(   rM   )
r>   Ú	test_nameÚnum_processesÚnum_threadsÚparallelism_strategyÚcompression_ratiorN   rO   Ústderr_defaultÚstderr_customs
             r-   Ú_run_throughput_testÚ!TestPerfDiag._run_throughput_test`   só   € ð ×"Ñ"Ó$€Jð 	DÜˆMÑ'Ó(¨$°¸ÜˆMÓ˜DÜˆKÓ˜$ 	ð	€Cð Ñ$Ø	ˆd”CÐ)Ó*Ð+Ñ+€cØÑ'Ø	ˆdÐ(Ð)Ñ)€cØŒDÓÐÑ€Cà—^‘^ C°t^Ð<€NØ€MØ×-Ñ-×/Ñ/Ø—n‘n T×%@Ñ%@À3Ñ%FØ37ð %ð 9€mà×Ñ 
¨A¸ÐÑ>ØÐ*Ð*r/   c                 óŽ   • U R                  UUUSUS9  [        (       d'  U R                  UUUSUS9  U R                  UUUSUS9  g g )NÚfan©r[   ÚsliceÚboth©r^   r   )r>   rW   rX   rY   r[   s        r-   Ú"_run_each_parallel_throughput_testÚ/TestPerfDiag._run_each_parallel_throughput_test|   sx   € ð
 	×Ñ˜iØ+Ø)Ø#Ø0Að	 ñ C÷
 Š<Ø
×Ñ 	Ø -Ø +Ø 'Ø2Cð	  ñ Eð
 ×Ñ 	Ø -Ø +Ø &Ø2Cð	  ò Eð r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )NÚwthrur2   Ú
wthru_file©r^   ©r>   s    r-   Ú2test_write_throughput_single_process_single_threadÚ?TestPerfDiag.test_write_throughput_single_process_single_thread’   ó&   € Ø×Ñ˜g q¨!Ô,Ø×Ñ˜l¨A¨qÕ1r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )Nri   r2   r1   rj   ©rf   rl   s    r-   Ú1test_write_throughput_single_process_multi_threadÚ>TestPerfDiag.test_write_throughput_single_process_multi_thread–   ó&   € Ø×+Ñ+¨G°Q¸Ô:Ø×+Ñ+¨L¸!¸QÕ?r/   z+Multiprocessing is not supported on Windowsc                 óP   • U R                  SSS5        U R                  SSS5        g )Nri   r1   r2   rj   rq   rl   s    r-   Ú1test_write_throughput_multi_process_single_threadÚ>TestPerfDiag.test_write_throughput_multi_process_single_threadš   ó&   € à×+Ñ+¨G°Q¸Ô:Ø×+Ñ+¨L¸!¸QÕ?r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )Nri   r1   rj   rq   rl   s    r-   Ú0test_write_throughput_multi_process_multi_threadÚ=TestPerfDiag.test_write_throughput_multi_process_multi_threadŸ   rx   r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )NÚrthrur2   Ú
rthru_filerk   rl   s    r-   Ú1test_read_throughput_single_process_single_threadÚ>TestPerfDiag.test_read_throughput_single_process_single_thread¤   ro   r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )Nr}   r2   r1   r~   rq   rl   s    r-   Ú0test_read_throughput_single_process_multi_threadÚ=TestPerfDiag.test_read_throughput_single_process_multi_thread¨   rt   r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )Nr}   r1   r2   r~   rq   rl   s    r-   Ú0test_read_throughput_multi_process_single_threadÚ=TestPerfDiag.test_read_throughput_multi_process_single_thread¬   rx   r/   c                 óP   • U R                  SSS5        U R                  SSS5        g )Nr}   r1   r~   rq   rl   s    r-   Ú/test_read_throughput_multi_process_multi_threadÚ<TestPerfDiag.test_read_throughput_multi_process_multi_thread±   rx   r/   c                 óº   • U R                  SSS5        U R                  SSSS5        [        (       d)  U R                  SSSS5        U R                  SSSS5        gg)z<Tests that rthru_file and wthru_file work when run together.zrthru_file,wthru_filer2   r1   ra   rc   rd   Nre   rl   s    r-   Ú!test_read_and_write_file_orderingÚ.TestPerfDiag.test_read_and_write_file_ordering¶   s`   € ð 	×ÑÐ5°q¸!Ô<Ø×ÑÐ5°q¸!¸UÔCßŠ<Ø
×ÑÐ 7¸¸A¸wÔGØ
×ÑÐ 7¸¸A¸vÕFð r/   c                 ó°   • U R                  5       nU R                  5       nU R                  SSUSSSS[        U5      /5        U R                  SSU/5        g )NrC   r   rD   rE   rF   rG   z-i)ÚCreateTempFilerJ   rL   rK   )r>   ÚoutpathrN   s      r-   Útest_input_outputÚTestPerfDiag.test_input_output¿   s[   € Ø×!Ñ!Ó#€GØ×"Ñ"Ó$€JØ‡NNØ	T˜7 D¨#¨t°UÜ	ˆjÓ	ð	ôð 	‡NNJ  gÐ.Õ/r/   c                 óN   • U R                  / SQSSS9nU R                  SU5        g )N)rC   rD   rE   rS   ÚfoorF   ri   úgs://foobarr2   T©Úexpected_statusrU   z
Invalid -s©rL   ÚassertIn©r>   Ústderrs     r-   Útest_invalid_sizeÚTestPerfDiag.test_invalid_sizeÇ   s.   € Ø^‰^ÚJØØð ð €Fð 	‡MM, Õ'r/   c                 óN   • U R                  / SQSSS9nU R                  SU5        g )N)rC   rD   rE   rS   Ú3pbrF   ri   r”   r2   Tr•   z!in-memory tests maximum file sizer—   r™   s     r-   Útest_toobig_sizeÚTestPerfDiag.test_toobig_sizeÎ   s/   € Ø^‰^ÚJØØð ð €Fð 	‡MMÐ5°vÕ>r/   c           
      ó¨   • U R                  5       nU R                  SSSSS[        U5      /SS9nU R                  SU5        U R	                  US	SS
9  g )NrC   rD   rE   rF   ÚlistT)Úreturn_stdoutzNumber of listing calls made:r   rH   )rJ   rL   rK   r˜   rM   )r>   rN   Ústdouts      r-   Útest_listingÚ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                 óä   • U R                  SSSSS9u  pU R                  SU5        U R                  SU5        U R                  SSSSS9u  pU R                  SU5        U R                  SU5        g )Nri   r2   é2   rb   zGzip compression ratio: 50z$Gzip transport encoding writes: Truerj   )r^   r˜   )r>   r\   Ú_s      r-   Ú7test_gzip_write_throughput_single_process_single_threadÚDTestPerfDiag.test_gzip_write_throughput_single_process_single_threadÞ   sŠ   € à×3Ñ3°GØ45Ø45ØFHð 4ð JÑ€^ð 	‡MMÐ.°Ô?Ø‡MMÐ8¸.ÔIØ×3Ñ3°LØ45Ø45ØFHð 4ð JÑ€^ð 	‡MMÐ.°Ô?Ø‡MMÐ8¸.ÕIr/   c                 óL   • U R                  SSSSS9  U R                  SSSSS9  g )Nri   r2   r1   r¨   rb   rj   rq   rl   s    r-   Ú6test_gzip_write_throughput_single_process_multi_threadÚCTestPerfDiag.test_gzip_write_throughput_single_process_multi_threadí   s8   € à×+Ñ+¨G°Q¸ÈRÐ+ÑPØ×+Ñ+¨LØ,-Ø,-Ø>@ð ,ò Br/   c                 óL   • U R                  SSSSS9  U R                  SSSSS9  g )Nri   r1   r¨   rb   rj   rq   rl   s    r-   Ú5test_gzip_write_throughput_multi_process_multi_threadÚBTestPerfDiag.test_gzip_write_throughput_multi_process_multi_threadõ   s:   € ð 	×+Ñ+¨G°Q¸ÈRÐ+ÑPØ×+Ñ+¨LØ,-Ø,-Ø>@ð ,ò Br/   © )NN)N)!Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Úclassmethodr   r@   rP   r^   rf   rm   rr   r   ÚskipIfr   rv   rz   r   r‚   r…   rˆ   r‹   r   r›   rŸ   r¥   r	   rª   r­   r°   Ú__static_attributes__Ú__classcell__)r,   s   @r-   r   r   +   s  ø† Ù/àôó ðò04ò"?ð 15Ø-1ô+ð@ <@ô	Eò,2ò@ð ‡?‚?:ÐLÓMñ@ó Nð@ð ‡?‚?:ÐLÓMñ@ó Nð@ò2ò@ð ‡?‚?:ÐLÓMñ@ó Nð@ð ‡?‚?:ÐLÓMñ@ó Nð@ð ‡?‚?:ÐLÓMñGó NðGò0ò(ò?ò?ñ ÐIÓJñJó KðJñ ÐIÓJñBó KðBð ‡?‚?:ÐLÓMÙÐIÓJñBó Kó NöBr/   r   c                   ó~   • \ rS rSrSrS r\R                  " S5      S 5       r\R                  " S5      S 5       r	Sr
g)	ÚTestPerfDiagUnitTestséÿ   z Unit tests for perfdiag command.c           
      óü   • SnU R                  5       nU R                  USS9  U R                  USS9  U R                  SS[        U5      SS[	        U5      /S	S
9nU R                  SU-  UR                  S   5        g )Nr2   s   foo)rN   Úcontentss   barrC   rD   rF   r¢   T)Úreturn_log_handlerz5Listing produced more than the expected %d object(s).Úwarning)rJ   ÚCreateObjectÚ
RunCommandrV   rK   ÚassertNotInÚmessages)r>   Útest_objectsrN   Úmock_log_handlers       r-   Ú.test_listing_does_not_list_preexisting_objectsÚDTestPerfDiagUnitTests.test_listing_does_not_list_preexisting_objects  s–   € Ø€LØ×"Ñ"Ó$€Jà×Ñ °fÐÑ=Ø×Ñ °fÐÑ=Ø—‘ØØ	Œs<Ó  $¨Ü	ˆjÓ	ð	àð	 'ð !Ðð
 	×ÑØ?À,ÑNØ×!Ñ! )Ñ,õ.r/   z
os.urandomc                 óè  • S nX!l         [        R                  " 5       n[        USSS5        U R	                  SUR                  5       5        U R	                  SUR                  5       5        [        R                  " 5       n[        USSS5        U R                  SUR                  5       5        U R                  SUR                  5       5        U R	                  SUR                  5       5        [        R                  " 5       n[        USSS5        U R                  S	UR                  5       5        U R                  SUR                  5       5        U R	                  SUR                  5       5        g
)zATest the right amount of random and sequential data is generated.c                 ó   • SU -  $ ©Nó   ar²   ©Úlengths    r-   ÚurandomÚ>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_dataÚ-TestPerfDiagUnitTests.test_generate_file_data  s  € òð  'Ôä	Š‹€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                 óÜ   • S nX!l         [        R                  " 5       n[        USSS5        U R	                  SUR                  5       5        U R	                  SUR                  5       5        g)z-Test that random data repeats when exhausted.c                 ó   • SU -  $ rÍ   r²   rÏ   s    r-   rÑ   ÚETestPerfDiagUnitTests.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_repeatÚ4TestPerfDiagUnitTests.test_generate_file_data_repeat+  sT   € òð  'Ôä	Š‹€BÜb˜!˜R Ô#Ø×Ñ[ "§+¡+£-Ô0Ø×ÑQ˜Ÿ™›	Õ"r/   r²   N)r³   r´   rµ   r¶   r·   rÉ   r   ÚpatchrÞ   rä   rº   r²   r/   r-   r½   r½   ÿ   sD   † Ù(ò.ð ‡:‚:ˆlÓñ&ó ð&ð2 ‡:‚:ˆlÓñ#ó ó#r/   r½   )!r·   Ú
__future__r   r   r   r   r<   r$   r9   rÖ   r   Úgslib.commands.perfdiagr   Úgslib.tests.testcaseÚtestsÚtestcaseÚ)gslib.tests.testcase.integration_testcaser	   Úgslib.tests.utilr
   rK   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/   