advapi32: Add tests for StartTrace().
Signed-off-by: Zebediah Figura <z.figura12@gmail.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
f900879d9e
commit
1bcd38f788
|
@ -20,12 +20,15 @@
|
|||
|
||||
#include <stdarg.h>
|
||||
|
||||
#include "initguid.h"
|
||||
#include "windef.h"
|
||||
#include "winbase.h"
|
||||
#include "winerror.h"
|
||||
#include "winnt.h"
|
||||
#include "winreg.h"
|
||||
#include "sddl.h"
|
||||
#include "wmistr.h"
|
||||
#include "evntrace.h"
|
||||
|
||||
#include "wine/test.h"
|
||||
|
||||
|
@ -1143,6 +1146,92 @@ static void cleanup_eventlog(void)
|
|||
ok(bret, "Expected MoveFileEx to succeed: %d\n", GetLastError());
|
||||
}
|
||||
|
||||
static void test_start_trace(void)
|
||||
{
|
||||
const char sessionname[] = "wine";
|
||||
const char filepath[] = "wine.etl";
|
||||
const char filepath2[] = "eniw.etl";
|
||||
EVENT_TRACE_PROPERTIES *properties;
|
||||
TRACEHANDLE handle;
|
||||
LONG buffersize;
|
||||
LONG ret;
|
||||
|
||||
buffersize = sizeof(EVENT_TRACE_PROPERTIES) + sizeof(sessionname) + sizeof(filepath);
|
||||
properties = (EVENT_TRACE_PROPERTIES *) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, buffersize);
|
||||
properties->Wnode.BufferSize = buffersize;
|
||||
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);
|
||||
|
||||
properties->Wnode.BufferSize = 0;
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_BAD_LENGTH ||
|
||||
ret == ERROR_INVALID_PARAMETER, /* XP and 2k3 */
|
||||
"Expected ERROR_BAD_LENGTH, got %d\n", ret);
|
||||
properties->Wnode.BufferSize = buffersize;
|
||||
|
||||
ret = StartTraceA(&handle, "this name is too long", properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_BAD_LENGTH, "Expected ERROR_BAD_LENGTH, got %d\n", ret);
|
||||
|
||||
ret = StartTraceA(&handle, sessionname, NULL);
|
||||
todo_wine
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
|
||||
|
||||
ret = StartTraceA(NULL, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
|
||||
|
||||
properties->LogFileNameOffset = 1;
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
|
||||
properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES) + sizeof(sessionname);
|
||||
|
||||
properties->LoggerNameOffset = 1;
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
|
||||
properties->LoggerNameOffset = sizeof(EVENT_TRACE_PROPERTIES);
|
||||
|
||||
properties->LogFileMode = EVENT_TRACE_FILE_MODE_SEQUENTIAL | EVENT_TRACE_FILE_MODE_CIRCULAR;
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
|
||||
properties->LogFileMode = EVENT_TRACE_FILE_MODE_NONE;
|
||||
/* XP creates a file we can't delete, so change the filepath to something else */
|
||||
strcpy((char *)properties + properties->LogFileNameOffset, filepath2);
|
||||
|
||||
properties->Wnode.Guid = SystemTraceControlGuid;
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_INVALID_PARAMETER, "Expected ERROR_INVALID_PARAMETER, got %d\n", ret);
|
||||
properties->Wnode.Guid = (GUID){0};
|
||||
|
||||
properties->LogFileNameOffset = 0;
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_BAD_PATHNAME, "Expected ERROR_BAD_PATHNAME, got %d\n", ret);
|
||||
properties->LogFileNameOffset = sizeof(EVENT_TRACE_PROPERTIES) + sizeof(sessionname);
|
||||
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
ok(ret == ERROR_SUCCESS, "Expected success, got %d\n", ret);
|
||||
|
||||
ret = StartTraceA(&handle, sessionname, properties);
|
||||
todo_wine
|
||||
ok(ret == ERROR_ALREADY_EXISTS ||
|
||||
ret == ERROR_SHARING_VIOLATION, /* 2k3 */
|
||||
"Expected ERROR_ALREADY_EXISTS, got %d\n", ret);
|
||||
|
||||
/* clean up */
|
||||
ControlTraceA(handle, sessionname, properties, EVENT_TRACE_CONTROL_STOP);
|
||||
HeapFree(GetProcessHeap(), 0, properties);
|
||||
DeleteFileA(filepath);
|
||||
}
|
||||
|
||||
START_TEST(eventlog)
|
||||
{
|
||||
SetLastError(0xdeadbeef);
|
||||
|
@ -1172,4 +1261,7 @@ START_TEST(eventlog)
|
|||
test_autocreation();
|
||||
cleanup_eventlog();
|
||||
}
|
||||
|
||||
/* Trace tests */
|
||||
test_start_trace();
|
||||
}
|
||||
|
|
|
@ -236,6 +236,7 @@ typedef struct _EVENT_TRACE_PROPERTIES
|
|||
ULONG MaximumFileSize;
|
||||
ULONG LogFileMode;
|
||||
ULONG FlushTimer;
|
||||
ULONG EnableFlags;
|
||||
LONG AgeLimit;
|
||||
ULONG NumberOfBuffers;
|
||||
ULONG FreeBuffers;
|
||||
|
|
Loading…
Reference in New Issue