a  ze7@sddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z GdddZ GdddZ Gdddej ZGd d d eZGd d d eZdS) N)supportc@seZdZddZddddZddZd d Zd d Zej d e j dddddZ ej e j fddZ ddZddZejddZddZd S)FunctionalTestCaseMixincCstSN)asyncioZnew_event_loopselfrP/opt/bitninja-python-dojo/embedded/lib/python3.9/test/test_asyncio/functional.pynew_loopsz FunctionalTestCaseMixin.new_loopg{Gz?)delaycCs|jt|dSr)loopZrun_until_completersleep)rr rrr run_loop_brieflysz(FunctionalTestCaseMixin.run_loop_brieflycCs|j||j|dSr)._FunctionalTestCaseMixin__unhandled_exceptionsappendr Zdefault_exception_handler)rr contextrrr loop_exception_handlers z.FunctionalTestCaseMixin.loop_exception_handlercCs,||_td|j|jg|_dSr)r r rset_event_loopZset_exception_handlerrrrrrr setUps  zFunctionalTestCaseMixin.setUpc CsZzB|j|jr0tdt|j|dWtdd|_ntdd|_0dS)Nz2Unexpected calls to loop.call_exception_handler():z1unexpected calls to loop.call_exception_handler())r closerprintpprintfailrrrrrr tearDown s     z FunctionalTestCaseMixin.tearDownN )familyaddrtimeoutbacklog max_clientsc Cs|durPttdrL|tjkrLt}|j}WdqP1s@0Ynd}tj|||d}|durptd|dkrtd||t |||||S)NAF_UNIX)z 127.0.0.1r)rrtimeout is requiredr#only blocking sockets are supported) hasattrsocketr!tempfileNamedTemporaryFilename create_server RuntimeError settimeoutTestThreadedServer) rZ server_progrrrrr tmpsockrrr tcp_server-s &  z"FunctionalTestCaseMixin.tcp_servercCsFt|tj}|durtd|dkr.td||t||||S)Nr"rr#)r% SOCK_STREAMr*r+TestThreadedClient)rZ client_progrrr.rrr tcp_clientEs z"FunctionalTestCaseMixin.tcp_clientcOs$ttdst|j|dtji|SNr!r)r$r%NotImplementedErrorr/r!rargskwargsrrr unix_serverTs z#FunctionalTestCaseMixin.unix_servercOs$ttdst|j|dtji|Sr3)r$r%r4r2r!r5rrr unix_clientYs z#FunctionalTestCaseMixin.unix_clientccstp}tj|d}z,|VWzt|WqjtyBYqj0n$zt|WntyfYn00Wdn1s~0YdS)Nr.)r&TemporaryDirectoryospathjoinunlinkOSError)rZtdfnrrr unix_sock_name^s   z&FunctionalTestCaseMixin.unix_sock_namec Cs*z|jW||n ||0dSr)r stoprrexrrr _abort_socket_testjs z*FunctionalTestCaseMixin._abort_socket_test)__name__ __module__ __qualname__r rrrrr%AF_INETrZLOOPBACK_TIMEOUTr/r2r8r9 contextlibcontextmanagerrArErrrr r s&   rc@s<eZdZddZddZddddd Zd d Zd d ZdS)TestSocketWrappercCs ||_dSr)_TestSocketWrapper__sockrr.rrr __init__xszTestSocketWrapper.__init__cCs<d}t||kr8||t|}|dkr.t||7}q|S)N)lenrecvConnectionAbortedError)rnbufdatarrr recv_all{s  zTestSocketWrapper.recv_allFN) server_sideserver_hostnamecCs^|j|j||dd}z2z |Wn|Yn0W|jn |j0||_dS)NF)rXrYZdo_handshake_on_connect)Z wrap_socketrMZ do_handshaker)rZ ssl_contextrXrYZssl_sockrrr start_tlss  zTestSocketWrapper.start_tlscCs t|j|Sr)getattrrM)rr(rrr __getattr__szTestSocketWrapper.__getattr__cCsdt|j|jS)Nz <{} {!r}>)formattyperFrMrrrr __repr__szTestSocketWrapper.__repr__)rFrGrHrOrWrZr\r_rrrr rLvs  rLc@s$eZdZddZddZddZdS) SocketThreadcCsd|_|dSNF)_activer=rrrr rBszSocketThread.stopcCs ||Sr)startrrrr __enter__szSocketThread.__enter__cGs |dSr)rB)rexcrrr __exit__szSocketThread.__exit__N)rFrGrHrBrdrfrrrr r`sr`c@seZdZddZddZdS)r1cCs:tj|dddd|_||_||_d|_||_||_dS)Nz test-clientT) threadingThreadrOdaemon_timeout_sockrb_prog_test)rtestr.progrrrr rOszTestThreadedClient.__init__c CsJz|t|jWn0tyD}z|j|WYd}~n d}~00dSr)rlrLrk ExceptionrmrErCrrr runszTestThreadedClient.runN)rFrGrHrOrqrrrr r1s r1csHeZdZddZfddZddZddZd d Zed d Z Z S) r,cCshtj|dddd|_d|_d|_||_||_||_d|_ ||_ t \|_ |_|j d||_dS)Nz test-serverTrF)rgrhrOri_clientsZ_finished_clients _max_clientsrjrkrbrlr% socketpair_s1_s2 setblockingrm)rrnr.rorr rrr rOs zTestThreadedServer.__init__csXzF|jr:|jdkr:z|jdWnty8Yn0Wtn t0dS)Nsstop)rvfilenosendr?superrBr __class__rr rBs zTestThreadedServer.stopcCsnzR|j$|jd|Wdn1s20YW|j|jn|j|j0dSra)rkrw_runrurrvrrrr rqs (  zTestThreadedServer.runc Cs<|jr8|j|jkrdSt|j|jggg|j\}}}|j|vrFdS|j|vrz|j\}}Wn6tyxYqYqt j y|jsYdSYq0|jd7_| |jz2|| |Wdn1s0YWqt y4}z4d|_zW|j|n|j|0WYd}~qd}~00qdS)NrF)rbrrrsselectrkrurjacceptBlockingIOErrorr%rr+_handle_clientrprmrE)rrwxconnrrDrrr r~s6      ,zTestThreadedServer._runcCs|t|dSr)rlrLrNrrr rsz!TestThreadedServer._handle_clientcCs |jSr)rk getsocknamerrrr r szTestThreadedServer.addr) rFrGrHrOrBrqr~rpropertyr __classcell__rrr|r r,s  "r,)rZasyncio.eventsrJr;rrr%r&rgrnrrrLrhr`r1r,rrrr s i(