a „oeć@szddlZddlZddlZddlZddlZddlZddlZddlZddlZddl m Z Gdd„dej ƒZ e dkrve ”dS)éN)Ś str2bytesc@sBeZdZdZdd„Zddd„Zdd„Zd d „Zd d „Zd d„Z dS)Ś PipeTestsz\\.\pipe\python_test_pipecCstt |”}| |dtjfvd|f”t |d”\}}| |tdƒ”t   |”t  |tdƒ”|  ”|  ”dS)NrzGot error code 0x%xédśfoobarśbarfoo)Ś win32pipeZConnectNamedPipeŚ assertTrueŚwinerrorZERROR_PIPE_CONNECTEDŚ win32fileZReadFileŚ assertEqualrŚtimeŚsleepZ WriteFileŚCloseŚset)ŚselfŚ pipe_handleŚeventŚ wait_timeŚhrŚgot©rś:C:\Program Files\Certbot\pkgs\win32\test\test_win32pipe.pyŚ _serverThreads ’ zPipeTests._serverThreadrc Csbtj}tjtjB}t ”}| ddd”t |j||tj ddd|”}t j |j |||fd  ”dS)NériŠ)ŚtargetŚargs)rZPIPE_ACCESS_DUPLEXZPIPE_TYPE_MESSAGEZ PIPE_WAITŚ pywintypesZSECURITY_ATTRIBUTESZSetSecurityDescriptorDaclZCreateNamedPipeŚpipenameZPIPE_UNLIMITED_INSTANCESŚ threadingŚThreadrŚstart)rrrZopenModeZpipeModeZsarrrrŚstartPipeServers" ų  ’zPipeTests.startPipeServercCsXt ”}| |”t |jtdƒdtj”}| |tdƒ”|  d”|  |  ”d”dS)Nréréś#Pipe server thread didn't terminate) rŚEventr!rZ CallNamedPiperrZNMPWAIT_WAIT_FOREVERr ŚwaitrŚisSet)rrrrrrŚtestCallNamedPipe4s ’ zPipeTests.testCallNamedPipec Cst ”}| |”tjtjB}t |j|ddtj dd”}t   |t j dd”t   |tdƒdd”\}}| |tdƒ”| d”| | ”d”dS)Nrrr"rr#r$)rr%r!Świn32conŚ GENERIC_READŚ GENERIC_WRITEr Ś CreateFilerŚ OPEN_EXISTINGrŚSetNamedPipeHandleStateŚPIPE_READMODE_MESSAGEŚTransactNamedPiperr r&rr')rrŚ open_modeŚhpiperrrrrŚtestTransactNamedPipeBlocking?s&  ł  ’ z'PipeTests.testTransactNamedPipeBlockingc Csšt ”}| |”tjtjB}t |j|ddtj dd”}t   |t j dd”t  d”}t  |tdƒ|d”\}}| |tdƒ”| d”| | ”d”dS)Nrr"rrr#r$)rr%r!r)r*r+r r,rr-rr.r/ŚAllocateReadBufferr0rr r&rr')rrr1r2ŚbufferrrrrrŚ#testTransactNamedPipeBlockingBufferXs,  ł  ’  ’ z-PipeTests.testTransactNamedPipeBlockingBufferc Csąt ”}t ”}t dddd”|_| |d”tj tj B}t   |j |ddtjtjd”}t |tjdd”t  d”}t |tdƒ||”\}}| |tj”t  ||d”}|d|…}| |tdƒ”| d”| | ”d”dS) Nrgą?r"rTrr#r$)rr%rZ OVERLAPPEDŚ win32eventZ CreateEventZhEventr!r)r*r+r r,rr-ZFILE_FLAG_OVERLAPPEDrr.r/r4r0rr r ZERROR_IO_PENDINGZGetOverlappedResultr&rr') rrZ overlappedr1r2r5rrŚnbytesrrrŚtestTransactNamedPipeAsyncvs6  ł  ’  ’  z$PipeTests.testTransactNamedPipeAsyncN)r) Ś__name__Ś __module__Ś __qualname__rrr!r(r3r6r9rrrrrs  rŚ__main__)rr Zunittestrr)r7r rr Zpywin32_testutilrZTestCaserr:ŚmainrrrrŚs