[PATCH] advapi32: Add some tests for StartTrace(). (v2)
Zebediah Figura
z.figura12 at gmail.com
Sun Jul 3 21:15:30 CDT 2016
---
dlls/advapi32/tests/eventlog.c | 139 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 139 insertions(+)
diff --git a/dlls/advapi32/tests/eventlog.c b/dlls/advapi32/tests/eventlog.c
index 3ca59c3..5163537 100644
--- a/dlls/advapi32/tests/eventlog.c
+++ b/dlls/advapi32/tests/eventlog.c
@@ -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"
@@ -1142,6 +1145,141 @@ static void cleanup_eventlog(void)
ok(bret, "Expected MoveFileEx to succeed: %d\n", GetLastError());
}
+static void test_trace(void)
+{
+ const char sessionname[] = "Wine";
+ const char filepath[] = "wine.etl";
+ const LONG lnoffset = ((sizeof(EVENT_TRACE_PROPERTIES) >> 3) + 1) << 3; //pad to 8 bytes
+ const LONG lfnoffset = (((lnoffset + sizeof(sessionname)) >> 3) + 1) << 3; //pad to 8 bytes
+ EVENT_TRACE_PROPERTIES *properties;
+ TRACEHANDLE handle;
+ LONG buffersize;
+ LONG ret;
+
+ /* set up EVENT_TRACE_PROPERTIES */
+ buffersize = lfnoffset + sizeof(filepath);
+ properties = HeapAlloc(GetProcessHeap(), 0, buffersize);
+ ZeroMemory(properties, buffersize);
+ properties->Wnode.BufferSize = buffersize;
+ properties->LogFileMode = EVENT_TRACE_FILE_MODE_NONE;
+ properties->LoggerNameOffset = lnoffset;
+ properties->LogFileNameOffset = lfnoffset;
+
+ /* test for ERROR_BAD_PATHNAME */
+ 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());
+ }
+
+ strcpy((char *)properties+properties->LogFileNameOffset, filepath);
+
+ /* test for ERROR_BAD_LENGTH */
+
+ 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());
+ }
+
+ SetLastError(0xdeadbeef);
+ properties->LoggerNameOffset = 1;
+ 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 = lnoffset;
+
+
+ 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 = lfnoffset;
+
+ /* invalid flag combination */
+ SetLastError(0xdeadbeef);
+ properties->LogFileMode = EVENT_TRACE_FILE_MODE_SEQUENTIAL | EVENT_TRACE_FILE_MODE_CIRCULAR;
+ 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;
+
+ /* test ERROR_BAD_PATHNAME */
+
+ SetLastError(0xdeadbeef);
+ properties->LogFileNameOffset = 0;
+ 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->LogFileNameOffset = lfnoffset;
+
+ /* test ERROR_INVALID_NAME */
+
+ SetLastError(0xdeadbeef);
+ ret = StartTraceA(&handle, NULL, properties);
+ todo_wine
+ {
+ ok(ret != ERROR_SUCCESS, "Expected failure\n");
+ ok(GetLastError() == ERROR_INVALID_NAME, "Expected ERROR_INVALID_NAME, got %d\n", GetLastError());
+ }
+
+ /* 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 */
+ if(handle){
+ ControlTraceA(handle, sessionname, properties, EVENT_TRACE_CONTROL_STOP);
+ }
+ HeapFree(GetProcessHeap(), 0, properties);
+}
+
+
START_TEST(eventlog)
{
SetLastError(0xdeadbeef);
@@ -1163,6 +1301,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