a  zewG@s:ddlZddlZddlZddlZddlZddlmZddlmZmZddl m Z ddl m Z ddlmZGdddejZGd d d Zejd krGd d d ee jZGdddee jZnzddlZeedrGdddee jZeedrGdddee jZeedr"Gdddee jZGdd d ee jZdS)N)proactor_events)cycleislice)utils)support) socket_helperc@s>eZdZdZdZd ddZddZddZdd Zd d Z dS) MyProtoNcCs2d|_d|_d|_|dur.||_||_dS)NINITIALr) transportstatenbytesZ create_future connecteddone)selflooprX/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/test_sock_lowlevel.py__init__s  zMyProto.__init__cCs@||_|jdksJ|jd|_|jr2|jd|ddS)Nr CONNECTEDs%GET / HTTP/1.0 Host: example.com )r r r set_resultwrite)rr rrrconnection_mades  zMyProto.connection_madecCs*|jdksJ|j|jt|7_dS)Nr)r r len)rdatarrr data_received"szMyProto.data_receivedcCs|jdksJ|jd|_dS)NrEOF)r rrrr eof_received&szMyProto.eof_receivedcCs0|jdvsJ|jd|_|jr,|jddS)N)rrZCLOSED)r rr)rexcrrrconnection_lost*szMyProto.connection_lost)N) __name__ __module__ __qualname__r rrrrrrrrrrrs rcseZdZddZfddZfddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zejd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZZS)+BaseSockTestsMixincCstdSN)NotImplementedErrorrrrrcreate_event_loop3sz$BaseSockTestsMixin.create_event_loopcs$||_||jtdSr$)r&rZset_event_loopsupersetUpr __class__rrr(6s  zBaseSockTestsMixin.setUpcs4|jst|j|ttdSr$) rZ is_closed test_utilsZ run_brieflyZ doCleanupsr gc_collectr'tearDownrr)rrr-;s   zBaseSockTestsMixin.tearDowncCst|jtjsl|jd|d|t(|j|j ||j Wdn1s^0Y|t&|j|j |dWdn1s0Y|t&|j|j |dWdn1s0Y|t(|j|j |tWdn1s"0Y|t$|j|j|Wdn1sb0Y|d|j|j ||j |j|j |d|j|j |d}|j|j |d|||ddS)NTGET / HTTP/1.0 FHTTP/1.0 200 OK) isinstancerrZBaseProactorEventLoopZ set_debug setblocking assertRaises ValueErrorrun_until_complete sock_connectaddress sock_sendall sock_recvsock_recv_into bytearray sock_acceptclose assertTrue startswith)rhttpdsockrrrr_basetest_sock_client_opsDsL   "  "  " $  $    z,BaseSockTestsMixin._basetest_sock_client_opsc Cs|d|j|j||j|j|j|dtd}t|L}|j|j||dd}|j|j|||dWdn1s0Y| | | ddS)NFr.r/r0) r2rr5r6r7r8r; memoryviewr:r=r>r?)rr@rArbufr rrr_basetest_sock_recv_intohs"   "z+BaseSockTestsMixin._basetest_sock_recv_intocCsTt8}t}|||t}|||Wdn1sF0YdSr$)r+run_test_serversocketrBrErr@rArrrtest_sock_client_opsys   z'BaseSockTestsMixin.test_sock_client_opscs|d|j||jIdHt|j|d}tdIdH|t|j |d|j|dIdH}|j|dIdH| | ddSNFr/rr.r0) r2rr6r7asyncio create_taskr9sleepcancelr8r>r?)rr@rAtaskrrrr_basetest_sock_recv_racings  z-BaseSockTestsMixin._basetest_sock_recv_racingc s|d|j||jIdHtd}t|}t|j||dd}t dIdH| t|j |d}|j||ddIdH}|j|||dIdH| | dWdn1s0Y|IdHdSrJ)r2rr6r7r;rCrKrLr:rMrNr8r>r?)rr@rArrDrOr rrr_basetest_sock_recv_into_racings    .z2BaseSockTestsMixin._basetest_sock_recv_into_racingc sv|d|d|tjtjd|dtj || }t dIdH| dd|IdHd}|dkr҈t |d|qWdn1s0Yt|d }qtj |d }t dIdH|fd d }t|}j |d IdH|tj|IdH}|d Wdn1sh0YdS)Nz 127.0.0.1rr/Fr  shellocs2d}jdIdH}|s |S||7}qdS)NrT)rr9strip)rvrDrZserverrrrecv_alls z?BaseSockTestsMixin._basetest_sock_send_racing..recv_allsworld)bindlisten setsockoptrG SOL_SOCKET SO_SNDBUFr2rKrLrr6 getsocknamerMacceptr3BlockingIOErrorsendintr8rNshutdownSHUT_WRr>endswith)rlistenerrArOsizer\rrr[r_basetest_sock_send_racings8       .    z-BaseSockTestsMixin._basetest_sock_send_racingc s|d|}|dt|j||}tdIdH|| dd}t dD]}z|j||IdHWnlt y}z|}WYd}~q^d}~0t y}z.|}t |dddkrWYd}~qWYd}~q^d}~00dSq^||dS) NrRFrrSzMax retries reachedwinerrori&')r]rbr2rKrLrr6rMrNr^rangeConnectionRefusedErrorOSErrorgetattrZskipTest)rrjrAaddrrOZ skip_reasonierrr_basetest_sock_connect_racings&    $z0BaseSockTestsMixin._basetest_sock_connect_racingc Cs4t}t}|,|jt|||dWdn1sH0Yt}|,|jt|||dWdn1s0YWdn1s0Yt}t}|R|,|jt| ||dWdn1s0YWdn1s&0YdSN ) r+rFrGrr5rKwait_forrPrQrl)rr@rArjrrrtest_sock_client_racings"   $  B   z*BaseSockTestsMixin.test_sock_client_racingc Csxt}t}|P|,|jt|||dWdn1sL0YWdn1sj0YdSrw)rGrr5rKryrv)rrjrArrrtest_sock_client_connect_racing s    z2BaseSockTestsMixin.test_sock_client_connect_racingc st}|dd}d|d}|j||IdH|j|dd|dIdHt|j||}|j||IdH}|| d| d d kr||j||IdH7}q|d| d d }|t |d}|}t d} tt| t |} ||| |t |8}|j||IdH}|s0q^tt| t |} ||| |t |8}q||d |IdH|dS NFi@Bs 0123456789rxsPOST /loop HTTP/1.0 sContent-Length: %d s r0s rUr)rGr2rr6r8rKrLr9r>r?findindexrrbytesr assertEqualr=) rr7rA DATA_SIZEchunkrOrheadersrkcheckerexpectedrrr_basetest_huge_contentsB        z)BaseSockTestsMixin._basetest_huge_contentcCs@t$}|j||jWdn1s20YdSr$)r+rFrr5rr7rr@rrrtest_huge_content<s  z$BaseSockTestsMixin.test_huge_contentcst}|dd}d|d}|j||IdH|j|dd|dIdHt|j||}t|}t|}|j ||IdH}t |d|} | | d| d d kr|j ||IdH}t |d|} q| d| d d } | t| d} |} td} t t| t| } || | | t| 8} |j ||IdH}|d|} | shqt t| t| } || | | t| 8} q>|| d |IdH|dSr|)rGr2rr6r8rKrLr;rCr:rr>r?r~rrrrrr=)rr7rArrrOarrayrDr rrrkrrrrr_basetest_huge_content_recvintoAsL         z2BaseSockTestsMixin._basetest_huge_content_recvintocCs@t$}|j||jWdn1s20YdSr$)r+rFrr5rr7rrrrtest_huge_content_recvintoss  z-BaseSockTestsMixin.test_huge_content_recvintocCs\t@}ttj}|||ttj}|||Wdn1sN0YdSr$)r+Zrun_test_unix_serverrGAF_UNIXrBrErHrrrtest_unix_sock_client_opsxs     z,BaseSockTestsMixin.test_unix_sock_client_opscCsd}z&t}|d|}W|n |0t}|d|t&|j|j ||Wdn1s~0Y|dS)NrRF) rGr]rbr=r2r3rprr5r6)rr7srArrrtest_sock_client_fails     "z(BaseSockTestsMixin.test_sock_client_failcCst}|d|d|dt}|||j|}|j|\}}| | d| ||| | || | | dS)NFrRrSr) rGr2r]r^connectrbrr<r5r gettimeout getpeernamer=)rrjclientfconnrsrrrtest_sock_accepts    z#BaseSockTestsMixin.test_sock_acceptcCst}|d|d|d|}t|j|d}| tj |j |Wdn1sp0Y| t}|d|j ||}| t|j |Wdn1s0Y| dS)NFrRrSg?)rGr2r]r^rbrKryrr<r3 TimeoutErrorr5r=r6rp)rrjZsockaddrrrrrrtest_cancel_sock_accepts   *  *z*BaseSockTestsMixin.test_cancel_sock_acceptc s&t}d}jjj|jdtji}|D]Z\}}}}}z4tj|||d}|djj ||Wnt yYq20qq2dsJdjj fdd|d} j| \} } | t j | t jj| j| jd| Wdn1s0YdS) Ntype)familyrprotoFzCan not create socket.cs tjdS)N)r)rrrrrrrXz@BaseSockTestsMixin.test_create_connection_sock..)rAr)r+rFrr5 getaddrinfor7rG SOCK_STREAMr2r6 BaseExceptioncreate_connectionZassertIsInstancerKZ TransportProtocolrZ assertGreaterr r=) rr@rAZinfosrrrZcnamer7rtrZprrrrtest_create_connection_socks:      z.BaseSockTestsMixin.test_create_connection_sock)r r!r"r&r(r-rBrErIrPrQrlrvrzr{rrrrrZskip_unless_bind_unix_socketrrrrr __classcell__rrr)rr#1s,  $7,2 r#win32c@seZdZddZdS)SelectEventLoopTestscCstSr$)rKSelectorEventLooprrrrr&s&SelectEventLoopTests.create_event_loopNr r!r"r&rrrrrsrc@seZdZddZdS)ProactorEventLoopTestscCstSr$)rKZProactorEventLooprrrrr&sz(ProactorEventLoopTests.create_event_loopNrrrrrrsrKqueueSelectorc@seZdZddZdS)KqueueEventLoopTestscCsttSr$)rKr selectorsrrrrrr&sz&KqueueEventLoopTests.create_event_loopNrrrrrrsr EpollSelectorc@seZdZddZdS)EPollEventLoopTestscCsttSr$)rKrrrrrrrr&sz%EPollEventLoopTests.create_event_loopNrrrrrrsr PollSelectorc@seZdZddZdS)PollEventLoopTestscCsttSr$)rKrrrrrrrr&sz$PollEventLoopTests.create_event_loopNrrrrrrsrc@seZdZddZdS)rcCsttSr$)rKrrSelectSelectorrrrrr&srNrrrrrrs)rGtimerKsysZunittestr itertoolsrrZtest.test_asynciorr+testrZ test.supportrrrr#platformZTestCaserrrhasattrrrrrrrrsJ    #$