Module: wine Branch: master Commit: 81142c9985b3102f3cf116e694b4feb0963a7e44 URL: http://source.winehq.org/git/wine.git/?a=commit;h=81142c9985b3102f3cf116e694...
Author: Michael Müller michael@fds-team.de Date: Mon Jun 29 06:27:26 2015 +0200
kernel32/tests: Add tests for GetNumaProcessorNode.
---
dlls/kernel32/tests/process.c | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)
diff --git a/dlls/kernel32/tests/process.c b/dlls/kernel32/tests/process.c index 6660af4..b4a435b 100644 --- a/dlls/kernel32/tests/process.c +++ b/dlls/kernel32/tests/process.c @@ -3,6 +3,7 @@ * * Copyright 2002 Eric Pouech * Copyright 2006 Dmitry Timoshkov + * Copyright 2014 Michael Müller * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -74,6 +75,7 @@ static BOOL (WINAPI *pTerminateJobObject)(HANDLE job, UINT exit_code); static BOOL (WINAPI *pQueryInformationJobObject)(HANDLE job, JOBOBJECTINFOCLASS class, LPVOID info, DWORD len, LPDWORD ret_len); static BOOL (WINAPI *pSetInformationJobObject)(HANDLE job, JOBOBJECTINFOCLASS class, LPVOID info, DWORD len); static HANDLE (WINAPI *pCreateIoCompletionPort)(HANDLE file, HANDLE existing_port, ULONG_PTR key, DWORD threads); +static BOOL (WINAPI *pGetNumaProcessorNode)(UCHAR, PUCHAR);
/* ############################### */ static char base[MAX_PATH]; @@ -227,6 +229,7 @@ static BOOL init(void) pQueryInformationJobObject = (void *)GetProcAddress(hkernel32, "QueryInformationJobObject"); pSetInformationJobObject = (void *)GetProcAddress(hkernel32, "SetInformationJobObject"); pCreateIoCompletionPort = (void *)GetProcAddress(hkernel32, "CreateIoCompletionPort"); + pGetNumaProcessorNode = (void *)GetProcAddress(hkernel32, "GetNumaProcessorNode"); return TRUE; }
@@ -2692,6 +2695,39 @@ static void test_StartupNoConsole(void) #endif }
+static void test_GetNumaProcessorNode(void) +{ + SYSTEM_INFO si; + UCHAR node; + BOOL ret; + int i; + + if (!pGetNumaProcessorNode) + { + skip("GetNumaProcessorNode is missing\n"); + return; + } + + GetSystemInfo(&si); + for (i = 0; i < 256; i++) + { + SetLastError(0xdeadbeef); + node = (i < si.dwNumberOfProcessors) ? 0xFF : 0xAA; + ret = pGetNumaProcessorNode(i, &node); + if (i < si.dwNumberOfProcessors) + { + ok(ret, "GetNumaProcessorNode returned FALSE for processor %d\n", i); + ok(node != 0xFF, "expected node != 0xFF, but got 0xFF\n"); + } + else + { + ok(!ret, "GetNumaProcessorNode returned TRUE for processor %d\n", i); + ok(node == 0xFF || broken(node == 0xAA) /* WinXP */, "expected node 0xFF, got %x\n", node); + ok(GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError()); + } + } +} + START_TEST(process) { HANDLE job; @@ -2741,6 +2777,7 @@ START_TEST(process) test_RegistryQuota(); test_DuplicateHandle(); test_StartupNoConsole(); + test_GetNumaProcessorNode(); /* things that can be tested: * lookup: check the way program to be executed is searched * handles: check the handle inheritance stuff (+sec options)