[3/3] advapi32/tests: Add preliminary event tracing tests. (try 2)
Zebediah Figura
z.figura12 at gmail.com
Tue Jun 9 13:49:10 CDT 2015
---
dlls/advapi32/tests/eventlog.c | 152 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 152 insertions(+)
diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index 1e48348..c9933c2 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -19,6 +19,7 @@
*/
#include <stdarg.h>
+#include <initguid.h>
#include "windef.h"
#include "winbase.h"
@@ -26,6 +27,8 @@
#include "winnt.h"
#include "winreg.h"
#include "sddl.h"
+#include "wmistr.h"
+#include "evntrace.h"
#include "wine/test.h"
@@ -649,6 +652,154 @@ static const char eventlogsvc[] = "SYSTEM\\CurrentControlSet\\Services\\Eventlog
static const char eventlogname[] = "Wine";
static const char eventsources[][11] = { "WineSrc", "WineSrc1", "WineSrc20", "WineSrc300" };
+static void test_trace(void)
+{
+ const char sessionname[] = "Wine";
+ const char filepath[] = "wine.etl";
+ const GUID sessionguid = {0xdeadbeef,0xface,0xcafe,{0x01,0x23,0x45,0x67,0x89,0xab,0xcd,0xef}};
+ const GUID providerguid = {0xdeadbeef,0xface,0xcafe,{0x42,0x42,0x42,0x42,0x42,0x42,0x42,0x42}};
+ PEVENT_TRACE_PROPERTIES properties;
+ TRACEHANDLE handle = 0;
+ LONG buffersize;
+ LONG ret;
+
+ /* set up EVENT_TRACE_PROPERTIES */
+ buffersize = sizeof(EVENT_TRACE_PROPERTIES)+sizeof(sessionname)+sizeof(providerguid);
+ properties = HeapAlloc(GetProcessHeap(), 0, buffersize);
+ ZeroMemory(properties,buffersize);
+ properties->Wnode.BufferSize = buffersize;
+ properties->Wnode.Guid = sessionguid;
+ properties->Wnode.ClientContext = 1;
+ properties->Wnode.Flags = WNODE_FLAG_TRACED_GUID;
+ properties->LogFileMode = EVENT_TRACE_FILE_MODE_NONE;
+ properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
+ properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES)+sizeof(sessionname);
+ strcpy((char*)properties+properties->LogFileNameOffset, filepath);
+
+ /* test for ERROR_BAD_LENGTH */
+
+ properties->Wnode.BufferSize = 0;
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_BAD_LENGTH, "Expected ERROR_BAD_LENGTH, got %d\n", GetLastError());
+ }
+ properties->Wnode.BufferSize = buffersize;
+
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle,"This name is too long",properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_BAD_LENGTH, "Expected ERROR_BAD_LENGTH, got %d\n", GetLastError());
+ }
+
+ /* test for ERROR_INVALID_PARAMETER */
+
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, NULL);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(NULL, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+
+ properties->LogFileNameOffset = -1;
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
+
+ properties->LoggerNameOffset = 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
+
+
+ properties->LogFileNameOffset = 0xdeadbeef;
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES)+sizeof(sessionname);
+
+ /* invalid flag combination */
+ properties->LogFileMode = EVENT_TRACE_FILE_MODE_SEQUENTIAL | EVENT_TRACE_FILE_MODE_CIRCULAR;
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ properties->LogFileMode = EVENT_TRACE_FILE_MODE_NONE;
+
+ properties->Wnode.Guid = SystemTraceControlGuid;
+ /*session name != KERNEL_LOGGER_NAME*/
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", GetLastError());
+ }
+ properties->Wnode.Guid = sessionguid;
+
+ /* test ERROR_BAD_PATHNAME */
+
+ properties->LogFileMode = 0;
+ properties->LogFileNameOffset = 0;
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_BAD_PATHNAME, "Expected ERROR_BAD_PATHNAME, got %d\n", GetLastError());
+ }
+ properties->LogFileMode = EVENT_TRACE_FILE_MODE_NONE;
+ properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES)+sizeof(sessionname);
+
+ /* test success */
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ ok(ret == ERROR_SUCCESS, "Expected success\n");
+
+ /* start twice */
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, sessionname, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_ALREADY_EXISTS, "Expected ERROR_ALREADY_EXISTS, got %d\n", GetLastError());
+ }
+
+ /* clean up */
+ ControlTraceA(handle, sessionname, properties, EVENT_TRACE_CONTROL_STOP);
+ HeapFree(GetProcessHeap(), 0, properties);
+}
+
static BOOL create_new_eventlog(void)
{
HKEY key, eventkey;
@@ -1163,6 +1314,7 @@ START_TEST(eventlog)
test_openbackup();
test_read();
test_clear();
+ test_trace();
/* Functional tests */
if (create_new_eventlog())
--
1.9.1
More information about the wine-patches
mailing list