Windows-Server-2003/base/published/stwlog.w

176 lines
3.9 KiB
OpenEdge ABL

/*--
Copyright (c) Microsoft Corporation. All rights reserved.
Module Name:
STWLog.w (generates stwlog.h)
Abstract:
Setup Test Wrapper logging function for use by testing running as part of IDWLog process
Author:
Mark Freeman (mfree)
Revision History:
Created on 15-Jan-2002
Contains these functions:
VOID STWLog ( TCHAR * lpTestName, TCHAR * lpTestOwner, DWORD dwLevel, TCHAR * lpTestOutput )
--*/
#define LOG_INFO 0
#define LOG_TEST_PASS 1
#define LOG_TEST_FAILURE 2
#define LOG_FATAL_ERROR 3
#define LOG_NEW 9
TCHAR szLogDirectory[MAX_PATH];
/*
Logging function to be used by tests under the control of STWrap
Required Parameters:( TCHAR * lpTestName, TCHAR * lpTestOwner, DWORD dwLevel, TCHAR * lpTestOutput )
Return Value: NONE
Created: 15-Nov-2001 Mark Freeman (mfree)
*/
VOID STWLog ( TCHAR * lpTestName, TCHAR * lpTestOwner, DWORD dwLevel, TCHAR * lpTestOutput ) {
FILE* fpTestLogFile;
TCHAR szTestLogFileAndPath[MAX_PATH];
TCHAR szLogLevel[16];
TCHAR szTestOutput[MAX_PATH];
TCHAR szIdwlogFile[30];
TCHAR szIdwlogFileAndPath[MAX_PATH];
TCHAR szSystemDrive[4];
BOOL bUseSysDrive;
HANDLE hTestExistence;
WIN32_FIND_DATA ffd;
UINT i;
time_t t;
TCHAR szTimeBuffer[30];
//figure out where idwlog is and use that folder for logs
bUseSysDrive = TRUE;
for (i= TEXT('c'); i <= TEXT('z'); i++){
//search the drives
_stprintf ( szIdwlogFileAndPath,
TEXT("%c:\\idwlog\\*.log"), i);
hTestExistence = FindFirstFile(szIdwlogFileAndPath, &ffd);
if (INVALID_HANDLE_VALUE != hTestExistence){
// We found a log file in this case here.
bUseSysDrive = FALSE;
FindClose(hTestExistence);
_stprintf ( szLogDirectory, TEXT("%c:\\idwlog"), i);
break;
}
}
if (TRUE == bUseSysDrive){
// We couldn't find it - Get the system Drive and use that
if ( 0 == GetEnvironmentVariable(TEXT("SystemDrive"),szSystemDrive, 4)) {
// Default to C: (we're probably running on Win9x where there is
// no SystemDrive envinronment variable)
//
_tcscpy(szSystemDrive, TEXT("C:"));
}
_stprintf(szLogDirectory,TEXT("%s\\idwlog"), szSystemDrive);
}
_tcscpy(szTestLogFileAndPath,szLogDirectory);
_tcscat(szTestLogFileAndPath,"\\");
_tcscat(szTestLogFileAndPath,lpTestName);
_tcscat(szTestLogFileAndPath,".LOG");
fpTestLogFile = _tfopen(szTestLogFileAndPath,TEXT("a+"));
if(fpTestLogFile == NULL) {
// nothing we can do if the logfile is not opened
// what about STWRAP.LOG ? log that failure somewhere?
//_tprintf ( TEXT("ERROR - Could not open log file: %s\n"), szTestLogFileAndPath );
ExitProcess(GetLastError());
}
szTestOutput[0]='\0';
switch (dwLevel)
{
case LOG_NEW:
//new - delete file
fclose(fpTestLogFile);
fpTestLogFile = _tfopen(szTestLogFileAndPath,TEXT("w"));
_stprintf(szLogLevel, "~NEW~");
/*
// Write the time to the log.
time(&t);
_stprintf ( szTimeBuffer, TEXT("%s"), ctime(&t) );
// ctime addes a new line to the buffer. Erase it here.
szTimeBuffer[_tcslen(szTimeBuffer) - 1] = TEXT('\0');
_tcscpy(szTestOutput, szTimeBuffer);
_tcscat(szTestOutput, " - ");
*/
break;
case LOG_INFO:
_stprintf(szLogLevel, "INFO ");
break;
case LOG_TEST_PASS:
_stprintf(szLogLevel, "PASS ");
break;
case LOG_TEST_FAILURE:
_stprintf(szLogLevel, "FAIL ");
break;
case LOG_FATAL_ERROR:
_stprintf(szLogLevel, "FATAL");
break;
default :
_stprintf(szLogLevel, "INVALID CODE");
break;
}
// Write the time to the log.
time(&t);
_stprintf ( szTimeBuffer, TEXT("%s"), ctime(&t) );
// ctime addes a new line to the buffer. Erase it here.
szTimeBuffer[_tcslen(szTimeBuffer) - 1] = TEXT('\0');
//_tcscpy(szTestOutput, szTimeBuffer);
_tcscat(szTestOutput, lpTestOutput);
_ftprintf (fpTestLogFile, TEXT("%s %s %s [%s] %s\n"), szLogLevel, lpTestName, lpTestOwner, szTimeBuffer, szTestOutput);
fclose(fpTestLogFile);
}