|
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// BVTReposit.CPP
//
//
// Copyright (c)2000 Microsoft Corporation, All Rights Reserved
//
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
#include <bvt.h>
#define NO_ERRORS_EXPECTED FALSE,__FILE__,__LINE__
#define ERRORS_CAN_BE_EXPECTED TRUE,__FILE__,__LINE__
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 1
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int BasicConnectUsingIWbemLocator(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; IWbemServices * pNamespace = NULL; CHString sNamespace;
LogTestBeginning(1,fSuppressHeader);
if( g_Options.GetSpecificOptionForAPITest(L"NAMESPACE",sNamespace, 1) ) { // =====================================================================
// Open the namespace
// =====================================================================
nRc = OpenNamespaceAndKeepOpen( &pNamespace, WPTR sNamespace,FALSE,fCompareResults); // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); }
LogTestEnding(1,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 2
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int BasicSyncConnectUsingIWbemConnection(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; IWbemConnection * pConnection = NULL; CHString sNamespace; CHString sClass;
LogTestBeginning(2,fSuppressHeader);
if( g_Options.GetSpecificOptionForAPITest(L"NAMESPACE",sNamespace,2) ) { if( g_Options.GetSpecificOptionForAPITest(L"CLASS",sClass,2) ) { nRc = CoCreateInstanceAndLogErrors(CLSID_WbemConnection,IID_IWbemConnection,(void**)&pConnection,NO_ERRORS_EXPECTED); if( SUCCESS == nRc ) { // =================================================================
// Test Open with all three types:
//
// IWbemServices
// IWbemServicesEx
// IWbemClassObject
//
// Initialize all vars
// =================================================================
short FatalErrors = 0;
// =================================================================
// Open the namespace with IWbemServices
// =================================================================
IWbemServices * pNamespace = NULL; nRc = OpenObjectAndLogErrors(pConnection, IID_IWbemServices, (void**) &pNamespace, WPTR sNamespace,NO_ERRORS_EXPECTED); if ( nRc != SUCCESS ) { FatalErrors++; } SAFE_RELEASE_PTR(pNamespace);
// =================================================================
// Open the namespace with IWbemServicesEx
// =================================================================
IWbemServicesEx * pNamespaceEx = NULL; nRc = OpenObjectAndLogErrors(pConnection, IID_IWbemServicesEx, (void**) &pNamespaceEx,WPTR sNamespace,NO_ERRORS_EXPECTED); if ( nRc != SUCCESS ) { FatalErrors++; } SAFE_RELEASE_PTR(pNamespaceEx);
// =================================================================
// Open the Class for IWbemClassObject
// =================================================================
IWbemClassObject* pWbemClassObject = NULL; nRc = OpenObjectAndLogErrors(pConnection, IID_IWbemClassObject, (void**) &pWbemClassObject, WPTR sClass,NO_ERRORS_EXPECTED); if ( nRc != SUCCESS ) { FatalErrors++; } SAFE_RELEASE_PTR(pWbemClassObject);
// =================================================================
// Check to see if there were any fatal errors
// =================================================================
if( !FatalErrors ) { nRc = SUCCESS; } } // =====================================================================
// Release the locator
// =====================================================================
SAFE_RELEASE_PTR(pConnection); } }
LogTestEnding(2,nRc,fSuppressHeader); return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 3
//*****************************************************************************************************************
int BasicAsyncConnectUsingIWbemConnection(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; HRESULT hr = S_OK; IWbemConnection * pConnection = NULL; CHString sNamespace; CHString sClass; LogTestBeginning(3,fSuppressHeader); if( g_Options.GetSpecificOptionForAPITest(L"NAMESPACE",sNamespace,2) ) { if( g_Options.GetSpecificOptionForAPITest(L"CLASS",sClass,2)) { nRc = CoCreateInstanceAndLogErrors(CLSID_WbemConnection,IID_IWbemConnection,(void**)&pConnection,NO_ERRORS_EXPECTED); if( SUCCESS == nRc ) { // =================================================================
// Test Open with all three types:
//
// IWbemServices
// IWbemServicesEx
// IWbemClassObject
//
// Initialize all the vars
// =================================================================
short FatalErrors = 0; CSinkEx * pHandler = NULL;
pHandler = new CSinkEx; if( pHandler ) { // =================================================================
// Open the namespace with IWbemServices
// =================================================================
nRc = OpenObjectAsyncAndLogErrors(pConnection, IID_IWbemServices,WPTR sNamespace,pHandler,NO_ERRORS_EXPECTED); if ( nRc == FATAL_ERROR ) { FatalErrors++; } else { IWbemServices * pNamespace = NULL;
pHandler->WaitForSignal(INFINITE); hr = pHandler->GetStatusCode(); if(SUCCEEDED(hr)) { pNamespace = (IWbemServices*)pHandler->GetInterface(); }
SAFE_RELEASE_PTR(pNamespace); } } else { gp_LogFile->LogError(__FILE__,__LINE__,FATAL_ERROR, L"Allocation of new CSinkEx Failed - Out of memory."); } SAFE_DELETE_PTR(pHandler);
// =================================================================
// Open the namespace with IWbemServicesEx
// =================================================================
pHandler = new CSinkEx; if( pHandler ) { nRc = OpenObjectAsyncAndLogErrors(pConnection, IID_IWbemServicesEx,WPTR sNamespace, pHandler,NO_ERRORS_EXPECTED); if ( nRc == FATAL_ERROR ) { FatalErrors++; } else { IWbemServicesEx * pNamespace = NULL;
pHandler->WaitForSignal(INFINITE); hr = pHandler->GetStatusCode(); if(SUCCEEDED(hr)) { pNamespace = (IWbemServicesEx*)pHandler->GetInterface(); }
SAFE_RELEASE_PTR(pNamespace); } } else { gp_LogFile->LogError(__FILE__,__LINE__,FATAL_ERROR, L"Allocation of new CSinkEx Failed - Out of memory."); } SAFE_DELETE_PTR(pHandler);
// =================================================================
// Open the class for IWbemClassObject
// =================================================================
pHandler = new CSinkEx; if( pHandler ) { nRc = OpenObjectAsyncAndLogErrors(pConnection, IID_IWbemClassObject, WPTR sClass, pHandler,NO_ERRORS_EXPECTED); if ( nRc == FATAL_ERROR ) { FatalErrors++; } else { IWbemClassObject * pWbemClassObject = NULL; pHandler->WaitForSignal(INFINITE); hr = pHandler->GetStatusCode(); if(SUCCEEDED(hr)) { pWbemClassObject = (IWbemClassObject*)pHandler->GetInterface(); }
SAFE_RELEASE_PTR(pWbemClassObject); } } else { gp_LogFile->LogError(__FILE__,__LINE__,FATAL_ERROR, L"Allocation of new CSinkEx Failed - Out of memory."); } SAFE_DELETE_PTR(pHandler);
// =================================================================
// Check to see if there are any fatal errors
// =================================================================
if( !FatalErrors ) { nRc = SUCCESS; } }
// =====================================================================
// Release the locator
// =====================================================================
SAFE_RELEASE_PTR(pConnection); } }
LogTestEnding(3,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 4
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateNewTestNamespace(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = SUCCESS; CHString sNamespace; CHString sParentNamespace; CHString sInstance;
LogTestBeginning(4,fSuppressHeader); if( g_Options.GetSpecificOptionForAPITest(L"PARENT_NAMESPACE",sParentNamespace, 4)) { if( g_Options.GetSpecificOptionForAPITest(L"NAMESPACE",sNamespace, 4)) { if( g_Options.GetSpecificOptionForAPITest(L"CLASSES",sInstance, 4 )) { IWbemLocator * pLocator = NULL;
nRc = CoCreateInstanceAndLogErrors(CLSID_WbemLocator,IID_IWbemLocator,(void**)&pLocator,NO_ERRORS_EXPECTED); if( SUCCESS == nRc ) { //==========================================================================
// Parse the namespace name to get the parent first, and open the parent
// this one must be existing
//==========================================================================
IWbemServices * pParentNamespace = NULL; IWbemServices * pChildNamespace = NULL;
nRc = ConnectServerAndLogErrors(pLocator,&pParentNamespace, WPTR sParentNamespace,NO_ERRORS_EXPECTED); if( nRc == SUCCESS ) { //==============================================================
// If we got here, then we know that the child namespace does
// not exist, so create it.
//==============================================================
nRc = CreateInstances(pParentNamespace,sInstance, WPTR sParentNamespace, 4 ); if( SUCCESS == nRc ) { //==========================================================
// Open the namespace with IWbemServices as the new parent
//==========================================================
nRc = ConnectServerAndLogErrors(pLocator, &pChildNamespace,WPTR sNamespace,NO_ERRORS_EXPECTED); } } SAFE_RELEASE_PTR(pParentNamespace); SAFE_RELEASE_PTR(pChildNamespace); } // =============================================================================
// Release the locator
// =============================================================================
SAFE_RELEASE_PTR(pLocator); } } } LogTestEnding(4,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 5
//*****************************************************************************************************************
int CreateNewClassesInTestNamespace(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(5,fSuppressHeader); // =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(5, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { //=========================================================
// Create classes with different properties. Some of
// these should be in the following inheritance chain and
// some should not inherit from the others at all:
// classes = {A, B, C, D:A, E:A, F:E, G:F, H:G, I:F}.
// A mix of simple string & sint32 keys are fine.
//=========================================================
nRc = CreateClassesForSpecificTest(pNamespace, WPTR sNamespace,L"CLASSES",5); }
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(5,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 6
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteAndRecreateNewClassesInTestNamespace(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(6,fSuppressHeader); // =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(6, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { //=========================================
// Get all of the class operations for
// this test:
// Classes to be deleted
// Classes to be compared
// Classes to be added
// Classes to be compared
// Classes to be added_deleted
// Classes to be compared
//=============================================
CHString sDeleteClasses; CHString sClassesAfterDelete; CHString sAddClasses; CHString sClassesAfterAdd; CHString sDeleteAddClassOrder; CHString sClassesAfterDeleteAdd;
if( g_Options.GetSpecificOptionForAPITest( L"DELETE_CLASSES", sDeleteClasses, 6)) { if( g_Options.GetSpecificOptionForAPITest( L"CLASSES_AFTER_DELETE", sClassesAfterDelete, 6)) { if( g_Options.GetSpecificOptionForAPITest( L"ADD_CLASSES", sAddClasses, 6)) { if( g_Options.GetSpecificOptionForAPITest( L"CLASSES_AFTER_ADD", sClassesAfterAdd, 6)) { if( g_Options.GetSpecificOptionForAPITest( L"DELETE_ADD_CLASS_ORDER", sDeleteAddClassOrder, 6)) { if( g_Options.GetSpecificOptionForAPITest( L"CLASSES_AFTER_DELETE_ADD", sClassesAfterDeleteAdd, 6)) { nRc = DeleteClasses(sDeleteClasses, 6, fCompareResults,pNamespace,WPTR sNamespace); if( nRc == SUCCESS ) { nRc = EnumerateClassesAndCompare(sClassesAfterDelete, 6,fCompareResults, pNamespace,WPTR sNamespace); if( nRc == SUCCESS ) { nRc = AddClasses(sAddClasses, pNamespace, WPTR sNamespace, 6 ); if( nRc == SUCCESS ) { nRc = EnumerateClassesAndCompare(sClassesAfterAdd,6,fCompareResults, pNamespace, WPTR sNamespace); if( nRc == SUCCESS ) { nRc = DeleteAndAddClasses(sDeleteAddClassOrder, pNamespace, WPTR sNamespace, 6); if( nRc == SUCCESS ) { nRc = EnumerateClassesAndCompare(sClassesAfterDeleteAdd,6, fCompareResults,pNamespace, WPTR sNamespace); } } } } } } } } } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(6,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 7
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateSimpleAssociations(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(7,fSuppressHeader); // =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(7, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { //=================================================
// Get the list of associations to create
//=================================================
CHString sItemList;
if( g_Options.GetSpecificOptionForAPITest(L"CLASSES",sItemList, 7)) { ItemList MasterList; //=======================================================
// Parse the list of the associations to be created
//=======================================================
if( InitMasterList(sItemList,MasterList)) { for( int i = 0; i < MasterList.Size(); i++ ) { ItemInfo * p = MasterList.GetAt(i); CHString sItemInformation;
// =============================================================
// Get definition of the association
// =============================================================
int nWhichTest = 0; CHString sClassDef;
nRc = GetClassDefinitionSection(7, sClassDef, nWhichTest ); if( SUCCESS == nRc ) { if( g_Options.GetSpecificOptionForAPITest(p->Item,sItemInformation,nWhichTest) ) { //===========================================================
// Create the association
//===========================================================
nRc = CreateAssociationAndLogErrors(pNamespace,p->Item,WPTR sItemInformation,WPTR sNamespace); if( nRc != SUCCESS ) { break; } } } } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(7,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 8
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int QueryAllClassesInTestNamespace(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(8,fSuppressHeader); // =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(8, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { //==================================================================
// Query classes in test namespace
//==================================================================
CHString sQueryList; if( g_Options.GetSpecificOptionForAPITest(L"QUERY_LIST",sQueryList, 8)) { ItemList MasterList; //=======================================================
// Get the list of the queries
//=======================================================
if( InitMasterList(sQueryList,MasterList)) { for( int i = 0; i < MasterList.Size(); i++ ) { ItemInfo * p = MasterList.GetAt(i); CHString sQuery;
if( g_Options.GetSpecificOptionForAPITest(p->Item,sQuery,8) ) { 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);
LogTestEnding(8,nRc,fSuppressHeader); return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 9
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateClassInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(9,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(9, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { nRc = CreateInstancesForSpecificTest(pNamespace, WPTR sNamespace,L"INSTANCE_LIST",9,TRUE); } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); LogTestEnding(9,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 10
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteClassInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(10,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(10, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of instances to delete
// =============================================================
CHString sInstanceList; if( g_Options.GetSpecificOptionForAPITest( L"INSTANCE_LIST",sInstanceList, 10 ) ) { // =========================================================
// Delete the instances in the namespace
// =========================================================
nRc = DeleteInstancesAndCompareResults(sInstanceList, 10, pNamespace, WPTR sNamespace); } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(10,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 11
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int EnumerateClassInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(11,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(11, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of classes to get instances for
// =============================================================
CHString sInstanceList; if( g_Options.GetSpecificOptionForAPITest( L"INSTANCE_LIST", sInstanceList, 11 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(11, FlagList); if( SUCCESS == nRc ) { for( int i = 0; i < FlagList.Size(); i++ ) { ItemInfo * p = FlagList.GetAt(i); // =================================================
// Make sure those instances are in the namespace
// =================================================
nRc = EnumerateInstancesAndCompare( sInstanceList, 11, fCompareResults, pNamespace,WPTR sNamespace); } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); LogTestEnding(11,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 12
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateAssociationInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(12,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(12, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { nRc = CreateInstancesForSpecificTest(pNamespace, WPTR sNamespace,L"INSTANCE_LIST",12,TRUE); } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(12,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 13
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteAssociationInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(13,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(13, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of instances to delete
// =============================================================
CHString sInstanceList; if( g_Options.GetSpecificOptionForAPITest(L"INSTANCE_LIST", sInstanceList, 13 ) ) { // =========================================================
// Delete the instances in the namespace
// =========================================================
nRc = DeleteInstancesAndCompareResults(sInstanceList,13, pNamespace, WPTR sNamespace); } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); LogTestEnding(13,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 14
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int EnumerateAssociationInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(14,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(14, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of classes to get instances for
// =============================================================
CHString sInstanceList; if( g_Options.GetSpecificOptionForAPITest( L"INSTANCE_LIST", sInstanceList, 14 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(14, FlagList); if( SUCCESS == nRc ) { for( int i = 0; i < FlagList.Size(); i++ ) { ItemInfo * p = FlagList.GetAt(i); // =========================================================
// Make sure those instances are in the namespace
// =========================================================
nRc = EnumerateInstancesAndCompare( sInstanceList, 14, fCompareResults, pNamespace,WPTR sNamespace); } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); LogTestEnding(14,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 15
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteClassDeletesInstances(BOOL fCompareResults, BOOL fSuppressHeader ) { int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(15,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(15, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of classes to delete
// =============================================================
CHString sClassList; if( g_Options.GetSpecificOptionForAPITest( L"CLASSES", sClassList, 15 ) ) { // =========================================================
// Get the enumeration flags
// =========================================================
ItemList FlagList; nRc = GetFlags(15, FlagList); if( SUCCESS == nRc ) { for( int i = 0; i < FlagList.Size(); i++ ) { ItemInfo * p = FlagList.GetAt(i); // ==================================================
// Make sure those instances are in the namespace
// ==================================================
nRc = DeleteClasses(sClassList,15,fCompareResults,pNamespace,WPTR sNamespace); } } } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); LogTestEnding(15,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 16
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetObjects(BOOL fCompareResults, BOOL fSuppressHeader ) { //==========================================================================
// Get the various types of objects (classes/instances) using the various
// types of paths accepted by WMI ( WMI path/ UMI path/ HTTP path)
//==========================================================================
int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL; LogTestBeginning(16,fSuppressHeader); // =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(16, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of objexts to get
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( L"OBJECT_LIST",sObjects, 16 ) ) { // =========================================================
// Get the requested objects
// =========================================================
nRc = GetSpecificObjects(sObjects, pNamespace, 16,WPTR sNamespace); } } // =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace); LogTestEnding(16,nRc,fSuppressHeader); return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 17
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateMethods(BOOL fCompareResults, BOOL fSuppressHeader ) { // =====================================================================
// Getting a list of Methods for a class and instance
// =====================================================================
int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(17,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(17, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of methods to create
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( L"METHOD_LIST",sObjects, 17 ) ) { // =========================================================
// Create the methods
// =========================================================
nRc = CreateMethodsAndCompare(sObjects, pNamespace, 17, fCompareResults, WPTR sNamespace); }
} SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(17,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 18
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteMethods(BOOL fCompareResults, BOOL fSuppressHeader ) { // =====================================================================
// Getting a list of Methods for a class and instance
// =====================================================================
int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(18,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(18, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of methods to delete
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( L"METHOD_LIST",sObjects, 18 ) ) { // =========================================================
// Delete the methods
// =========================================================
nRc = DeleteMethodsAndCompare(sObjects, pNamespace, 18,fCompareResults,WPTR sNamespace); }
} SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(18,nRc,fSuppressHeader);
return nRc; } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 19
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int ListMethods(BOOL fCompareResults, BOOL fSuppressHeader ) { // =====================================================================
// Getting a list of Methods for a class and instance
// =====================================================================
int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(19,fSuppressHeader);
// =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(19, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { // =============================================================
// Get the list of methods to delete
// =============================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( L"METHOD_LIST",sObjects, 19 ) ) { // =========================================================
// Delete the methods
// =========================================================
nRc = EnumerateMethodsAndCompare(sObjects, pNamespace, 19,fCompareResults,WPTR sNamespace); }
} SAFE_RELEASE_PTR(pNamespace);
LogTestEnding(19,nRc,fSuppressHeader);
return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 20
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteAllNonSystemClasses(BOOL fCompareResults, BOOL fSuppressHeader ) {
int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(20,fSuppressHeader); // =====================================================================
// Run the requested tests and get then namespace open
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(20, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { IEnumWbemClassObject * pEnum = NULL;
//===========================================================
// Begin enumerating all of the classes in the namespace
//===========================================================
nRc = EnumerateClassesAndLogErrors(pNamespace,&pEnum, WBEM_FLAG_RETURN_IMMEDIATELY|WBEM_FLAG_FORWARD_ONLY , NULL, WPTR sNamespace,NO_ERRORS_EXPECTED); if( nRc == S_OK ) { //===================================================
// while we get the classes in the namespace
//===================================================
IWbemClassObject * pClass = NULL; while( TRUE ) { nRc = NextClassAndLogErrors(pEnum, &pClass,WPTR sNamespace,NO_ERRORS_EXPECTED); if( nRc == NO_MORE_DATA ) { nRc = SUCCESS; break; } if( nRc != SUCCESS ) { break; } CVARIANT vProperty; CIMTYPE pType = 0; LONG lFlavor = 0; //===================================================
// Get the name of the class
//===================================================
nRc = GetPropertyAndLogErrors( pClass, L"__CLASS", &vProperty, &pType, &lFlavor, NULL,WPTR sNamespace, NO_ERRORS_EXPECTED); if( nRc == S_OK ) { //===============================================
// filter out system classes
//===============================================
if( wcsncmp( vProperty.GetStr(), L"__", 2 ) != 0 ) { //===============================================
// Delete it, however, it may not be there if
// the parent class has already been deleted.
//===============================================
DeleteClassAndLogErrors(pNamespace, vProperty.GetStr(), WPTR sNamespace,ERRORS_CAN_BE_EXPECTED); } } SAFE_RELEASE_PTR(pClass); }
SAFE_RELEASE_PTR(pClass); } } SAFE_RELEASE_PTR(pNamespace); LogTestEnding(20,nRc,fSuppressHeader); return nRc; }
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 21
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteRequestedNamespace(BOOL fCompareResults, BOOL fSuppressHeader ) {
int nRc = FATAL_ERROR; CHString sNamespace; IWbemServices * pNamespace = NULL;
LogTestBeginning(21,fSuppressHeader); // =====================================================================
// Run the requested tests
// Go to the parent namespace
// =====================================================================
nRc = RunRequestedTestsAndOpenNamespace(21, sNamespace, &pNamespace, fCompareResults); if( SUCCESS == nRc ) { //==================================================================
// Get the name of the namespace to delete
//==================================================================
CHString sObjects; if( g_Options.GetSpecificOptionForAPITest( L"NAMESPACE_TO_DELETE",sObjects, 21 ) ) { // =========================================================
// See if the instance exists
// =========================================================
IWbemClassObject * pClass = NULL;
nRc = GetClassObjectAndLogErrors( pNamespace, sObjects, &pClass,WPTR sNamespace,ERRORS_CAN_BE_EXPECTED); SAFE_RELEASE_PTR(pClass);
if( SUCCESS == nRc ) { // =========================================================
// Delete the instances of the namespace
// =========================================================
nRc = DeleteInstanceAndLogErrors(pNamespace, sObjects, WPTR sNamespace, NO_ERRORS_EXPECTED ); } else { if( nRc == FAILED_AS_EXPECTED ) { nRc = SUCCESS; } } } } SAFE_RELEASE_PTR(pNamespace); LogTestEnding(21,nRc,fSuppressHeader); return nRc; }
|