974 lines
45 KiB
C++
974 lines
45 KiB
C++
|
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||
|
//
|
||
|
// 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;
|
||
|
}
|
||
|
|
||
|
|