Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

973 lines
45 KiB

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
// 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__
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// UTility functions for this file only
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int OpenNamespaceAndCreateTestClasses( CAutoDeleteString & sNamespace, IWbemServices ** ppNamespace)
{
int nRc = FATAL_ERROR;
//=========================================================
// Get the name of the test namespace that was created
//=========================================================
if( g_Options.GetOptionsForAPITest(sNamespace,APITEST4))
{
//=========================================================
// 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.
//=========================================================
CAutoDeleteString sClassList;
if( g_Options.GetOptionsForAPITest(sClassList, APITEST5))
{
ClassList MasterList;
//=======================================================
// Get the list of the classes to be created
//=======================================================
if( InitMasterListOfClasses(sClassList.GetPtr(),MasterList))
{
// ==================================================
// Open the namespace
// ==================================================
nRc = OpenNamespaceAndKeepOpen( ppNamespace, sNamespace.GetPtr(),TRUE);
if( SUCCESS == nRc )
{
for( int i = 0; i < MasterList.Size(); i++ )
{
ClassInfo * p = MasterList.GetAt(i);
CAutoDeleteString sClassInformation;
if( g_Options.GetSpecificOptionForAPITest(p->Class,sClassInformation,APITEST5) )
{
//===========================================================
// Add the keys and properties
//===========================================================
nRc = CreateClassAndLogErrors(*ppNamespace,p->Class, sClassInformation.GetPtr(), sNamespace.GetPtr(),NO_ERRORS_EXPECTED);
if( nRc != SUCCESS )
{
break;
}
}
}
}
}
}
}
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int OpenNamespaceAndCreateTestClassesAndAssociations( CAutoDeleteString & sNamespace, IWbemServices ** ppNamespace)
{
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
int nRc = OpenNamespaceAndCreateTestClasses( sNamespace, ppNamespace );
if( nRc == SUCCESS )
{
//=================================================
// Get the list of associations to create
//=================================================
CAutoDeleteString sClassList;
if( g_Options.GetOptionsForAPITest(sClassList, APITEST7))
{
ClassList MasterList;
//=======================================================
// Parse the list of the associations to be created
//=======================================================
if( InitMasterListOfClasses(sClassList.GetPtr(),MasterList))
{
for( int i = 0; i < MasterList.Size(); i++ )
{
ClassInfo * p = MasterList.GetAt(i);
CAutoDeleteString sClassInformation;
// =============================================================
// Get definition of the association
// =============================================================
if( g_Options.GetSpecificOptionForAPITest(p->Class,sClassInformation,APITEST7) )
{
//===========================================================
// Create the association
//===========================================================
nRc = CreateAssociationAndLogErrors(*ppNamespace,p->Class,sClassInformation.GetPtr(), sNamespace.GetPtr());
if( nRc != SUCCESS )
{
break;
}
}
}
}
}
}
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 1
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int BasicConnectUsingIWbemLocator(void)
{
int nRc = FATAL_ERROR;
IWbemServices * pNamespace = NULL;
CAutoDeleteString sNamespace;
if( g_Options.GetOptionsForAPITest(sNamespace, APITEST1) )
{
// =====================================================================
// Open the namespace
// =====================================================================
nRc = OpenNamespaceAndKeepOpen( &pNamespace, sNamespace.GetPtr(),FALSE);
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
}
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 2
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int BasicSyncConnectUsingIWbemConnection(void)
{
int nRc = FATAL_ERROR;
IWbemConnection * pConnection = NULL;
CAutoDeleteString sNamespace;
CAutoDeleteString sClass;
if( g_Options.GetOptionsForAPITest(sNamespace,sClass,APITEST2) )
{
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, sNamespace.GetPtr(),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,sNamespace.GetPtr(),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,sClass.GetPtr(),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);
}
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 3
//*****************************************************************************************************************
int BasicAsyncConnectUsingIWbemConnection(void)
{
int nRc = FATAL_ERROR;
HRESULT hr = S_OK;
IWbemConnection * pConnection = NULL;
CAutoDeleteString sNamespace;
CAutoDeleteString sClass;
if( g_Options.GetOptionsForAPITest(sNamespace,sClass,APITEST2) )
{
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,sNamespace.GetPtr(),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
{
g_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,sNamespace.GetPtr(), 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
{
g_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,sClass.GetPtr(), 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
{
g_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);
}
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 4
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateNewTestNamespace()
{
int nRc = SUCCESS;
CAutoDeleteString sNamespace;
CAutoDeleteString sInstance;
if( g_Options.GetOptionsForAPITest(sNamespace, sInstance, APITEST4))
{
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,sNamespace.GetPtr(),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, sNamespace.GetPtr(), APITEST4 );
if( SUCCESS == nRc )
{
//==========================================================
// Open the namespace with IWbemServices as the new parent
//==========================================================
nRc = ConnectServerAndLogErrors(pLocator, &pChildNamespace, sNamespace.GetPtr(),NO_ERRORS_EXPECTED);
}
}
SAFE_RELEASE_PTR(pParentNamespace);
SAFE_RELEASE_PTR(pChildNamespace);
}
// =============================================================================
// Release the locator
// =============================================================================
SAFE_RELEASE_PTR(pLocator);
}
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 5
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateNewClassesInTestNamespace()
{
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 6
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteAndRecreateNewClassesInTestNamespace()
{
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
//=========================================
// 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
//=============================================
CAutoDeleteString sDeleteClasses;
CAutoDeleteString sClassesAfterDelete;
CAutoDeleteString sAddClasses;
CAutoDeleteString sClassesAfterAdd;
CAutoDeleteString sDeleteAddClassOrder;
CAutoDeleteString sClassesAfterDeleteAdd;
if( g_Options.GetOptionsForAPITest( sDeleteClasses, sClassesAfterDelete,sAddClasses,
sClassesAfterAdd,sDeleteAddClassOrder,
sClassesAfterDeleteAdd ) )
{
nRc = DeleteClasses(sDeleteClasses, pNamespace, sNamespace.GetPtr());
if( nRc == SUCCESS )
{
nRc = EnumerateClassesAndCompare(sClassesAfterDelete, pNamespace, sNamespace.GetPtr());
if( nRc == SUCCESS )
{
nRc = AddClasses(sAddClasses, pNamespace, sNamespace.GetPtr());
if( nRc == SUCCESS )
{
nRc = EnumerateClassesAndCompare(sClassesAfterAdd, pNamespace, sNamespace.GetPtr());
if( nRc == SUCCESS )
{
nRc = DeleteAndAddClasses(sDeleteAddClassOrder, pNamespace, sNamespace.GetPtr());
if( nRc == SUCCESS )
{
nRc = EnumerateClassesAndCompare(sClassesAfterDeleteAdd, pNamespace, sNamespace.GetPtr());
}
}
}
}
}
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 7
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateSimpleAssociations()
{
int nRc = FATAL_ERROR;
// =====================================================================
// Made into a utility function as it is used more than once
// =====================================================================
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
nRc = OpenNamespaceAndCreateTestClassesAndAssociations( sNamespace,&pNamespace);
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 8
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int QueryAllClassesInTestNamespace()
{
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Made into a utility function as it is used more than once
// =====================================================================
nRc = OpenNamespaceAndCreateTestClassesAndAssociations( sNamespace,&pNamespace);
if( nRc == SUCCESS )
{
//==================================================================
// Query classes in test namespace
//==================================================================
CAutoDeleteString sQueryList;
if( g_Options.GetOptionsForAPITest(sQueryList, APITEST8))
{
ClassList MasterList;
//=======================================================
// Get the list of the queries
//=======================================================
if( InitMasterListOfClasses(sQueryList.GetPtr(),MasterList))
{
for( int i = 0; i < MasterList.Size(); i++ )
{
ClassInfo * p = MasterList.GetAt(i);
CAutoDeleteString sQuery;
if( g_Options.GetSpecificOptionForAPITest(p->Class,sQuery,APITEST8) )
{
//==================================================================
// Regular query
//==================================================================
nRc = QueryAndCompareResults( pNamespace, sQuery.GetPtr(), sNamespace.GetPtr());
if( nRc != S_OK )
{
break;
}
}
}
}
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 9
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateClassInstances()
{
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of classes to get instances for
// =============================================================
CAutoDeleteString sInstanceList;
CAutoDeleteString sInstanceCompareList;
if( g_Options.GetOptionsForAPITest( sInstanceList, sInstanceCompareList, APITEST9 ) )
{
// =========================================================
// Create the instances in the namespace
// =========================================================
nRc = CreateInstances(pNamespace, sInstanceList, sNamespace.GetPtr(), APITEST4 );
if( SUCCESS == nRc )
{
// =====================================================
// Make sure those instances are in the namespace
// =====================================================
nRc = EnumerateInstancesAndCompare(pNamespace, sInstanceList, sInstanceCompareList,sNamespace.GetPtr());
}
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 10
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteClassInstances()
{
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
//==========================================================================
// Delete instances
//==========================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of instances to delete
// =============================================================
CAutoDeleteString sInstanceList;
if( g_Options.GetOptionsForAPITest( sInstanceList, APITEST13 ) )
{
// =========================================================
// Delete the instances in the namespace
// =========================================================
nRc = DeleteInstances(sInstanceList, pNamespace, sNamespace.GetPtr());
if( SUCCESS == nRc )
{
// =====================================================
// Make sure those instances are not in the namespace
// =====================================================
}
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 11
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int EnumerateClassInstances()
{
//==========================================================================
// Get instance enumerator for requested classes
//==========================================================================
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of classes to get instances for
// =============================================================
CAutoDeleteString sInstanceList;
CAutoDeleteString sInstanceCompareList;
if( g_Options.GetOptionsForAPITest( sInstanceList, sInstanceCompareList, APITEST11 ) )
{
// =========================================================
// Make sure those instances are in the namespace
// =========================================================
nRc = EnumerateInstancesAndCompare(pNamespace, sInstanceList, sInstanceCompareList, sNamespace.GetPtr());
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 12
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int CreateAssociationInstances()
{
//==========================================================================
// Get instance enumerator for requested classes
//==========================================================================
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of classes to get instances for
// =============================================================
CAutoDeleteString sInstanceList;
CAutoDeleteString sInstanceCompareList;
if( g_Options.GetOptionsForAPITest( sInstanceList, sInstanceCompareList, APITEST12 ) )
{
// =========================================================
// Create the instances in the namespace
// =========================================================
nRc = CreateInstances(pNamespace, sInstanceList, sNamespace.GetPtr(), APITEST4 );
if( SUCCESS == nRc )
{
// =====================================================
// Make sure those instances are in the namespace
// =====================================================
nRc = EnumerateInstancesAndCompare(pNamespace, sInstanceList, sInstanceCompareList,sNamespace.GetPtr());
}
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 13
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteAssociationInstances()
{
//==========================================================================
// Delete instances
//==========================================================================
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of instances to delete
// =============================================================
CAutoDeleteString sInstanceList;
if( g_Options.GetOptionsForAPITest( sInstanceList, APITEST13 ) )
{
// =========================================================
// Delete the instances in the namespace
// =========================================================
nRc = DeleteInstances(sInstanceList, pNamespace, sNamespace.GetPtr());
if( SUCCESS == nRc )
{
// =====================================================
// Make sure those instances are not in the namespace
// =====================================================
}
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 14
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int EnumerateAssociationInstances()
{
//==========================================================================
// Get instance enumerator for requested classes
//==========================================================================
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of classes to get instances for
// =============================================================
CAutoDeleteString sInstanceList;
CAutoDeleteString sInstanceCompareList;
if( g_Options.GetOptionsForAPITest( sInstanceList, sInstanceCompareList, APITEST14 ) )
{
// =========================================================
// Make sure those instances are in the namespace
// =========================================================
nRc = EnumerateInstancesAndCompare(pNamespace, sInstanceList, sInstanceCompareList, sNamespace.GetPtr());
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 15
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int DeleteClassDeletesInstances()
{
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 16
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetObjects()
{
//==========================================================================
// 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;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
// =============================================================
// Get the list of objexts to get
// =============================================================
CAutoDeleteString sObjects;
if( g_Options.GetOptionsForAPITest( sObjects, APITEST16 ) )
{
// =========================================================
// Get the requested objects
// =========================================================
nRc = GetSpecificObjects(sObjects, pNamespace, sNamespace.GetPtr());
}
}
// =====================================================================
// Release the pointers
// =====================================================================
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 17
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetClassMethods()
{
// =====================================================================
// Getting a list of Methods for a class
// =====================================================================
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
}
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//*****************************************************************************************************************
// Test 18
//*****************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
int GetInstanceMethods()
{
// =====================================================================
// Getting a list of Methods for an instance
// =====================================================================
int nRc = FATAL_ERROR;
CAutoDeleteString sNamespace;
IWbemServices * pNamespace = NULL;
// =====================================================================
// Open the namespace and create all of the test classes, this happens
// a lot, so is is a utility function
// =====================================================================
nRc = OpenNamespaceAndCreateTestClasses( sNamespace, &pNamespace );
if( nRc == SUCCESS )
{
}
SAFE_RELEASE_PTR(pNamespace);
return nRc;
}