|
|
/*--
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);
}
|