HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.7/test/test_asyncio/__pycache__/utils.cpython-37.pyc
B

��g@�@sdZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlmZddlmZddlmZmZyddlZWnek
r�dZYnXddlmZddlmZddlmZdd	lmZdd
lmZddlmZddl m!Z!d
d�Z"e"d�Z#e"d�Z$e"d�Z%e"d�Z&ddddddddddd�
Z'dd�Z(d d!�d"d#�Z)d$d%�Z*d&d'�Z+d`d)d*�Z,d+d,�Z-Gd-d.�d.e�Z.Gd/d0�d0e�Z/Gd1d2�d2�Z0Gd3d4�d4e0e/�Z1d5d6�d7d8�Z2e3ed9��rdGd:d;�d;e	j4e�Z5Gd<d=�d=e5e�Z6Gd>d?�d?e6�Z7Gd@dA�dAe0e7�Z8dBdC�Z9ej:dDdE��Z;ej:d5d6�dFdG��Z<ej:dHdd5dI�dJdK��Z=dLdM�Z>GdNdO�dOej?�Z@GdPdQ�dQejA�ZBdRdS�ZCGdTdU�dUeD�ZEGdVdW�dW�ZFdXdY�ZGGdZd[�d[ejH�ZHej:d\d]��ZIejJejKejLfd^d_�ZMdS)azUtilities shared by tests.�N)�mock)�
HTTPServer)�WSGIRequestHandler�
WSGIServer)�base_events)�events)�format_helpers)�futures)�tasks)�logger)�supportcCs^ttd�r*tj�tj|�}tj�|�r*|Stj�tj�t�d|�}tj�|�rR|St	|��dS)N�
TEST_HOME_DIRz..)
�hasattrr�os�path�joinr
�isfile�dirname�__file__�FileNotFoundError)�filename�fullname�r�3/usr/local/lib/python3.7/test/test_asyncio/utils.py�	data_file&s
rzssl_cert.pemzssl_key.pemzkeycert3.pemzpycacert.pem)z)http://testca.pythontest.net/testca/ocsp/)z0http://testca.pythontest.net/testca/pycacert.cer)z2http://testca.pythontest.net/testca/revocation.crl)))�countryName�XY))�organizationNamezPython Software Foundation CA))�
commonNamez
our-ca-serverzJul  7 14:23:16 2028 GMTzAug 29 14:23:16 2018 GMTZCB2D80995A69525C)))rr))ZlocalityNamezCastle Anthrax))rzPython Software Foundation))r�	localhost))ZDNSr�)
ZOCSPZ	caIssuersZcrlDistributionPointsZissuerZnotAfterZ	notBeforeZserialNumberZsubjectZsubjectAltName�versioncCs*t�tj�}|�tt�d|_tj|_|S)NF)	�ssl�
SSLContextZPROTOCOL_TLS_SERVER�load_cert_chain�ONLYCERT�ONLYKEY�check_hostname�	CERT_NONE�verify_mode)Zserver_contextrrr�simple_server_sslcontextHs
r*T)�disable_verifycCs"t�tj�}d|_|rtj|_|S)NF)r"r#ZPROTOCOL_TLS_CLIENTr'r(r))r+Zclient_contextrrr�simple_client_sslcontextPs
r,cCstdkrdSt�tj�SdS)N)r"r#ZPROTOCOL_TLSrrrr�dummy_ssl_contextXsr-cCs<dd�}|�}|�|�}d|_z|�|�Wd|��XdS)Nc�sdS)Nrrrrr�once`szrun_briefly.<locals>.onceF)Zcreate_taskZ_log_destroy_pending�run_until_complete�close)�loopr.�gen�trrr�run_briefly_s
r4�cCsTt��|}xB|�sN|dk	r8|t��}|dkr8t���|�tjd|d��qWdS)Nrg����MbP?)r1)�timeZ	monotonicr	�TimeoutErrorr/r
Zsleep)r1Zpred�timeoutZdeadlinerrr�	run_untilmsr9cCs|�|j�|��dS)z�Legacy API to run once through the event loop.

    This is the recommended pattern for test code.  It will poll the
    selector once and run all callbacks scheduled in response to I/O
    events.
    N)Z	call_soon�stopZrun_forever)r1rrr�run_oncewsr;c@seZdZdd�Zdd�ZdS)�SilentWSGIRequestHandlercCst��S)N)�io�StringIO)�selfrrr�
get_stderr�sz#SilentWSGIRequestHandler.get_stderrcGsdS)Nr)r?�format�argsrrr�log_message�sz$SilentWSGIRequestHandler.log_messageN)�__name__�
__module__�__qualname__r@rCrrrrr<�sr<cs(eZdZdZ�fdd�Zdd�Z�ZS)�SilentWSGIServer�cs"t���\}}|�|j�||fS)N)�super�get_request�
settimeout�request_timeout)r?�request�client_addr)�	__class__rrrJ�szSilentWSGIServer.get_requestcCsdS)Nr)r?rM�client_addressrrr�handle_error�szSilentWSGIServer.handle_error)rDrErFrLrJrQ�
__classcell__rr)rOrrG�srGc@seZdZdd�ZdS)�SSLWSGIServerMixincCsVt��}|�tt�|j|dd�}y|�|||�|��Wntk
rPYnXdS)NT)Zserver_side)	r"r#r$r%r&Zwrap_socketZRequestHandlerClassr0�OSError)r?rMrP�contextZssockrrr�finish_request�sz!SSLWSGIServerMixin.finish_requestN)rDrErFrVrrrrrS�srSc@seZdZdS)�
SSLWSGIServerN)rDrErFrrrrrW�srWF)�use_sslc#svdd�}|r|n|}||t����|��j�_tj�fdd�d�}|��z
�VWd������|�	�XdS)NcSsd}dg}|||�dgS)Nz200 OK)zContent-typez
text/plainsTest messager)�environZstart_response�statusZheadersrrr�app�s
z_run_test_server.<locals>.appcs�jdd�S)Ng�������?)Z
poll_interval)Z
serve_foreverr)�httpdrr�<lambda>��z"_run_test_server.<locals>.<lambda>)�target)
r<Zset_appZserver_address�address�	threadingZThread�start�shutdownZserver_closer)r`rX�
server_cls�server_ssl_clsr[Zserver_classZ
server_threadr)r\r�_run_test_server�s


rfZAF_UNIXc@seZdZdd�ZdS)�UnixHTTPServercCstj�|�d|_d|_dS)Nz	127.0.0.1�P)�socketserver�UnixStreamServer�server_bindZserver_nameZserver_port)r?rrrrk�szUnixHTTPServer.server_bindN)rDrErFrkrrrrrg�srgcs(eZdZdZdd�Z�fdd�Z�ZS)�UnixWSGIServerrHcCst�|�|��dS)N)rgrkZ
setup_environ)r?rrrrk�s
zUnixWSGIServer.server_bindcs"t���\}}|�|j�|dfS)N)z	127.0.0.1�)rIrJrKrL)r?rMrN)rOrrrJ�szUnixWSGIServer.get_request)rDrErFrLrkrJrRrr)rOrrl�srlc@seZdZdd�ZdS)�SilentUnixWSGIServercCsdS)Nr)r?rMrPrrrrQ�sz!SilentUnixWSGIServer.handle_errorN)rDrErFrQrrrrrn�srnc@seZdZdS)�UnixSSLWSGIServerN)rDrErFrrrrro�sroc	Cst���}|jSQRXdS)N)�tempfileZNamedTemporaryFile�name)�filerrr�gen_unix_socket_path�s
rsccs<t�}z
|VWdyt�|�Wntk
r4YnXXdS)N)rsr�unlinkrT)rrrr�unix_socket_path�s
ruc	cs,t��}t||ttd�EdHWdQRXdS)N)r`rXrdre)rurfrnro)rXrrrr�run_test_unix_serversrvz	127.0.0.1)�host�portrXccst||f|ttd�EdHdS)N)r`rXrdre)rfrGrW)rwrxrXrrr�run_test_server	s
rycCsPi}x4t|�D](}|�d�r(|�d�r(qtdd�||<qWtd|f|j|��S)N�__)�return_valueZTestProtocol)�dir�
startswith�endswith�MockCallback�type�	__bases__)�baseZdctrqrrr�make_test_protocolsr�c@s6eZdZdd�Zddd�Zdd�Zdd	�Zd
d�ZdS)
�TestSelectorcCs
i|_dS)N)�keys)r?rrr�__init__szTestSelector.__init__NcCst�|d||�}||j|<|S)Nr)�	selectorsZSelectorKeyr�)r?�fileobjr�data�keyrrr�registers
zTestSelector.registercCs|j�|�S)N)r��pop)r?r�rrr�
unregister$szTestSelector.unregistercCsgS)Nr)r?r8rrr�select'szTestSelector.selectcCs|jS)N)r�)r?rrr�get_map*szTestSelector.get_map)N)rDrErFr�r�r�r�r�rrrrr�s

r�cs�eZdZdZd.�fdd�	Zdd�Zdd�Z�fd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Z�fd%d&�Zdd'��fd(d)�
Zd*d+�Zd,d-�Z�ZS)/�TestLoopa�Loop for unittests.

    It manages self time directly.
    If something scheduled to be executed later then
    on next loop iteration after all ready handlers done
    generator passed to __init__ is calling.

    Generator should be like this:

        def gen():
            ...
            when = yield ...
            ... = yield time_advance

    Value returned by yield is absolute time of next scheduled handler.
    Value passed to yield is time advance to move loop's time forward.
    Ncsvt���|dkr"dd�}d|_nd|_|�|_t|j�d|_d|_g|_t�|_	i|_
i|_|��t
��|_dS)Ncss
dVdS)Nrrrrrr2EszTestLoop.__init__.<locals>.genFTrg��&�.>)rIr��_check_on_close�_gen�next�_timeZ_clock_resolution�_timersr�Z	_selector�readers�writers�reset_counters�weakrefZWeakValueDictionary�_transports)r?r2)rOrrr�As

zTestLoop.__init__cCs|jS)N)r�)r?rrrr6Xsz
TestLoop.timecCs|r|j|7_dS)zMove test time forward.N)r�)r?�advancerrr�advance_time[szTestLoop.advance_timecsBt���|jr>y|j�d�Wntk
r4Yn
Xtd��dS)NrzTime generator is not finished)rIr0r�r��send�
StopIteration�AssertionError)r?)rOrrr0`s
zTestLoop.closecGst�|||d�|j|<dS)N)r�Handler�)r?�fd�callbackrBrrr�_add_readerjszTestLoop._add_readercCs0|j|d7<||jkr(|j|=dSdSdS)N�TF)�remove_reader_countr�)r?r�rrr�_remove_readerms

zTestLoop._remove_readercGsh||jkrtd|�d���|j|}|j|krDtd|j�d|����|j|krdtd|j�d|����dS)Nzfd z is not registeredzunexpected callback: z != zunexpected callback args: )r�r��	_callback�_args)r?r�r�rB�handlerrr�
assert_readerus



zTestLoop.assert_readercCs||jkrtd|�d���dS)Nzfd z is registered)r�r�)r?r�rrr�assert_no_reader�s
zTestLoop.assert_no_readercGst�|||d�|j|<dS)N)rr�r�)r?r�r�rBrrr�_add_writer�szTestLoop._add_writercCs0|j|d7<||jkr(|j|=dSdSdS)Nr�TF)�remove_writer_countr�)r?r�rrr�_remove_writer�s

zTestLoop._remove_writercGs^||jkstd�|���|j|}|j|ks>td�|j|���|j|ksZtd�|j|���dS)Nzfd {} is not registeredz{!r} != {!r})r�r�rAr�r�)r?r�r�rBr�rrr�
assert_writer�s
zTestLoop.assert_writerc
Cs~t|t�sFyt|���}Wn*tttfk
rDtd�|��d�YnXy|j|}Wntk
rhYnXt	d�||���dS)NzInvalid file object: {!r}z.File descriptor {!r} is used by transport {!r})
�
isinstance�int�fileno�AttributeError�	TypeError�
ValueErrorrAr��KeyError�RuntimeError)r?r�Z	transportrrr�_ensure_fd_no_transport�s
z TestLoop._ensure_fd_no_transportcGs|�|�|j||f|��S)zAdd a reader callback.)r�r�)r?r�r�rBrrr�
add_reader�s
zTestLoop.add_readercCs|�|�|�|�S)zRemove a reader callback.)r�r�)r?r�rrr�
remove_reader�s
zTestLoop.remove_readercGs|�|�|j||f|��S)zAdd a writer callback..)r�r�)r?r�r�rBrrr�
add_writer�s
zTestLoop.add_writercCs|�|�|�|�S)zRemove a writer callback.)r�r�)r?r�rrr�
remove_writer�s
zTestLoop.remove_writercCst�t�|_t�t�|_dS)N)�collections�defaultdictr�r�r�)r?rrrr��szTestLoop.reset_counterscs:t���x$|jD]}|j�|�}|�|�qWg|_dS)N)rI�	_run_oncer�r�r�r�)r?�whenr�)rOrrr��s

zTestLoop._run_once)rUcs&|j�|�t�j||f|�d|i�S)NrU)r��appendrI�call_at)r?r�r�rUrB)rOrrr��szTestLoop.call_atcCsdS)Nr)r?Z
event_listrrr�_process_events�szTestLoop._process_eventscCsdS)Nr)r?rrr�_write_to_self�szTestLoop._write_to_self)N)rDrErF�__doc__r�r6r�r0r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rRrr)rOrr�.s,
r�cKstjfddgi|��S)N�spec�__call__)rZMock)�kwargsrrrr�src@seZdZdZdd�ZdS)�MockPatternz�A regex based str with a fuzzy __eq__.

    Use this helper with 'mock.assert_called_with', or anywhere
    where a regex comparison between strings is needed.

    For instance:
       mock_call.assert_called_with(MockPattern('spam.*ham'))
    cCstt�t|�|tj��S)N)�bool�re�search�str�S)r?�otherrrr�__eq__�szMockPattern.__eq__N)rDrErFr�r�rrrrr��sr�c@seZdZdd�Zdd�ZdS)�MockInstanceOfcCs
||_dS)N)�_type)r?r�rrrr��szMockInstanceOf.__init__cCst||j�S)N)r�r�)r?r�rrrr��szMockInstanceOf.__eq__N)rDrErFr�r�rrrrr��sr�cCs$t�|�}|dkr td|f��|S)Nzunable to get the source of %r)rZ_get_function_sourcer�)�func�sourcerrr�get_function_source�s
r�c@sHeZdZedd��Zdd�dd�Zddd	�Zd
d�Zdd
�Zdd�Z	dS)�TestCasecCs&|j}|dk	r|jdd�|��dS)NT)�wait)Z_default_executorrcr0)r1�executorrrr�
close_loop�szTestCase.close_loopT)�cleanupcCs,|dk	st�t�d�|r(|�|j|�dS)N)r�r�set_event_loopZ
addCleanupr�)r?r1r�rrrr��s
zTestCase.set_event_loopNcCst|�}|�|�|S)N)r�r�)r?r2r1rrr�
new_test_loops
zTestCase.new_test_loopcCs|jt_dS)N)�_get_running_loopr)r?rrr�unpatch_get_running_loopsz!TestCase.unpatch_get_running_loopcCs tj|_dd�t_t��|_dS)NcSsdS)Nrrrrrr]r^z TestCase.setUp.<locals>.<lambda>)rr�rZthreading_setup�_thread_cleanup)r?rrr�setUp	s
zTestCase.setUpcCsB|��t�d�|�t��d�|��tj|j	�t�
�dS)N)NNN)r�rr�ZassertEqual�sys�exc_infoZ
doCleanupsrZthreading_cleanupr�Z
reap_children)r?rrr�tearDowns
zTestCase.tearDown)N)
rDrErF�staticmethodr�r�r�r�r�r�rrrrr��s
r�c	cs2tj}zt�tjd�dVWdt�|�XdS)zrContext manager to disable asyncio logger.

    For example, it can be used to ignore warnings in debug mode.
    r�N)r�levelZsetLevel�loggingZCRITICAL)Z	old_levelrrr�disable_loggers

r�cCs*t�tj�}||_||_||_d|j_|S)z'Create a mock of a non-blocking socket.g)rZ	MagicMock�socket�protor��familyZ
gettimeoutr{)r�r�r�Zsockrrr�mock_nonblocking_socket*sr�)r5)Nr�r��
contextlibr=r�rr�r�r�rir�rprar6Zunittestr�rZhttp.serverrZwsgiref.simple_serverrrr"�ImportErrorZasynciorrrr	r
Zasyncio.logrZtestrrr%r&ZSIGNED_CERTFILEZ
SIGNING_CAZPEERCERTr*r,r-r4r9r;r<rGrSrWrfrrjrgrlrnrors�contextmanagerrurvryr�ZBaseSelectorr�Z
BaseEventLoopr�rr�r�r�r�r�r�ZIPPROTO_TCPZSOCK_STREAMZAF_INETr�rrrr�<module>s�


	

%
*