[PATCH 1/4] kernel32/tests: Add tests for named pipes in PIPE_NOWAIT mode.
Jacek Caban
jacek at codeweavers.com
Tue Oct 1 11:41:22 CDT 2019
Hi Brendan,
On 10/1/19 6:16 PM, Brendan Shanks wrote:
> Signed-off-by: Brendan Shanks <bshanks at codeweavers.com>
> ---
> dlls/kernel32/tests/pipe.c | 108 +++++++++++++++++++++++++++++++++++++
> 1 file changed, 108 insertions(+)
>
> diff --git a/dlls/kernel32/tests/pipe.c b/dlls/kernel32/tests/pipe.c
> index f61d441303..227575ece3 100644
> --- a/dlls/kernel32/tests/pipe.c
> +++ b/dlls/kernel32/tests/pipe.c
> @@ -3887,6 +3887,113 @@ static void test_wait_pipe(void)
> CloseHandle(ov.hEvent);
> }
>
> +static DWORD CALLBACK test_nowait_read_thread(LPVOID arg)
> +{
> + HANDLE *pipewrite = arg;
> + static const char buf[] = "bits";
> + DWORD written;
> +
> + Sleep(2000);
> + WriteFile(*pipewrite, buf, sizeof(buf), &written, NULL);
> + return 0;
> +}
> +static DWORD CALLBACK test_nowait_write_thread(LPVOID arg)
> +{
> + HANDLE *piperead = arg;
> + char buf[32768];
> + DWORD read;
> +
> + Sleep(2000);
> + ReadFile(*piperead, buf, sizeof(buf), &read, NULL);
> + return 0;
> +}
> +static DWORD CALLBACK test_nowait_connect_thread(LPVOID arg)
> +{
> + HANDLE hFile;
> +
> + Sleep(2000);
> + hFile = CreateFileA(PIPENAME, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, 0);
> + ok(hFile != INVALID_HANDLE_VALUE, "CreateFileA failed\n");
> + ok(CloseHandle(hFile), "CloseHandle failed\n");
> + return 0;
> +}
I'd expect that those tests would be more reliable and cleaner if you
used overlapped handles. You could have one pipe end non-blocking and
the other end overlapped to test everything using one thread in a
predictable way. If you carefully choose buffer sizes, you could make
those tests more precise. See test_blocking_rw for an example.
> + /* WriteFile only documents that 'write < sizeof(readbuf)' for this case, but Windows
> + * doesn't seem to do partial writes ('write == 0' always)
> + */
If Windows doesn't do partial writes, it would be actually interesting
to test and implement.
Thanks,
Jacek
More information about the wine-devel
mailing list