[1/2] kernel32/tests: Add tests for GetNumaProcessorNode.

Sebastian Lackner sebastian at fds-team.de
Sun Jun 28 23:27:26 CDT 2015


From: Michael Müller <michael at fds-team.de>

---
 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)
-- 
2.4.4



More information about the wine-patches mailing list