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)NZINITIALr) 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,||_d|_|jr|jd|ddS)NZ CONNECTEDs%GET / HTTP/1.0 Host: example.com )r r r set_resultwrite)rr rrrconnection_mades  zMyProto.connection_madecCs|jt|7_dSN)r len)rdatarrr data_received"szMyProto.data_receivedcCs d|_dS)NZEOF)r rrrr eof_received&szMyProto.eof_receivedcCsd|_|jr|jddS)NZCLOSED)r r r)rexcrrrconnection_lost*szMyProto.connection_lost)N) __name__ __module__ __qualname__r r rrrrrrrrrrs rcseZdZddZfddZfddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zejd!d"Zd#d$Zd%d&Zd'd(Zd)d*ZZS)+BaseSockTestsMixincCstdSr)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,r-) r/rr2r3r4r5r8 memoryviewr7r:r;r<)rr=r>rbufr rrr_basetest_sock_recv_intohs"   "z+BaseSockTestsMixin._basetest_sock_recv_intocCsTt8}t}|||t}|||Wdn1sF0YdSr)r(run_test_serversocketr?rBrr=r>rrrtest_sock_client_opsys   z'BaseSockTestsMixin.test_sock_client_opscs|d|j||jIdHt|j|d}tdIdH|t|j |d|j|dIdH}|j|dIdH| | ddSNFr,rr+r-) r/rr3r4asyncio create_taskr6sleepcancelr5r;r<)rr=r>taskrrrr_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|IdHdSrG)r/rr3r4r8r@rHrIr7rJrKr5r;r<)rr=r>rrArLr 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)NrQ)rr6strip)rvrArZserverrrrecv_alls z?BaseSockTestsMixin._basetest_sock_send_racing..recv_allsworld)bindlisten setsockoptrD SOL_SOCKET SO_SNDBUFr/rHrIrr3 getsocknamerJacceptr0BlockingIOErrorsendintr5rKshutdownSHUT_WRr;endswith)rlistenerr>rLsizerYrrrXr_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) NrOFrrPzMax retries reachedwinerrori&')rZr_r/rHrIrr3rJrKr[rangeConnectionRefusedErrorOSErrorgetattrZskipTest)rrgr>addrrLZ skip_reasonierrr_basetest_sock_connect_racings&    $z0BaseSockTestsMixin._basetest_sock_connect_racingc Cs4t}t}|,|jt|||dWdn1sH0Yt}|,|jt|||dWdn1s0YWdn1s0Yt}t}|R|,|jt| ||dWdn1s0YWdn1s&0YdSN ) r(rCrDrr2rHwait_forrMrNri)rr=r>rgrrrtest_sock_client_racings"   $  B   z*BaseSockTestsMixin.test_sock_client_racingc Csxt}t}|P|,|jt|||dWdn1sL0YWdn1sj0YdSrt)rDrr2rHrvrs)rrgr>rrrtest_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 0123456789rusPOST /loop HTTP/1.0 sContent-Length: %d s r-s rRr)rDr/rr3r5rHrIr6r;r<findindexrrbytesr assertEqualr:) rr4r> DATA_SIZEchunkrLrheadersrhcheckerexpectedrrr_basetest_huge_contentsB        z)BaseSockTestsMixin._basetest_huge_contentcCs@t$}|j||jWdn1s20YdSr)r(rCrr2rr4rr=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|dSry)rDr/rr3r5rHrIr8r@r7r}r;r<r{r|rrrr~r:)rr4r>rrrLarrayrAr rrrhrrrrr_basetest_huge_content_recvintoAsL         z2BaseSockTestsMixin._basetest_huge_content_recvintocCs@t$}|j||jWdn1s20YdSr)r(rCrr2rr4rrrrtest_huge_content_recvintoss  z-BaseSockTestsMixin.test_huge_content_recvintocCs\t@}ttj}|||ttj}|||Wdn1sN0YdSr)r(Zrun_test_unix_serverrDAF_UNIXr?rBrErrrtest_unix_sock_client_opsxs     z,BaseSockTestsMixin.test_unix_sock_client_opscCsd}z&t}|d|}W|n |0t}|d|t&|j|j ||Wdn1s~0Y|dS)NrOF) rDrZr_r:r/r0rmrr2r3)rr4sr>rrrtest_sock_client_fails     "z(BaseSockTestsMixin.test_sock_client_failcCst}|d|d|dt}|||j|}|j|\}}| | d| ||| | || | | dS)NFrOrPr) rDr/rZr[connectr_rr9r2r~ gettimeout getpeernamer:)rrgclientfconnrprrrtest_sock_accepts    z#BaseSockTestsMixin.test_sock_acceptcCst}|d|d|d|}t|j|d}| tj |j |Wdn1sp0Y| t}|d|j ||}| t|j |Wdn1s0Y| dS)NFrOrPg?)rDr/rZr[r_rHrvrr9r0 TimeoutErrorr2r:r3rm)rrgZsockaddrrrrrrtest_cancel_sock_accepts   *  *z*BaseSockTestsMixin.test_cancel_sock_acceptc st}d}jjj|jdtji}|D]Z\}}}}}z4tj|||d}|djj ||Wnt yYq00qq0jj fdd|d} j| \} } | t j | t jj| j| jd| Wdn1s 0YdS)Ntype)familyrprotoFcs tjdS)N)r)rrrrrrrUz@BaseSockTestsMixin.test_create_connection_sock..)r>r)r(rCrr2 getaddrinfor4rD SOCK_STREAMr/r3 BaseExceptioncreate_connectionZassertIsInstancerHZ TransportProtocolr Z assertGreaterr r:) rr=r>ZinfosrrrZcnamer4rtrZprrrrtest_create_connection_socks8     z.BaseSockTestsMixin.test_create_connection_sock)rrr r#r%r*r?rBrFrMrNrirsrwrxrrrrrZskip_unless_bind_unix_socketrrrrr __classcell__rrr&rr!1s,  $7,2 r!win32c@seZdZddZdS)SelectEventLoopTestscCstSr)rHSelectorEventLooprrrrr#s&SelectEventLoopTests.create_event_loopNrrr r#rrrrrsrc@seZdZddZdS)ProactorEventLoopTestscCstSr)rHZProactorEventLooprrrrr#sz(ProactorEventLoopTests.create_event_loopNrrrrrrsrKqueueSelectorc@seZdZddZdS)KqueueEventLoopTestscCsttSr)rHr selectorsrrrrrr#sz&KqueueEventLoopTests.create_event_loopNrrrrrrsr EpollSelectorc@seZdZddZdS)EPollEventLoopTestscCsttSr)rHrrrrrrrr#sz%EPollEventLoopTests.create_event_loopNrrrrrrsr PollSelectorc@seZdZddZdS)PollEventLoopTestscCsttSr)rHrrrrrrrr#sz$PollEventLoopTests.create_event_loopNrrrrrrsrc@seZdZddZdS)rcCsttSr)rHrrSelectSelectorrrrrr#srNrrrrrrs)rDtimerHsysZunittestr itertoolsrrZtest.test_asynciorr(testrZ test.supportrrrr!platformZTestCaserrrhasattrrrrrrrrsJ    #$