2025-04-27 07:49:33 -04:00

140 lines
5.2 KiB
C++

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// BVTMain.CPP
//
//
// Copyright (c)2000 Microsoft Corporation, All Rights Reserved
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#define DECLARE_GLOBALS
#include <bvt.h>
#include <string.h>
class CLog : public CLogAndDisplayOnScreen
{
public:
CLog() {}
~CLog() {}
BOOL Log(WCHAR * pwcsError, WCHAR * pwcsFileAndLine, const WCHAR *wcsString);
};
CLogAndDisplayOnScreen * gp_LogFile;
CIniFileAndGlobalOptions g_Options;
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
BOOL CLog::Log(WCHAR * pwcsError, WCHAR * pwcsFileAndLine, const WCHAR *wcsString)
{
BOOL fRc = FALSE;
//==========================================
// Write it to the log file
//==========================================
if( WriteToFile(pwcsError, pwcsFileAndLine,wcsString ))
{
//==========================================
// Display it on the screen
//==========================================
wprintf(L"%s: %s\n",pwcsError,wcsString);
fRc = TRUE;
}
return fRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
extern "C" int __cdecl wmain( int argc, wchar_t *argv[ ], wchar_t *envp[ ] )
{
int nRc = FATAL_ERROR;
gp_LogFile = new CLog();
if( gp_LogFile )
{
//==============================================================
// Get the command line arguments
//==============================================================
if( !ParseCommandLine(argc, argv) )
{
gp_LogFile->LogError( __FILE__,__LINE__,FATAL_ERROR, L"GetCommandLineArguments failed." );
}
else
{
// =========================================================
// Initialize COM
// =========================================================
HRESULT hr = CoInitializeEx( NULL, COINIT_MULTITHREADED );
if ( SUCCEEDED( hr ) )
{
// =====================================================
// Setup default security parameters
// =====================================================
hr = CoInitializeSecurity( NULL, -1, NULL, NULL, RPC_C_AUTHN_LEVEL_CONNECT, RPC_C_IMP_LEVEL_IMPERSONATE,
NULL, EOAC_NONE, NULL );
if ( SUCCEEDED( hr ) )
{
if( g_Options.RunSpecificTests())
{
// =================================================
// Execute the specific tests requested
// =================================================
for( int i = 0; i < g_Options.SpecificTestSize(); i++ )
{
int nTest = g_Options.GetSpecificTest(i);
nRc = RunTests(nTest,TRUE,FALSE);
if( nRc == FATAL_ERROR )
{
gp_LogFile->LogError( __FILE__,__LINE__,FATAL_ERROR, L"Test # %d returned a FATAL ERROR",nTest );
}
}
}
else
{
// =================================================
// Execute all of the Single Threaded BVT tests
// =================================================
int nMaxTests = sizeof(g_nDefaultTests) / sizeof(int);
for( int i = 0; i < nMaxTests ; i++ )
{
nRc = RunTests(g_nDefaultTests[i],TRUE,FALSE);
}
// =================================================
// Execute all of the Multi Threaded BVT tests
// =================================================
int nMax = sizeof(g_nMultiThreadTests) / sizeof(int);
CMulti * pTest = new CMulti(nMax);
if( pTest )
{
nRc = pTest->MultiThreadTest(g_Options.GetThreads(), g_Options.GetConnections());
}
SAFE_DELETE_PTR(pTest);
}
}
else
{
gp_LogFile->LogError( __FILE__,__LINE__,FATAL_ERROR, L"CoInitializeSecurity failed." );
}
CoUninitialize();
}
else
{
gp_LogFile->LogError( __FILE__,__LINE__,FATAL_ERROR, L"CoInitializeEx failed." );
}
}
}
SAFE_DELETE_PTR(gp_LogFile);
return nRc;
}