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.10/test/test_asyncio/__pycache__/utils.cpython-310.pyc
o

�i�C�@s&dZddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZddlmZddlmZmZzddlZWneygdZYnwddlmZddlmZddlmZdd	lmZdd
lmZddlmZddl m!Z!dd
l"m#Z#dd�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-e!j.fd)d*�Z/d+d,�Z0Gd-d.�d.e�Z1Gd/d0�d0e�Z2Gd1d2�d2�Z3Gd3d4�d4e3e2�Z4d5d6�d7d8�Z5e6e	d9��r=Gd:d;�d;e
j7e�Z8Gd<d=�d=e8e�Z9Gd>d?�d?e9�Z:Gd@dA�dAe3e:�Z;dBdC�Z<ej=dDdE��Z>ej=d5d6�dFdG��Z?ej=dHdd5dI�dJdK��Z@dLdM�ZAGdNdO�dOejB�ZCGdPdQ�dQejD�ZEdRdS�ZFGdTdU�dUeG�ZHGdVdW�dW�ZIdXdY�ZJGdZd[�d[ejK�ZKej=d\d]��ZLe	jMe	jNe	jOfd^d_�ZPdS)`zUtilities shared by tests.�N)�mock)�
HTTPServer)�WSGIRequestHandler�
WSGIServer)�base_events)�events)�format_helpers)�futures)�tasks)�logger)�support)�threading_helpercCsZttd�rtj�tj|�}tj�|�r|Stj�tj�t�d|�}tj�|�r)|St	|��)N�
TEST_HOME_DIRz..)
�hasattrr�os�path�joinr�isfile�dirname�__file__�FileNotFoundError)�filename�fullname�r�4/usr/local/lib/python3.10/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)�)ZcountryNameZXY))�organizationNamezPython Software Foundation CA))�
commonNamez
our-ca-serverzOct 28 14:23:16 2037 GMTzAug 29 14:23:16 2018 GMTZCB2D80995A69525C)r))ZlocalityNamezCastle Anthrax))rzPython Software Foundation))r�	localhost))ZDNSr�)
ZOCSPZ	caIssuersZcrlDistributionPointsZissuerZnotAfterZ	notBeforeZserialNumber�subjectZsubjectAltName�versioncCs*t�tj�}|�tt�d|_tj|_|S�NF)	�ssl�
SSLContext�PROTOCOL_TLS_SERVER�load_cert_chain�ONLYCERT�ONLYKEY�check_hostname�	CERT_NONE�verify_mode)Zserver_contextrrr�simple_server_sslcontextJs
r-T��disable_verifycCs"t�tj�}d|_|rtj|_|Sr#)r$r%ZPROTOCOL_TLS_CLIENTr*r+r,)r/Zclient_contextrrr�simple_client_sslcontextRs
r0cCstdurdStdd�S)NTr.)r$r0rrrr�dummy_ssl_contextZs
r1cCsBdd�}|�}|�|�}d|_z|�|�W|��dS|��w)Nc�s�dS�Nrrrrr�oncebs�zrun_briefly.<locals>.onceF)Zcreate_taskZ_log_destroy_pending�run_until_complete�close)�loopr3�gen�trrr�run_brieflyas
r9cCsTt��|}|�s(|dur|t��}|dkrt���|�t�d��|�r	dSdS)Nrg����MbP?)�time�	monotonicr	�TimeoutErrorr4r
�sleep)r6Zpred�timeout�deadlinerrr�	run_untilos�r@cCs|�|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�r6rrr�run_onceysrCc@�eZdZdd�Zdd�ZdS)�SilentWSGIRequestHandlercCst��Sr2)�io�StringIO��selfrrr�
get_stderr�sz#SilentWSGIRequestHandler.get_stderrcG�dSr2r)rI�format�argsrrr�log_message��z$SilentWSGIRequestHandler.log_messageN)�__name__�
__module__�__qualname__rJrNrrrrrE�srEcs*eZdZejZ�fdd�Zdd�Z�ZS)�SilentWSGIServercs"t���\}}|�|j�||fSr2��super�get_request�
settimeout�request_timeout�rI�requestZclient_addr��	__class__rrrV�szSilentWSGIServer.get_requestcCrKr2r�rIrZ�client_addressrrr�handle_error�rOzSilentWSGIServer.handle_error)	rPrQrRr�LOOPBACK_TIMEOUTrXrVr_�
__classcell__rrr[rrS�srSc@�eZdZdd�ZdS)�SSLWSGIServerMixincCsXt�tj�}|�tt�|j|dd�}z|�|||�|��WdSt	y+YdSw)NT)Zserver_side)
r$r%r&r'r(r)Zwrap_socketZRequestHandlerClassr5�OSError)rIrZr^�contextZssockrrr�finish_request�s�z!SSLWSGIServerMixin.finish_requestN)rPrQrRrfrrrrrc��rcc@�eZdZdS)�
SSLWSGIServerN�rPrQrRrrrrri��riF)�use_sslc#s��dd���fdd�}|r|n|}||t����|��j�_tj�fdd�d�}|��z�VW������|�	�dS������|�	�w)NcssD�t|d�}|r |d�t|d��}|V|t|�8}|s	dSdS)NZCONTENT_LENGTHz
wsgi.inputi)�int�read�min�len)�environ�size�datarrrr6�s��z_run_test_server.<locals>.loopcs.d}dg}|||�|ddkr�|�SdgS)Nz200 OK)zContent-typez
text/plainZ	PATH_INFOz/loopsTest messager)rqZstart_response�statusZheadersrBrr�app�s
z_run_test_server.<locals>.appcs�jdd�S)Ng�������?)Z
poll_interval)Z
serve_foreverr)�httpdrr�<lambda>�sz"_run_test_server.<locals>.<lambda>)�target)
rEZset_appZserver_address�address�	threading�Thread�start�shutdownZserver_closer)ryrl�
server_cls�server_ssl_clsruZserver_classZ
server_threadr)rvr6r�_run_test_server�s&�


��
r��AF_UNIXc@rb)�UnixHTTPServercCstj�|�d|_d|_dS)N�	127.0.0.1�P)�socketserver�UnixStreamServer�server_bindZserver_nameZserver_portrHrrrr��s
zUnixHTTPServer.server_bindN)rPrQrRr�rrrrr��rgr�cs*eZdZejZdd�Z�fdd�Z�ZS)�UnixWSGIServercCst�|�|��dSr2)r�r�Z
setup_environrHrrrr��s
zUnixWSGIServer.server_bindcs"t���\}}|�|j�|dfS)N)r��rTrYr[rrrV�szUnixWSGIServer.get_request)	rPrQrRrr`rXr�rVrarrr[rr��sr�c@rb)�SilentUnixWSGIServercCrKr2rr]rrrr_�rOz!SilentUnixWSGIServer.handle_errorN)rPrQrRr_rrrrr��rgr�c@rh)�UnixSSLWSGIServerNrjrrrrr��rkr�cCs2t���}|jWd�S1swYdSr2)�tempfile�NamedTemporaryFile�name)�filerrr�gen_unix_socket_path�s
$�r�ccsZ�t�}z|VWzt�|�WdStyYdSwzt�|�Wwty,Ywwr2)r�r�unlinkrd)rrrr�unix_socket_paths����r�ccsD�t��}t||ttd�EdHWd�dS1swYdS�N)ryrlr~r)r�r�r�r�)rlrrrr�run_test_unix_server
s��"�r�r���host�portrlccs �t||f|ttd�EdHdSr�)r�rSrir�rrr�run_test_servers
�
�r�cCsLi}t|�D]}|�d�r|�d�rqtdd�||<qtd|f|j|��S)N�__)�return_valueZTestProtocol)�dir�
startswith�endswith�MockCallback�type�	__bases__)�baseZdctr�rrr�make_test_protocolsr�c@s6eZdZdd�Zddd�Zdd�Zdd	�Zd
d�ZdS)
�TestSelectorcCs
i|_dSr2��keysrHrrr�__init__(�
zTestSelector.__init__NcCst�|d||�}||j|<|S)Nr)�	selectors�SelectorKeyr�)rI�fileobjrrs�keyrrr�register+s
zTestSelector.registercCs|j�|�Sr2)r��pop)rIr�rrr�
unregister0�zTestSelector.unregistercCsgSr2r)rIr>rrr�select3rOzTestSelector.selectcC�|jSr2r�rHrrr�get_map6�zTestSelector.get_mapr2)rPrQrRr�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���|durdd�}d|_nd|_|�|_t|j�d|_d|_g|_t�|_	i|_
i|_|��t
��|_dS)Ncss�dVdSr2rrrrrr7Qs�
zTestLoop.__init__.<locals>.genFTrg��&�.>)rUr��_check_on_close�_gen�next�_timeZ_clock_resolution�_timersr��	_selector�readers�writers�reset_counters�weakref�WeakValueDictionary�_transports)rIr7r[rrr�Ms

zTestLoop.__init__cCr�r2�r�rHrrrr:dr�z
TestLoop.timecCs|r|j|7_dSdS)zMove test time forward.Nr�)rI�advancerrr�advance_timegs�zTestLoop.advance_timecs@t���|jrz|j�d�Wtd��tyYdSwdS)NrzTime generator is not finished)rUr5r�r��send�
StopIteration�AssertionErrorrHr[rrr5ls
���zTestLoop.closecG�t�|||d�|j|<dSr2)r�Handler��rI�fd�callbackrMrrr�_add_readerv�zTestLoop._add_readercC�,|j|d7<||jvr|j|=dSdS�N�TF)�remove_reader_countr��rIr�rrr�_remove_readery�

zTestLoop._remove_readercGsh||jvr
td|�d���|j|}|j|kr"td|j�d|����|j|kr2td|j�d|����dS)N�fd � is not registeredzunexpected callback: � != zunexpected callback args: )r�r��	_callback�_args�rIr�r�rM�handlerrr�
assert_reader�s


�
��zTestLoop.assert_readercCs||jvr
td|�d���dS)Nr�z is registered)r�r�r�rrr�assert_no_reader�s
�zTestLoop.assert_no_readercGr�r2)rr�r�r�rrr�_add_writer�r�zTestLoop._add_writercCr�r�)�remove_writer_countr�r�rrr�_remove_writer�r�zTestLoop._remove_writercGsd||jvr
td|�d���|j|}|j|kr!t|j�d|����|j|kr0t|j�d|����dS)Nr�r�r�)r�r�r�r�r�rrr�
assert_writer�s



�zTestLoop.assert_writerc
Cstt|t�s zt|���}Wntttfytd�|��d�wz|j|}Wn
ty1YdSwt	d�||���)NzInvalid file object: {!r}z.File descriptor {!r} is used by transport {!r})
�
isinstancerm�fileno�AttributeError�	TypeError�
ValueErrorrLr��KeyError�RuntimeError)rIr�Z	transportrrr�_ensure_fd_no_transport�s(
������z TestLoop._ensure_fd_no_transportcG�|�|�|j||g|�R�S)zAdd a reader callback.)r�r�r�rrr�
add_reader��
zTestLoop.add_readercC�|�|�|�|�S)zRemove a reader callback.)r�r�r�rrr�
remove_reader��

zTestLoop.remove_readercGr�)zAdd a writer callback..)r�r�r�rrr�
add_writer�r�zTestLoop.add_writercCr�)zRemove a writer callback.)r�r�r�rrr�
remove_writer�r�zTestLoop.remove_writercCst�t�|_t�t�|_dSr2)�collections�defaultdictrmr�r�rHrrrr��szTestLoop.reset_counterscs6t���|jD]
}|j�|�}|�|�qg|_dSr2)rU�	_run_oncer�r�r�r�)rI�whenr�r[rrr��s



zTestLoop._run_once)recs(|j�|�t�j||g|�Rd|i�S)Nre)r��appendrU�call_at)rIr�r�rerMr[rrr��szTestLoop.call_atcCrKr2r)rIZ
event_listrrr�_process_events�rOzTestLoop._process_eventscCrKr2rrHrrr�_write_to_self�rOzTestLoop._write_to_selfr2)rPrQrR�__doc__r�r:r�r5r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�rarrr[rr�:s.
	r�cKstjdddgi|��S)N�spec�__call__r)rZMock)�kwargsrrrr��sr�c@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��Sr2)�bool�re�search�str�S�rI�otherrrr�__eq__�szMockPattern.__eq__N)rPrQrRr�rrrrrr��sr�c@rD)�MockInstanceOfcCs
||_dSr2)�_type)rIr�rrrr��r�zMockInstanceOf.__init__cCst||j�Sr2)r�rrrrrr�r�zMockInstanceOf.__eq__N)rPrQrRr�rrrrrr�srcCs$t�|�}|durtd|f��|S)Nzunable to get the source of %r)rZ_get_function_sourcer�)�func�sourcerrr�get_function_source�s
rc@s@eZdZedd��Zdd�dd�Zddd	�Zd
d�Zdd
�ZdS)�TestCasecCs�|jdur|��s|�|���n|jjdd�|��t��}|durKz|��}Wn
t	y4YdSwt
|tj�rMt
|j���}|D]
}|��qDdSdSdS)NT)�wait)Z_default_executorZ	is_closedr4Zshutdown_default_executorr}r5rZmaybe_get_event_loop_policyZget_child_watcher�NotImplementedErrorr��asyncioZThreadedChildWatcher�listZ_threads�valuesr)r6ZpolicyZwatcher�threads�threadrrr�
close_loops&
�
�zTestCase.close_loopT)�cleanupcCs4|durtd��t�d�|r|�|j|�dSdS)Nzloop is None)r�r�set_event_loopZ
addCleanupr)rIr6rrrrrs
�zTestCase.set_event_loopNcCst|�}|�|�|Sr2)r�r)rIr7r6rrr�
new_test_loops
zTestCase.new_test_loopcCst��|_dSr2)r
Zthreading_setup�_thread_cleanuprHrrr�setUp"szTestCase.setUpcCs:t�d�|�t��d�|��tj|j�t	�
�dS)N)NNN)rrZassertEqual�sys�exc_infoZ
doCleanupsr
Zthreading_cleanuprr�
reap_childrenrHrrr�tearDown%s

zTestCase.tearDownr2)	rPrQrR�staticmethodrrrrrrrrrr�s

rc	cs<�tj}zt�tjd�dVWt�|�dSt�|�w)zrContext manager to disable asyncio logger.

    For example, it can be used to ignore warnings in debug mode.
    r�N)r�level�setLevel�logging�CRITICAL)Z	old_levelrrr�disable_logger1s�r#cCs*t�tj�}||_||_||_d|j_|S)z'Create a mock of a non-blocking socket.g)rZ	MagicMock�socket�protor��family�
gettimeoutr�)r%r�r&�sockrrr�mock_nonblocking_socket?sr))Qr�rr��
contextlibrFr!rrr�r$r�rr�rzr:Zunittestr�rZhttp.serverrZwsgiref.simple_serverrrr$�ImportErrorrrrr	r
Zasyncio.logr�testrZtest.supportr
rr(r)ZSIGNED_CERTFILEZ
SIGNING_CAZPEERCERTr-r0r1r9Z
SHORT_TIMEOUTr@rCrErSrcrir�rr�r�r�r�r�r��contextmanagerr�r�r�r��BaseSelectorr�Z
BaseEventLoopr�r�rr�rrrr#�IPPROTO_TCP�SOCK_STREAM�AF_INETr)rrrr�<module>s���
	
#

&
2

�