|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// BVTCIMv2.CPP
//
//
// Copyright (c)2000 Microsoft Corporation, All Rights Reserved
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <bvt.h>
#include "bvtrefresh.h"
#define NO_ERRORS_EXPECTED FALSE,__FILE__,__LINE__
#define ERRORS_CAN_BE_EXPECTED TRUE,__FILE__,__LINE__
int TestSemiSyncEvent(WCHAR * wcsEventInfo, BOOL fCompareResults); int TestAsyncEvent(WCHAR * wcsEventInfo, BOOL fCompareResults);
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetListOfProviders( int nWhichTest, ItemList & MasterList ) { int nRc = FATAL_ERROR; CHString sProviders;
if( g_Options.GetSpecificOptionForAPITest(L"PROVIDERS",sProviders,nWhichTest) ) { //=======================================================
// Parse the list of Providers to process
//=======================================================
if( InitMasterList(sProviders,MasterList)) { nRc = SUCCESS; } } return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetNextProviderNamespace( int i, int nWhichTest, ItemList & MasterList, CHString & sNamespace, CHString & sKey ) { int nRc = FATAL_ERROR;
ItemInfo * p = MasterList.GetAt(i); if( p ) { CHString sTmp; sKey = p->Item; if( g_Options.GetSpecificOptionForAPITest(sKey,sTmp, nWhichTest) ) { nRc = CrackNamespace(WPTR sTmp,sNamespace, NO_ERRORS_EXPECTED); } } return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetNextNamespaceAndRunRequestedTests( int nWhichTest, int & i, ItemList & MasterList, CHString & sNamespace, CHString & sKey, BOOL fCompareResults, BOOL fSuppressHeader, IWbemServices ** ppNamespace ) { //==========================================================================
// Open the requested namespaces
//==========================================================================
int nRc = FATAL_ERROR;
if( i == -1 ) { LogTestBeginning(nWhichTest,fSuppressHeader); nRc = GetListOfProviders( nWhichTest, MasterList ); } else { nRc = SUCCESS; }
if( SUCCESS == nRc ) { i++; // =====================================================================
// Make sure we are still in range
// =====================================================================
if( i < MasterList.Size() ) { nRc = GetNextProviderNamespace(i, 200, MasterList, sNamespace, sKey); if( SUCCESS == nRc ) { // ==============================================================
// Open the namespace
// ==============================================================
nRc = OpenNamespaceAndKeepOpen( ppNamespace,WPTR sNamespace,FALSE,fCompareResults); } } else { nRc = NO_MORE_DATA; } } if( SUCCESS == nRc ) { nRc = RunRequestedTests(nWhichTest, fCompareResults); }
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 200
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderOpenNamespace(BOOL fCompareResults, BOOL fSuppressHeader) { //==========================================================================
// Open the requested namespaces
//==========================================================================
int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace, sKey; int i = -1;
while(TRUE) { nRc = GetNextNamespaceAndRunRequestedTests( 200, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); // ==============================================================
// Release the pointers
// ==============================================================
SAFE_RELEASE_PTR(pNamespace); if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; break; } if( nRc == FATAL_ERROR ) { break; } } LogTestEnding(200,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 201
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderEnumerateClasses(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 201, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of classes to make sure they are in namespace
// =============================================================
CHString sClasses; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sClasses, 201 ) ) { ItemList ClassList;
if(InitMasterList(sClasses, ClassList)) { for( int i = 0; i < ClassList.Size(); i++ ) { ItemInfo * pClass = ClassList.GetAt(i); CHString sClassName;
if( g_Options.GetSpecificOptionForAPITest( WPTR pClass->Item,sClassName, 201 ) ) { // =========================================================
// Get the class name and expected results,
// =========================================================
CHString sClass; ItemList Results;
nRc = CrackClassNameAndResults(WPTR sClassName, sClass, Results, NO_ERRORS_EXPECTED ); if( SUCCESS == nRc ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(201, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =========================================================
// Make sure those classes are in the namespace
// =========================================================
IEnumWbemClassObject * pEnum = NULL; nRc = EnumerateClassesAndLogErrors( pNamespace,&pEnum, p->dwFlags, WPTR sClass, WPTR sNamespace, NO_ERRORS_EXPECTED ); if( SUCCESS == nRc ) { if( fCompareResults ) { if( x < Results.Size() ) { ItemInfo * pResults = Results.GetAt(x); nRc = CompareResultsFromEnumeration(pEnum,pResults->Results,WPTR sClass, WPTR sNamespace); } } } SAFE_RELEASE_PTR(pEnum); } } } } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(201,nRc,fSuppressHeader);
return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 202
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderExecuteQueries(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 202, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; }
// =============================================================
// Get the list of queries
// =============================================================
CHString sQueries; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sQueries, 202 ) ) { ItemList List; if(InitMasterList(sQueries, List)) { for( int i = 0; i < List.Size(); i++ ) { ItemInfo * p = List.GetAt(i); CHString sQuery;
if( g_Options.GetSpecificOptionForAPITest(p->Item,sQuery,202) ) { EventInfo Query; nRc = CrackEvent(WPTR sQuery, Query,NO_ERRORS_EXPECTED); if( SUCCESS == nRc ) { //==================================================================
// Regular query
//==================================================================
nRc = QueryAndCompareResults( pNamespace,WPTR Query.Query,Query.Results,WPTR sNamespace); if( nRc != S_OK ) { break; } } } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(202,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 203
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 204
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderEnumerateInstances(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 204, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of instances
// =============================================================
CHString sInstances; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sInstances, 204 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(204, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =================================================
// Make sure those instances are in the namespace
// =================================================
nRc = EnumerateInstancesAndCompare( sInstances, 204, fCompareResults, pNamespace,(WCHAR*)((const WCHAR*)sNamespace)); } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(204,nRc,fSuppressHeader);
return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 205
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderGetObjects(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 205, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of instances
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sObjects, 205 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(205, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =================================================
// Get the specific objects
// =================================================
nRc = GetSpecificObjects(sObjects, pNamespace, 205,WPTR sNamespace); } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(205,nRc,fSuppressHeader);
return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 206
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderEnumerateMethods(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 206, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of Methods
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sObjects, 206 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(206, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =========================================================
// Delete the methods
// =========================================================
nRc = EnumerateMethodsAndCompare(sObjects, pNamespace, 206,fCompareResults,WPTR sNamespace); } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(206,nRc,fSuppressHeader);
return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 207
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderExecuteMethods(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 207, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of Methods
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sObjects, 207 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(207, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =========================================================
// Delete the methods
// =========================================================
nRc = ExecuteMethodsAndCompare(sObjects, pNamespace, 207,fCompareResults,WPTR sNamespace); } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(207,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 208
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderSemiSyncEvents(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 208, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of Methods
// =============================================================
CHString sEvents; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sEvents, 208 ) ) { ItemList EventList;
if(InitMasterList(sEvents, EventList)) { for( int i = 0; i < EventList.Size(); i++ ) { ItemInfo * pEvent = EventList.GetAt(i); CHString sEventInfo; // ==================================================
// Get the event info
// ==================================================
if( g_Options.GetSpecificOptionForAPITest( WPTR pEvent->Item,sEventInfo, 208 ) ) { nRc = TestSemiSyncEvent( WPTR sEventInfo, fCompareResults); } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(208,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 209
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderTempAsyncEvents(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 209, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of Methods
// =============================================================
CHString sEvents; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sEvents, 209 ) ) { ItemList EventList;
if(InitMasterList(sEvents, EventList)) { for( int i = 0; i < EventList.Size(); i++ ) { ItemInfo * pEvent = EventList.GetAt(i); CHString sEventInfo; // ==================================================
// Get the event info
// ==================================================
if( g_Options.GetSpecificOptionForAPITest( WPTR pEvent->Item,sEventInfo, 209 ) ) { nRc = TestAsyncEvent( WPTR sEventInfo, fCompareResults); } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(209,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 210
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int RefreshLoop( WCHAR * wcsClass, IWbemServices * pNamespace) { int nRc = FATAL_ERROR; long lLoopCount = 0; // Refresh loop counter
CRefresher aRefClient;
// Initialize our container class
// ==============================
aRefClient.Initialize(pNamespace, wcsClass);
// Add items to the refresher
// ==========================
// Add an enumerator
// =================
HRESULT hr = aRefClient.AddEnum(wcsClass); if ( SUCCEEDED( hr ) ) { hr = aRefClient.AddObjects(wcsClass); if( SUCCEEDED(hr) ) { // Begin the refreshing loop
// =========================
for ( lLoopCount = 0; lLoopCount < cdwNumReps; lLoopCount++ ) { // Refresh!!
// =========
hr = aRefClient.Refresh(); if ( SUCCEEDED (hr) ) { aRefClient.EnumerateObjectData(); aRefClient.EnumerateEnumeratorData(); } else { break; } } }
}
aRefClient.RemoveEnum(); aRefClient.RemoveObjects();
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderRefresher(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 210, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =============================================================
// Get the list of Methods
// =============================================================
CHString sEvents; if( g_Options.GetSpecificOptionForAPITest( WPTR sKey,sEvents, 210) ) { ItemList EventList;
if(InitMasterList(sEvents, EventList)) { for( int i = 0; i < EventList.Size(); i++ ) { ItemInfo * pEvent = EventList.GetAt(i); CHString sEventInfo; // ==================================================
// Get the event info
// ==================================================
if( g_Options.GetSpecificOptionForAPITest( WPTR pEvent->Item,sEventInfo, 210 ) ) { // nRc = RefreshLoop( WPTR sEventInfo, pNamespace);
} } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(210,nRc,fSuppressHeader);
return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 211
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderCreateClasses(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 211, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(211, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =========================================================
// Create classes
// =========================================================
nRc = CreateClassesForSpecificTest(pNamespace, WPTR sNamespace, WPTR sKey,211); } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(211,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 212
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ProviderCreateInstances(BOOL fCompareResults, BOOL fSuppressHeader) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; ItemList MasterList; CHString sNamespace; int i = -1;
while(TRUE) { CHString sKey; nRc = GetNextNamespaceAndRunRequestedTests( 212, i, MasterList, sNamespace, sKey, fCompareResults, fSuppressHeader, &pNamespace ); if( SUCCESS != nRc ) { break; } // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(212, FlagList); if( SUCCESS == nRc ) { for( int x = 0; x < FlagList.Size(); x++ ) { ItemInfo * p = FlagList.GetAt(x); // =========================================================
// Create Instances
// =========================================================
nRc = CreateInstancesForSpecificTest(pNamespace, WPTR sNamespace,WPTR sKey,212,TRUE); } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); } if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; } LogTestEnding(212,nRc,fSuppressHeader);
return nRc; }
|