й¼]Ã8ã@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl Z ddl Z ddl mZddlmZddlmZmZyddlZWnek rdZYnXddlmZddlmZddlmZdd lmZdd lmZdd lmZdd lmZdd lm Z ddl!m"Z"ej#dkr»ddl$m%Z%nddlm%Z%dd„Z&dd„Z'ddd„Z(dd„Z)Gdd„deƒZ*Gdd„deƒZ+Gdd„dƒZ,Gd d!„d!e,e+ƒZ-d"d#d$d%„Z.e/ed&ƒrGd'd(„d(ej0eƒZ1Gd)d*„d*e1eƒZ2Gd+d,„d,e2ƒZ3Gd-d.„d.e,e3ƒZ4d/d0„Z5ej6d1d2„ƒZ7ej6d"d#d3d4„ƒZ8ej6d5d6d7dd"d#d8d9„ƒZ9d:d;„Z:Gd<d=„d=ej;ƒZ<Gd>d?„d?ej=ƒZ>d@dA„Z?GdBdC„dCe@ƒZAdDdE„ZBGdFdG„dGe jCƒZCej6dHdI„ƒZDejEejFejGdJdK„ZHdLdM„ZIdS)NéN)Úmock)Ú HTTPServer)ÚWSGIRequestHandlerÚ WSGIServeré)Ú base_events)Úcompat)Úevents)Úfutures)Ú selectors)Útasks)Ú coroutine)Úlogger)ÚsupportÚwin32)Ú socketpaircCs$tdkrdStjtjƒSdS)N)ÚsslZ SSLContextZPROTOCOL_SSLv23©rrú//opt/alt/python35/lib64/python3.5/test_utils.pyÚdummy_ssl_context-s rc CsVtdd„ƒ}|ƒ}|j|ƒ}d|_z|j|ƒWd|jƒXdS)NcSsdS)NrrrrrÚonce5szrun_briefly..onceF)r Z create_taskZ_log_destroy_pendingÚrun_until_completeÚclose)ÚlooprÚgenÚtrrrÚ run_briefly4s  récCsttjƒ|}x]|ƒso|dk rP|tjƒ}|dkrPtjƒ‚|jtjdd|ƒƒqWdS)Nrgü©ñÒMbP?r)Útimer Ú TimeoutErrorrr Úsleep)rZpredÚtimeoutÚdeadlinerrrÚ run_untilCs    r#cCs|j|jƒ|jƒdS)N)Z call_soonÚstopZ run_forever)rrrrÚrun_onceMsr%c@s(eZdZdd„Zdd„ZdS)ÚSilentWSGIRequestHandlercCs tjƒS)N)ÚioÚStringIO)ÚselfrrrÚ get_stderrZsz#SilentWSGIRequestHandler.get_stderrcGsdS)Nr)r)ÚformatÚargsrrrÚ log_message]sz$SilentWSGIRequestHandler.log_messageN)Ú__name__Ú __module__Ú __qualname__r*r-rrrrr&Xs  r&cs4eZdZdZ‡fdd†Zdd„Z‡S)ÚSilentWSGIServerécs/tƒjƒ\}}|j|jƒ||fS)N)ÚsuperÚ get_requestÚ settimeoutÚrequest_timeout)r)ÚrequestÚ client_addr)Ú __class__rrr4eszSilentWSGIServer.get_requestcCsdS)Nr)r)r7Úclient_addressrrrÚ handle_errorjszSilentWSGIServer.handle_error)r.r/r0r6r4r;rr)r9rr1as r1c@seZdZdd„ZdS)ÚSSLWSGIServerMixinc Csâtjjtjjtƒddƒ}tjj|ƒs]tjjtjjtjƒddƒ}tjj|dƒ}tjj|dƒ}tj|d|d|d d ƒ}y!|j|||ƒ|j ƒWnt k rÝYnXdS) Nz..ZtestsÚtestZ test_asyncioz ssl_key.pemz ssl_cert.pemÚkeyfileÚcertfileZ server_sideT) ÚosÚpathÚjoinÚdirnameÚ__file__ÚisdirrZ wrap_socketZRequestHandlerClassrÚOSError)r)r7r:Úherer>r?ZssockrrrÚfinish_requestps$    z!SSLWSGIServerMixin.finish_requestN)r.r/r0rHrrrrr<ns r<c@seZdZdS)Ú SSLWSGIServerN)r.r/r0rrrrrI‡s rIÚuse_sslFc #s�dd„}|r|n|}||tƒ‰ˆj|ƒˆjˆ_tjd‡fdd†ƒ}|jƒz ˆVWdˆjƒˆjƒ|j ƒXdS)NcSs#d}dg}|||ƒdgS)Nz200 OKú Content-typeú text/plains Test message)rKrLr)ÚenvironZstart_responseÚstatusZheadersrrrÚapp�s  z_run_test_server..appÚtargetcsˆjddƒS)NZ poll_intervalgš™™™™™©?)Z serve_foreverr)ÚhttpdrrÚšsz"_run_test_server..) r&Zset_appZserver_addressÚaddressÚ threadingÚThreadÚstartÚshutdownZ server_closerB)rSrJÚ server_clsÚserver_ssl_clsrOZ server_classZ server_threadr)rQrÚ_run_test_server‹s        rZÚAF_UNIXc@seZdZdd„ZdS)ÚUnixHTTPServercCs&tjj|ƒd|_d|_dS)Nz 127.0.0.1éP)Ú socketserverÚUnixStreamServerÚ server_bindZ server_nameZ server_port)r)rrrr`¨s zUnixHTTPServer.server_bindN)r.r/r0r`rrrrr\¦s r\cs4eZdZdZdd„Z‡fdd†Z‡S)ÚUnixWSGIServerr2cCstj|ƒ|jƒdS)N)r\r`Z setup_environ)r)rrrr`²s zUnixWSGIServer.server_bindcs/tƒjƒ\}}|j|jƒ|dfS)Nú 127.0.0.1Ú)rbrc)r3r4r5r6)r)r7r8)r9rrr4¶szUnixWSGIServer.get_request)r.r/r0r6r`r4rr)r9rra®s  rac@seZdZdd„ZdS)ÚSilentUnixWSGIServercCsdS)Nr)r)r7r:rrrr;Äsz!SilentUnixWSGIServer.handle_errorN)r.r/r0r;rrrrrdÂs rdc@seZdZdS)ÚUnixSSLWSGIServerN)r.r/r0rrrrreÈs rec Cs!tjƒ�}|jSWdQRXdS)N)ÚtempfileÚNamedTemporaryFileÚname)ÚfilerrrÚgen_unix_socket_pathÌsrjccs@tƒ}z |VWdytj|ƒWntk r:YnXXdS)N)rjr@ÚunlinkrF)rArrrÚunix_socket_pathÑs   rlccs;tƒ�+}td|d|dtdtƒEdHWdQRXdS)NrSrJrXrY)rlrZrdre)rJrArrrÚrun_test_unix_serverÝs rmÚhostz 127.0.0.1Úportc cs.td||fd|dtdtƒEdHdS)NrSrJrXrY)rZr1rI)rnrorJrrrÚrun_test_serveråsrpcCsni}xHt|ƒD]:}|jdƒr:|jdƒr:qtddƒ||.genFTrg•Ö&è .>)r3r~Ú_check_on_closeÚ_genÚnextÚ_timeZ_clock_resolutionÚ_timersr|Ú _selectorÚreadersÚwritersÚreset_countersÚweakrefÚWeakValueDictionaryÚ _transports)r)r)r9rrr~s              zTestLoop.__init__cCs|jS)N)rŒ)r)rrrr4sz TestLoop.timecCs|r|j|7_dS)N)rŒ)r)ÚadvancerrrÚ advance_time7szTestLoop.advance_timec sOtƒjƒ|jrKy|jjdƒWntk r>Yn Xtdƒ‚dS)NrzTime generator is not finished)r3rr‰rŠÚsendÚ StopIterationÚAssertionError)r))r9rrr<s   zTestLoop.closecGs tj|||ƒ|j|.)r rÉrZthreading_setupÚ_thread_cleanup)r)rrrÚsetUpÈs zTestCase.setUpcCsU|jƒtjdƒ|jtjƒdƒ|jƒtj|j Œtj ƒdS)N)NNN) rÊr rÇZ assertEqualÚsysÚexc_infoZ doCleanupsrZthreading_cleanuprËZ reap_children)r)rrrÚtearDownÍs    zTestCase.tearDowncOsGdd„dƒ}|ƒS)Nc@s(eZdZdd„Zdd„ZdS)z!TestCase.subTest..EmptyCMcSsdS)Nr)r)rrrÚ __enter__Þsz+TestCase.subTest..EmptyCM.__enter__cWsdS)Nr)r)ÚexcrrrÚ__exit__àsz*TestCase.subTest..EmptyCM.__exit__N)r.r/r0rÐrÒrrrrÚEmptyCMÝs  rÓr)r)r,r¸rÓrrrÚsubTestÜszTestCase.subTest) r.r/r0rÇrÈrÊrÌrÏrZPY34rÔrrrrrŸs    rÅc cs;tj}ztjtjdƒdVWdtj|ƒXdS)Nr)rÚlevelÚsetLevelÚloggingÚCRITICAL)Z old_levelrrrÚdisable_loggerås   rÙcCs=tjtjƒ}||_||_||_d|j_|S)Ng)rZ MagicMockÚsocketÚprotorwÚfamilyÚ gettimeoutrr)rÛrwrÜÚsockrrrÚmock_nonblocking_socketós     rßcCstjdddƒS)Nz'asyncio.sslproto._is_sslproto_availablerrF)rZpatchrrrrÚforce_legacy_ssl_supportþs rà)Jr­Ú contextlibr'r×r@r»rÚr^rÍrfrTrZunittestr’rZ http.serverrZwsgiref.simple_serverrrrÚ ImportErrorrcrrr r r r Z coroutinesr Úlogrr=rÚplatformZ windows_utilsrrrr#r%r&r1r<rIrZÚhasattrr_r\rardrerjÚcontextmanagerrlrmrpr{Ú BaseSelectorr|Z BaseEventLooprˆrvr½r¹rÄrÅrÙÚ IPPROTO_TCPÚ SOCK_STREAMÚAF_INETrßràrrrrÚs~                         –  -