[BACK] Return to TestMakefile CVS log [TXT][DIR] Up to [Pegasus] / pegasus

File: [Pegasus] / pegasus / TestMakefile (download)
Revision 1.78.4.1, Fri Dec 14 20:47:54 2007 UTC (16 years, 4 months ago) by dave.sudlik
Branch: RELEASE_2_6-branch
CVS Tags: TASK-BUG7240-root, TASK-BUG7240-branch, RELEASE_2_6_3-RC2, RELEASE_2_6_3-RC1, RELEASE_2_6_3, RELEASE_2_6_2-RC1, RELEASE_2_6_2, RELEASE_2_6-branch-clean
Changes since 1.78: +38 -0 lines
BUG#: 7153
TITLE: Add timeout for idle connections (2.6 branch)

DESCRIPTION: Committing approved fix

#//%2006////////////////////////////////////////////////////////////////////////
#//
#// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development
#// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.
#// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;
#// IBM Corp.; EMC Corporation, The Open Group.
#// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;
#// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.
#// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;
#// EMC Corporation; VERITAS Software Corporation; The Open Group.
#// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;
#// EMC Corporation; Symantec Corporation; The Open Group.
#//
#// Permission is hereby granted, free of charge, to any person obtaining a copy
#// of this software and associated documentation files (the "Software"), to
#// deal in the Software without restriction, including without limitation the
#// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
#// sell copies of the Software, and to permit persons to whom the Software is
#// furnished to do so, subject to the following conditions:
#// 
#// THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN
#// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED
#// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT
#// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
#// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
#// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
#// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
#// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
#//
#//==============================================================================
###############################################################################
##
## Test Makefile for Pegasus CIMOM
##
## see the usage rule for documentation of rules etc.
##
##
###############################################################################

error:
        @ $(ECHO) "Specify desired makefile option (i.e., unittests, usage )"

include $(PEGASUS_ROOT)/mak/config.mak
include $(PEGASUS_ROOT)/mak/test.mak
include $(PEGASUS_ROOT)/mak/commands.mak

system = localhost

.PHONY: FORCE

FORCE:

usage: FORCE
        $(USAGE)
        $(USAGE)"TestMakefile Primary Targets:"
        $(USAGE)
        $(USAGE)"The following are all standalone tests. They stop and start the server,"
        $(USAGE)"and build repositories as needed."
        $(USAGE)
        $(USAGE)"alltests           - Execute unittests and servertests"
        $(USAGE)"unittests          - Execute the unit functional tests - no repository"
        $(USAGE)"                     or active server is required"
        $(USAGE)"servertests        - Execute a basic server test suites (No security, No SSL)"
        $(USAGE)"standardtests      - Execute an extended server test suites "
        $(USAGE)"                     using multiple options."
        $(USAGE)"perftests          - Executes a brief server performance test"
        $(USAGE)
        $(USAGE)"usage2             - usage on secondary test targets"
        $(USAGE)"usagetrace         - usage on trace targets"
        $(USAGE)"stresstests        - Execute the default stress test suite"
        $(USAGE)

usage2: FORCE
        $(USAGE)
        $(USAGE)"TestMakefile Secondary Targets:"
        $(USAGE)
        $(USAGE)"The following are run as part of the Primary target test suites and may"
        $(USAGE)"also be invoked as standalone tests."
        $(USAGE)
        $(USAGE)"TestXMLRepository       - Executes poststarttests on XML repository"
        $(USAGE)"                          built with cimmofl."
        $(USAGE)"TestXMLRepositoryServer - Executes poststarttests on XML repository" 
        $(USAGE)"                          built with cimmof."
        $(USAGE)"TestXMLCmpRepository    - Executes poststarttests on XML compressed"
        $(USAGE)"                          repository built with cimmofl."
        $(USAGE)"TestBinRepository       - Executes poststarttests on binary repository "
        $(USAGE)"                          built with cimmofl."
        $(USAGE)"TestBinRepositoryServer - Executes poststarttests on binary repository"
        $(USAGE)"                          built with cimmof."
        $(USAGE)"TestBinCmpRepository    - Executes poststarttests on binary compressed"
        $(USAGE)"                          repository built with cimmofl."
        $(USAGE)
        $(USAGE)"The following require the repository to be pre-built."
        $(USAGE)
        $(USAGE)"run_SSL_TS1             - Executes the SSL tests"
        $(USAGE)"run_OOP_TS1             - Executes the Out Of Process Provider tests"
        $(USAGE)"run_G11N_TS1            - Executes the Globalization tests"
        $(USAGE)
        $(USAGE)"The following require the repository to be pre-built and the server to be started."
        $(USAGE)
        $(USAGE)"serversuite             - the collection of test run by the servertests rule"
        $(USAGE)"run_STRESS_TS1          - Executes the stresstests"
        $(USAGE)"slptests                - Executes the slptests"
        $(USAGE)


##########################################################
#
# rules that are defined in Makefile
#
##########################################################

build: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile build

world: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile world

new: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile new

clean: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile clean

depend: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile depend

###############################################################################
#   mak/certificate_test.mak implements three key functions for
#   testing Certificate-Based Authentication (CBA).
#   
#   setupCBATestCertificates is used to create a set of test certificates
#       make -f TestMakefile setupCBATestCertificates
#
#   runCBATestSuites is used to run a set of CBA tests
#       make -f TestMakefile runCBATestSuites
#
#   cleanupCBATestCertificates can be used to remove the test certificates
#       make -f TestMakefile cleanupCBATestCertificates
###############################################################################
include $(PEGASUS_ROOT)/mak/certificate_test.mak

############################################################
#
# rules defined here
#
############################################################

##
## Although the macros CIMSERVER_STOP_SERVICE and CIMSERVER_START_SERVICE
## are available and could be invoked directly, their direct usage is
## discouraged in favor of invoking the cimstop and the cimstart rules
## as this allows one place where additional checks, delays etc may be 
## added in the future to control or further test the servers performance
## in executing these commands.
##

#######################
#
# doc
#
doc:
        $(MAKE) --directory=$(PEGASUS_ROOT)/doc/ProviderSpec -f Makefile
        $(MAKE) --directory=$(PEGASUS_ROOT)/doc/DevManual -f Makefile


#######################
#
# repositoryServer
#
repositoryServer: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        $(SLEEP) 5
        $(RMDIRHIER) $(REPOSITORY_ROOT)
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstart
        $(SLEEP) 5
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repositoryServer
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepositoryServer

######################
#
# prestarttests is being deprecated since poststarttest is being deprecated
# in favor of name more related to its intended functionality. 
#
prestarttests: prestarttests_msg shortsleep unittests

prestarttests_msg: FORCE
        @$(ECHO) "=============================================================================="
        @$(ECHO) "TestMakefile: The \"prestarttests\" rule is being deprecated."
        @$(ECHO) "              Use \"make testusage\" for a description of the usage model."        
        @$(ECHO) "              The equivalent new rule is \"unittests\"."  
        @$(ECHO) "              Invoking the \"unittests\" rule now."
        @$(ECHO) "=============================================================================="

####################
#
# poststarttests is being deprecated since it multiply defines a 
# recursive make rule leading to ambuguity and confusion.
#
poststarttests: poststarttests_msg shortsleep servertests 

poststarttests_msg: FORCE
        @$(ECHO) "==============================================================================="
        @$(ECHO) "TestMakefile: The \"posstarttests\" rule is being deprecated.."  
        @$(ECHO) "              Use \"make testusage\" for a description of the usage model."        
        @$(ECHO) "              The equivalent new rule is \"servertests\"."  
        @$(ECHO) "              Invoking the \"servertests\" rule now."
        @$(ECHO) "==============================================================================="

#####################
#
# tests is being deprecated since it multiply defines a 
# recursive make rule leading to ambuguity and confusion.
#
tests: tests_msg shortsleep alltests

tests_msg: FORCE
        @$(ECHO) "==================================================================="
        @$(ECHO) "TestMakefile: The \"tests\" rule is being deprecated."
        @$(ECHO) "              Use \"make testusage\" for a description of the usage model."        
        @$(ECHO) "              The equivalent new rule is \"alltests\"."  
        @$(ECHO) "              Invoking the \"alltests\" rule now."
        @$(ECHO) "==================================================================="


shortsleep: FORCE
        @$(SLEEP) 5

####################
#
# unittests
#
unittests: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile tests
        @ $(ECHO) "+++++ TestMakefile unittests complete"

#####################
#
# servertests
#

servertestsclean: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Pegasus/CQL/tests/Queries -f Makefile clean
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Pegasus/Query/QueryExpression/tests/Queries -f Makefile clean
        $(MAKE) --directory=$(PEGASUS_ROOT)/test/wetest -f Makefile clean

servertestssetup: FORCE
ifdef PEGASUS_HAS_SSL
#
# The association between user names and certificates is stored in the 
# repository.  If the repository is recreated, we also need to re-initialize
# the trust store directories. Otherwise, the truststore content will be 
# out-of-sync with the mapping stored in the repository.
#
#  NOTE: Tests that require their own test namespaces to run poststarttests
#  should add their namespace creation make commands to pegasus/Makefile
#  under the testrepository tag.
#
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile removeSSLTrustDirectories
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile createSSLTrustDirectories
endif
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repository
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepository
        @$(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile \
            cleanupCBATestCertificates
        @$(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile \
            setupCBATestCertificates
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile cimstart
        $(SLEEP) 5
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile ConfigureUsers
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile Create_SSL_Certificate
ifeq ($(PEGASUS_TEST_SDK),true)
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/SDK/samples -f Makefile setupSDK 
endif

# slptests are run under separate target because these testcases require that
# both the cimserver and SLP are running. There is no need for special options
# while starting cimserver.
slptests:
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/slp/tests/slptests -f Makefile slptests
        @ $(ECHO) "+++++ TestMakefile slp test suite completed"

servertests: servertestsclean servertestssetup serversuite
        @ $(ECHO) "+++++ TestMakefile servertests suites complete"

serversuite: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile poststarttests
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestBinRepository
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_Cimsub_InterOp
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_OOP_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_IndInit_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_OOPProvFail_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_OOPProvFail_TS2
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_OOPProvFail_TS3
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_INDSSL_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_SSL_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_G11N_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile runCBATestSuites
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_SDK_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_ExportClientSSL_TS1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_idleConnectionTimeout1
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_idleConnectionTimeout2

#####################
#
# stresstests
#
stresstests:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile run_STRESS_TS1

####################
#
# perftests - simple performance test until we have better
#
# - Turns statistics on (uses TestInterop until we have better)
# - runs poststarttests suite and benchmarkTest
# - runs cimperf to displat the statistics
# - turns statistics off 
#
perftests: servertestsclean servertestssetup perfsuite

perfsuite: FORCE
        $(PEGASUS_HOME)/bin/TestInterop on
        $(TIME_CMD) $(MAKE) --directory=$(PEGASUS_ROOT)/test/wetest -f Makefile poststarttests
        @ $(ECHO) " "
        $(TIME_CMD) $(PEGASUS_HOME)/bin/TestClient
        @ $(ECHO) " "
        $(TIME_CMD) $(PEGASUS_HOME)/bin/benchmarkTest
        @ $(ECHO) " "
        @ $(ECHO) " "
        $(TIME_CMD) $(PEGASUS_HOME)/bin/cimperf
        @ $(ECHO) " "
        $(PEGASUS_HOME)/bin/TestInterop off


####################
#
# alltests
#
alltests: unittests servertests
ifeq ($(PEGASUS_PLATFORM),WIN32_IX86_MSVC)
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile uninstall
endif
        @ $(ECHO) "+++++ TestMakefile alltests Complete"

###############################################################################
##  Test Suite Definitions
###############################################################################

###############################################################################
##  OOP Test Suite 1: "Out-of-Process"(OOP) Provider Tests 
##
##  Configuration Options: forceProviderProcesses=true
##
##  If PEGASUS_DEFAULT_ENABLE_OOP is set, then tests are run with OOP disabled
##  since tests have already been run with OOP enabled.
##
##
###############################################################################
ifeq ($(PEGASUS_DEFAULT_ENABLE_OOP),true)
OOP_TS1_CONFIG_OPTIONS = forceProviderProcesses=false
else
OOP_TS1_CONFIG_OPTIONS = forceProviderProcesses=true
endif

OOP_TS1_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)@@Makefile@@-s@@poststarttests

run_OOP_TS1:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOP_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOP_TS1_TEST_CMDS)"

###############################################################################

###############################################################################
##  IndInit Test Suite 1: IndicationService Initialization Tests 
##
##  Configuration Options: (none)
##
###############################################################################
IndInit_TS1_CONFIG_OPTIONS = 
IndInit_TS1a_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Pegasus/IndicationService/tests/ProcessIndication@@IndInit_TS1a
IndInit_TS1b_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Pegasus/IndicationService/tests/ProcessIndication@@IndInit_TS1b

run_IndInit_TS1:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(IndInit_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(IndInit_TS1a_TEST_CMDS)"
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(IndInit_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(IndInit_TS1b_TEST_CMDS)"

###############################################################################
##  OOPProvFail Test Suite 1: OOP Provider Module Failure Tests
##
##  Configuration Options: forceProviderProcesses=true
##  enableAuthentication=true, enableAuthentication=false
##
##  NOTE: Regardless of the setting of PEGASUS_DEFAULT_ENABLE_OOP, this test
##  suite is always run with OOP enabled.  This test suite causes a provider to
##  exit.  Running this test suite with OOP disabled would cause the cimserver
##  to exit and the test suite to fail.
##
##  NOTE: The test is run once with authentication enabled, and once without
##  authentication enabled.
##
###############################################################################
OOPProvFail_TS1a_CONFIG_OPTIONS = forceProviderProcesses=true enableAuthentication=true
OOPProvFail_TS1b_CONFIG_OPTIONS = forceProviderProcesses=true enableAuthentication=false
OOPProvFail_TS1_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/OOPModuleFailureProvider/testclient@@OOPProvFail_TS1

ifndef PEGASUS_DISABLE_PRIVILEGED_TESTS
run_OOPProvFail_TS1:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOPProvFail_TS1a_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOPProvFail_TS1_TEST_CMDS)"
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOPProvFail_TS1b_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOPProvFail_TS1_TEST_CMDS)"
else
run_OOPProvFail_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping run_OOPProvFail_TS1"
endif

###############################################################################
##  OOPProvFail Test Suite 2: OOP Provider Module Failure on IndicationService 
##                            Initialization Tests
##
##  Configuration Options: forceProviderProcesses=true
##                         enableAuthentication=true
##
##  NOTE: Regardless of the setting of PEGASUS_DEFAULT_ENABLE_OOP, this test
##  suite is always run with OOP enabled.  This test suite causes a provider to
##  exit.  Running this test suite with OOP disabled would cause the cimserver
##  to exit and the test suite to fail.
##
###############################################################################
OOPProvFail_TS2_CONFIG_OPTIONS = forceProviderProcesses=true enableAuthentication=true
OOPProvFail_TS2a_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/OOPModuleFailureProvider/testclient@@OOPProvFail_TS2a
OOPProvFail_TS2b_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/OOPModuleFailureProvider/testclient@@OOPProvFail_TS2b

ifndef PEGASUS_DISABLE_PRIVILEGED_TESTS
run_OOPProvFail_TS2:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOPProvFail_TS2_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOPProvFail_TS2a_TEST_CMDS)"
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOPProvFail_TS2_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOPProvFail_TS2b_TEST_CMDS)"
else
run_OOPProvFail_TS2: FORCE
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping run_OOPProvFail_TS2"
endif

###############################################################################
##  OOPProvFail Test Suite 3: OOP Provider Module Failure CIM Server restart
##                            Tests
##
##  Configuration Options: forceProviderProcesses=true
##                         enableAuthentication=true
##
##  NOTE: Regardless of the setting of PEGASUS_DEFAULT_ENABLE_OOP, this test
##  suite is always run with OOP enabled.  This test suite causes a provider to
##  exit.  Running this test suite with OOP disabled would cause the cimserver
##  to exit and the test suite to fail.
##
###############################################################################
OOPProvFail_TS3_CONFIG_OPTIONS = forceProviderProcesses=true enableAuthentication=true
OOPProvFail_TS3a_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/OOPModuleFailureProvider/testclient@@OOPProvFail_TS3a
OOPProvFail_TS3b_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/OOPModuleFailureProvider/testclient@@OOPProvFail_TS3b

ifndef PEGASUS_DISABLE_PRIVILEGED_TESTS
run_OOPProvFail_TS3:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOPProvFail_TS3_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOPProvFail_TS3a_TEST_CMDS)"
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(OOPProvFail_TS3_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(OOPProvFail_TS3b_TEST_CMDS)"
else
run_OOPProvFail_TS3: FORCE
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping run_OOPProvFail_TS3"
endif

###############################################################################
##  Indication SSL Test Suite 1: Indication Testing over HTTPS
##
##  Configuration Options: (none)
##
###############################################################################
INDSSL_TS1a_CONFIG_OPTIONS = enableHttpsConnection=true enableAuthentication=false
INDSSL_TS1a_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/IndicationStressTestProvider/testclient@@-f@@Makefile@@run_TS1_AuthenticationDisabled

INDSSL_TS1b_CONFIG_OPTIONS = enableHttpsConnection=true enableAuthentication=true sslClientVerificationMode=required
INDSSL_TS1b_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Providers/TestProviders/IndicationStressTestProvider/testclient@@-f@@Makefile@@run_TS1_AuthenticationEnabled


ifdef PEGASUS_HAS_SSL
ifndef PEGASUS_DISABLE_PRIVILEGED_TESTS
run_INDSSL_TS1: EnableUsers Create_SSL_Certificate_ignore
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(INDSSL_TS1a_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(INDSSL_TS1a_TEST_CMDS)"
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(INDSSL_TS1b_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(INDSSL_TS1b_TEST_CMDS)"
else
run_INDSSL_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping run_INDSSL_TS1"        
endif
else
run_INDSSL_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_HAS_SSL not defined: Skipping run_INDSSL_TS1"
endif


###############################################################################
 
###############################################################################
##  SSL Test Suite 1: SSL Tests
##
##  Configuration Options: enableAuthentication=true
##                         enableHttpsConnection=true
##                         sslClientVerificationMode=optional
##                         sslTrustStoreUserName=$(CURRENT_USER)
##
###############################################################################
SSL_TS1_CONFIG_OPTIONS = enableHttpsConnection=true enableAuthentication=true \
       sslClientVerificationMode=optional sslTrustStoreUserName=$(CURRENT_USER)
SSL_TS1_TEST_CMDS = \
       $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Clients/cimtrust/tests@@SSLCertificateTest1
SSL_TS2_TEST_CMDS = \
       $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Clients/cimcrl/tests@@SSLCRLTest1

ifdef PEGASUS_HAS_SSL
ifndef PEGASUS_DISABLE_PRIVILEGED_TESTS
run_SSL_TS1: FORCE
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(SSL_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(SSL_TS1_TEST_CMDS)"
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(SSL_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(SSL_TS2_TEST_CMDS)"
else
run_SSL_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping run_SSL_TS1"        
endif
else
run_SSL_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_HAS_SSL not defined: Skipping run_SSL_TS1 poststarttest"

endif

############################################################################
# 
# Create_SSL_Certificate
#
# create a certificate that can be used for certification testing.
# It is currently used by the following tests:
#            -run_INDSSL_TS1
#
Create_SSL_Certificate_ignore: FORCE
        -$(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile Create_SSL_Certificate

Create_SSL_Certificate: FORCE
ifdef PEGASUS_HAS_SSL
ifdef PEGASUS_TEST_USER_DEFINED
        $(ECHO) "Creating SSL certificate for test"
        cimtrust -a -U $(PEGASUS_TEST_USER_ID) -f $(PEGASUS_HOME)/server.pem -Ts
endif
else
        $(ECHO) "PEGASUS_HAS_SSL not defined - Not Creating SSL certificate for test"
endif

###############################################################################
##  G11N Test Suite 1: Globalization Tests 
##
##  Configuration Options: forceProviderProcesses=false
##
###############################################################################
G11N_TS1_CONFIG_OPTIONS = forceProviderProcesses=false
G11N_TS1_TEST_CMDS = \
        $(MAKE) --directory $(PEGASUS_ROOT)/src/Clients/g11ntest \
            -f Makefile g11ntest

run_G11N_TS1:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(G11N_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(G11N_TS1_TEST_CMDS)"

###############################################################################
##  Stress Test Suite 1:  Default Stress Tests
##
##  Configuration Options: (none)
##
###############################################################################
STRESS_TS1_CONFIG_OPTIONS =
STRESS_TS1_TEST_CMDS = \
        TestStressTestController

run_STRESS_TS1:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(STRESS_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(STRESS_TS1_TEST_CMDS)"
###############################################################################

###############################################################################
##  SDK Test Suite 1:  SDK Tests
##
##  Configuration Options: (none)
##
###############################################################################
SDK_TS1_CONFIG_OPTIONS =
SDK_TS1_TEST_CMDS = \
        $(MAKE) --directory $(PEGASUS_ROOT)/src/SDK/samples \
            -f Makefile testSDK 

ifeq ($(PEGASUS_TEST_SDK),true)
run_SDK_TS1: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT)/mak \
            -f $(PEGASUS_ROOT)/mak/SDKMakefile stageINCLUDE \
            PEGASUS_STAGING_DIR=$(PEGASUS_HOME) \
            PEGASUS_INCLUDE_DIR=/include
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/SDK/samples \
            -f Makefile clean
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/SDK/samples \
            -f Makefile PEGASUS_INCLUDE_DIR=$(PEGASUS_HOME)/include
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(SDK_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(SDK_TS1_TEST_CMDS)"
else
run_SDK_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_TEST_SDK is not true: Skipping run_SDK_TS1"        
endif
###############################################################################

###############################################################################
##  Export Client SSL Test Suite 1:
##
##  Configuration Options: enableHttpsConnection=true
##
###############################################################################
ExportClientSSL_TS1_CONFIG_OPTIONS = enableHttpsConnection=true
ExportClientSSL_TS1_TEST_CMDS = \
        $(MAKE)@@--directory=$(PEGASUS_ROOT)/src/Pegasus/ExportClient/tests/ExportClient@@-f@@Makefile@@runExportClientSSL_TS1

ifdef PEGASUS_HAS_SSL
run_ExportClientSSL_TS1:
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(ExportClientSSL_TS1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(ExportClientSSL_TS1_TEST_CMDS)"
else
run_ExportClientSSL_TS1: FORCE
        @ $(ECHO) "+++++ PEGASUS_HAS_SSL not defined: Skipping run_ExportClientSSL_TS1"
endif

###############################################################################



###############################################################################
##  idleConnectionTimeout Test Suite 1:  uses ChunkingStressProvider Tests
##
##  Configuration Options: idleConnectionTime=55
##
###############################################################################
IDLE_CONNECTION_TIMEOUT_1_CONFIG_OPTIONS = idleConnectionTimeout=55
IDLE_CONNECTION_TIMEOUT_1_TEST_CMDS = \
        $(MAKE)@@--directory \
            $(PEGASUS_ROOT)/src/Providers/TestProviders/ChunkingStressProvider/testclient \
            -f@@Makefile@@poststarttests
run_idleConnectionTimeout1: FORCE
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(IDLE_CONNECTION_TIMEOUT_1_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(IDLE_CONNECTION_TIMEOUT_1_TEST_CMDS)"
###############################################################################


###############################################################################
##  idleConnectionTimeout Test Suite 2:  uses IdleConnectionTimeout client test
##
##  Configuration Options: idleConnectionTime=6
##
###############################################################################
IDLE_CONNECTION_TIMEOUT_2_CONFIG_OPTIONS = idleConnectionTimeout=6
IDLE_CONNECTION_TIMEOUT_2_TEST_CMDS = \
        $(MAKE)@@--directory \
            $(PEGASUS_ROOT)/src/Pegasus/Client/tests/IdleConnectionTimeout/ \
            -f@@Makefile@@timeoutTest@@IDLETIME=10
run_idleConnectionTimeout2: FORCE
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(IDLE_CONNECTION_TIMEOUT_2_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(IDLE_CONNECTION_TIMEOUT_2_TEST_CMDS)"
###############################################################################


###############################################################################
##  cimsub CLI Test Suite 1:  PG_InterOp Tests
##
##  Configuration Options: (none)
##
###############################################################################
CIMSUB_INTEROP_CONFIG_OPTIONS =
CIMSUB_INTEROP_TEST_CMDS = \
        $(MAKE) --directory \
            $(PEGASUS_ROOT)/src/Clients/cimsub/tests/testscriptInterOp \
            -f Makefile cimsubTest_InterOp
run_Cimsub_InterOp: FORCE
        $(MAKE) -f $(PEGASUS_ROOT)/TestMakefile runTestSuite \
            CIMSERVER_CONFIG_OPTIONS="$(CIMSUB_INTEROP_CONFIG_OPTIONS)" \
            TESTSUITE_CMDS="$(CIMSUB_INTEROP_TEST_CMDS)"
###############################################################################

###############################################################################



##############################################################################
##
## TestXMLRepository rule is used to run the poststarttests suite on
## the XML Repository built using cimmofl
##
## TestXMLRepositoryServer rule is used to run the poststarttests suite on
## the XML Repository built using cimmof
##
## TestXMLCmpRepository rule is used to run the poststarttest suite on 
## the XML Compressed Repository built using cimmofl
##

############################
##
## TestXMLRepository
##

TestXMLRepository: TestXMLClean TestXMLBuildRepo  TestXMLRepo
        @ $(ECHO) TestXMLRepository +++++ passed all test

############################
##
## TestXMLRepositoryServer
##
TestXMLRepositoryServer: TestXMLClean  TestXMLBuildRepoServ TestXMLRepo
        @ $(ECHO) TestXMLRepositoryServer +++++ passed all test

############################
##
## TestXMLCmpRepository -  run poststarttest on Compressed BIN Repository
##
ifdef PEGASUS_ENABLE_COMPRESSED_REPOSITORY
TestXMLCmpRepository: FORCE
        @ $(ECHO) TestXMLCmpRepository +++++ Repository compressed by default - nothing more to test.
        @ $(ECHO) TestXMLCmpRepository +++++ passed all test
else

ifdef PEGASUS_ENABLE_COMPRESSED_REPOSITORY_TEST

TestXMLCmpRepository: TestXMLClean  TestCmpBuild TestXMLBuildRepo TestXMLRepo TestRegBuild
        @ $(ECHO) TestXMLCmpRepository +++++ passed all test
else
TestXMLCmpRepository: FORCE
        @ $(ECHO) TestXMLCmpRepository +++++ Not tested 
        @ $(ECHO) TestXMLCmpRepository +++++ refer to readme.compressed_repository
        @ $(ECHO) TestXMLCmpRepository +++++ to enable: set PEGASUS_ENABLE_COMPRESSED_REPOSITORY_TEST=true 
endif
endif

###########################
##
## TestXMLClean
##
TestXMLClean: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop 
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repositoryclean REPOSITORY_NAME=repository_xml


###########################
##
## TestXMLStartServer
##
TestXMLStartServer: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile install_run
        - $(MKDIRHIER) $(PEGASUS_HOME)/repository_xml
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstart CIMSERVER_CONFIG_OPTIONS="repositoryDir=$(PEGASUS_HOME)/repository_xml"
        $(SLEEP) 5

####
#### The following caused the cimserver to fail on startup
####
####    $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstart CIMSERVER_CONFIG_OPTIONS="enableBinRepository=false repositoryDir=$(PEGASUS_HOME)/repository_xml"

###########################
##
## TestXMLBuildRepo
##
TestXMLBuildRepo: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repository REPOSITORY_NAME=repository_xml REPOSITORY_MODE=XML
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepository REPOSITORY_NAME=repository_xml REPOSITORY_MODE=XML


###########################
##
## TestXMLBuildRepoServ
##
TestXMLBuildRepoServ: TestXMLStartServer
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repositoryServer REPOSITORY_NAME=repository_xml REPOSITORY_MODE=XML
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepositoryServer REPOSITORY_NAME=repository_xml REPOSITORY_MODE=XML
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop 


###########################
##
## TestXMLRepo
##
TestXMLRepo: servertestsclean
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestXMLStartServer
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile poststarttests REPOSITORY_NAME=repository_xml REPOSITORY_MODE=XML
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop 






##############################################################################
##
## TestBinRepository rule is used to run the poststarttests suite on
## the Binary Repository built using cimmofl
##
## TestBinRepositoryServer rule is used to run the poststarttests suite on
## the Binary Repository built using cimmof
##
## TestBinCmpRepository rule is used to run the poststarttest suite on 
## the Binry Compressed Repository built using cimmofl
##

############################
##
## TestBinRepository
##
### bug 3011 disabled Binary Repository testing on LINUX_IA64 to allow
### the nightly tests to run

TestBinRepository: TestBinClean TestBinBuildRepo  TestBinRepo
        @ $(ECHO) TestBinRepository +++++ passed all test


############################
##
## TestBinRepositoryServer
##
TestBinRepositoryServer: TestBinClean  TestBinBuildRepoServ TestBinRepo
        @ $(ECHO) TestBinRepositoryServer +++++ passed all test

############################
##
## TestBinCmpRepository -  run poststarttest on Compressed BIN Repository
##
ifdef PEGASUS_ENABLE_COMPRESSED_REPOSITORY
TestBinCmpRepository: FORCE
        @ $(ECHO) TestBinCmpRepository +++++ Repository compressed by default - nothing more to test.
        @ $(ECHO) TestBinCmpRepository +++++ passed all test
else

ifdef PEGASUS_ENABLE_COMPRESSED_REPOSITORY_TEST

TestBinCmpRepository: TestBinClean  TestCmpBuild TestBinBuildRepo TestBinRepo TestRegBuild
        @ $(ECHO) TestBinCmpRepository +++++ passed all test
else
TestBinCmpRepository: FORCE
        @ $(ECHO) TestBinCmpRepository +++++ Not tested 
        @ $(ECHO) TestBinCmpRepository +++++ refer to readme.compressed_repository
        @ $(ECHO) TestBinCmpRepository +++++ to enable: set PEGASUS_ENABLE_COMPRESSED_REPOSITORY_TEST=true 
endif
endif


###########################
##
## TestBinClean
##
TestBinClean: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop 
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repositoryclean REPOSITORY_NAME=repository_bin


###########################
##
## TestBinStartServer
##
TestBinStartServer: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT)/src/Server -f Makefile install_run
        - $(MKDIRHIER) $(PEGASUS_HOME)/repository_bin
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstart CIMSERVER_CONFIG_OPTIONS="enableBinaryRepository=true repositoryDir=$(PEGASUS_HOME)/repository_bin"
        $(SLEEP) 5

###########################
##
## TestBinBuildRepo
##
TestBinBuildRepo: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repository REPOSITORY_NAME=repository_bin REPOSITORY_MODE=BIN
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepository REPOSITORY_NAME=repository_bin REPOSITORY_MODE=BIN


###########################
##
## TestBinBuildRepoServ
##
TestBinBuildRepoServ: TestBinStartServer
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repositoryServer REPOSITORY_NAME=repository_bin REPOSITORY_MODE=BIN
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepositoryServer REPOSITORY_NAME=repository_bin REPOSITORY_MODE=BIN
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop 


###########################
##
## TestBinRepo
##
TestBinRepo: servertestsclean 
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestBinStartServer
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile poststarttests REPOSITORY_NAME=repository_bin REPOSITORY_MODE=BIN
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop 




############################
##
## TestCmpBuild - used to compile the repository for compression
##
TestCmpBuild: FORCE
        @ $(MAKE) "-SC" $(ROOT)/src/Pegasus/Repository clean
        @ $(MAKE) "-SC" $(ROOT)/src/Pegasus/Repository depend PEGASUS_ENABLE_COMPRESSED_REPOSITORY=1
        @ $(MAKE) "-SC" $(ROOT)/src/Pegasus/Repository PEGASUS_ENABLE_COMPRESSED_REPOSITORY=1


############################
##
## TestRegBuild - used to compile the repository for no compression
##
TestRegBuild: FORCE
        @ $(MAKE) "-SC" $(ROOT)/src/Pegasus/Repository clean
        @ $(MAKE) "-SC" $(ROOT)/src/Pegasus/Repository depend 
        @ $(MAKE) "-SC" $(ROOT)/src/Pegasus/Repository 


###############################################################################
##
## Trace Configuration
##
## Options: see usagetrace rule
##
###############################################################################

usagetrace: FORCE
        $(USAGE)
        $(USAGE)"TestMakefile Trace Commands: "
        $(USAGE)"  The cimserver must be running when using W=c which is the default for W"
        $(USAGE)
        $(USAGE)" traceon  W=[current/planned(c,p):   Enables all tracing."
        $(USAGE)" traceoff W=[current/planned(c,p):   Disables all tracing."
        $(USAGE)" tracesettings:                      Displays all trace settings."
        $(USAGE)" tracecomp:                          Displays a trace componenets list."
        $(USAGE)" traceon-CL C=[comp] L=[level(1,2,3,4)] W=[current/planned(c,p): "
        $(USAGE)"                           Enables tracing on component C at trace level L."
        $(USAGE)
        $(USAGE)" W defaults to c in the above commands where W can be specified" 
        $(USAGE)
        $(USAGE)"  Usage examples:"
        $(USAGE)"   traceon       turns on trace in current server config"
        $(USAGE)"   traceon W=c   turns on trace in current server config"
        $(USAGE)"   traceon W=p   turns on trace in planned server config"
        $(USAGE)"   traceoff      turns on trace in current server config"
        $(USAGE)"   traceoff W=c  turns on trace in current server config"
        $(USAGE)"   traceoff W=p  turns on trace in planned server config"
        $(USAGE)
        $(USAGE)"   traceon-CL C=DiscardedData L=3 W=c"
        $(USAGE)"     Turns on trace for DiscardedData at level 3 in current server config"
        $(USAGE)"   traceon-CL C=DiscardedData L=3 W=p"
        $(USAGE)"     Turns on trace for DiscardedData at level 3 in planned server config"
        $(USAGE)
        $(USAGE)

traceon: FORCE
        @ cimconfig -s traceComponents=ALL -$W 
        @ cimconfig -s traceLevel=3 -$W
        $(MAKE) -f $(ROOT)/TestMakefile tracesettings


traceoff: FORCE
        @ cimconfig -s traceComponents=  -$W
        $(MAKE) -f $(ROOT)/TestMakefile tracesettings


tracesettings: FORCE
        @ $(ECHO) " "
        cimconfig -g traceComponents -c -p
        @ $(ECHO) " "
        cimconfig -g traceLevel -c -p
        @ $(ECHO) " "
        cimconfig -g traceFilePath -c -p
        @ $(ECHO) " "

traceon-CL: FORCE
        @ cimconfig -s traceComponents=$C -$W
        @ cimconfig -s traceLevel=$L -$W
        $(MAKE) -f $(ROOT)/TestMakefile tracesettings

tracecomp: FORCE
        $(USAGE)
        $(USAGE)"Trace component list:"
        $(USAGE)
        $(USAGE)"Channel"
        $(USAGE)"XmlParser"
        $(USAGE)"XmlWriter"
        $(USAGE)"XmlReader"
        $(USAGE)"XmlIO"
        $(USAGE)"Http"
        $(USAGE)"CimData"
        $(USAGE)"ProvManager"
        $(USAGE)"Repository"
        $(USAGE)"Dispatcher"
        $(USAGE)"OsAbstraction"
        $(USAGE)"Config"
        $(USAGE)"IndDelivery"
        $(USAGE)"IndHandler"
        $(USAGE)"Authentication"
        $(USAGE)"Authorization"
        $(USAGE)"UserManager"
        $(USAGE)"SubscriptionService"
        $(USAGE)"Registration"
        $(USAGE)"Shutdown"
        $(USAGE)"Server"
        $(USAGE)"IndicationService"
        $(USAGE)"IndicationServiceInternal"
        $(USAGE)"ConfigurationManager"
        $(USAGE)"MessageQueueService"
        $(USAGE)"ProviderManager"
        $(USAGE)"ObjectResolution"
        $(USAGE)"WQL"
        $(USAGE)"CQL"
        $(USAGE)"Thread"
        $(USAGE)"MetaDispatcher"
        $(USAGE)"IPC"
        $(USAGE)"IndicationHandlerService"
        $(USAGE)"CIMExportRequestDispatcher"
        $(USAGE)"Memory"
        $(USAGE)"SSL"
        $(USAGE)"ControlProvider"
        $(USAGE)"AsyncOpNode"
        $(USAGE)"CIMOMHandle"
        $(USAGE)"BinaryMessageHandler"
        $(USAGE)"L10N"
        $(USAGE)"ExportClient"
        $(USAGE)"Listener"
        $(USAGE)"DiscardedData"
        $(USAGE)"ProviderAgent"
        $(USAGE)

###############################################################################
##
## Trace Configuration - Old rules being deprecated
##
## Options:
##      XMLTraceOn: Enables XML request and response tracing.
##      ProviderLoadTraceOn: Enables Provider load tracing.
##      XML+ProviderLoadTraceOn: Enables both XML request/response and Provider
##                                 load tracing.
##      AllTraceOn: Enables all tracing.
##      AllTraceOff: Disables all tracing.
##      list: Lists trace settings.
##
###############################################################################

XMLTraceOn:
        cimconfig -s traceComponents=XmlIO -c
        cimconfig -s traceLevel=3 -c
        cimconfig -g traceComponents
        cimconfig -g traceLevel

ProviderLoadTraceOn:
        cimconfig -s traceComponents=ProvManager,OsAbstraction
        cimconfig -s traceLevel=3 -c
        cimconfig -g traceComponents
        cimconfig -g traceLevel

XML+ProviderLoadTraceOn:
        cimconfig -s traceComponents=XmlIO,ProvManager,OsAbstraction
        cimconfig -s traceLevel=3 -c
        cimconfig -g traceComponents
        cimconfig -g traceLevel

AllTraceOn: traceon

AllTraceOff: traceoff

list: tracesettings

#########################################################################
# standardtests
#
# More testing options...
#
# The standard test seem to contain additional test that may not be able 
# to run on all platforms so they have been grouped here for now rather than
# being included in the serversuite rule.
#
# The test are:
#      TestCimmof
#      TestNoSecurity
#      TestLocalSecurity
#      TestRemoteSecurity
#      TestAuthorization
#
# NOTE: The TestsNoSecurity test is comprised of DisableSecurity and
#       TestNoSecurity.
#
# NOTE: The TestNoSecurity step runs the servertests which builds the
#       the repository that is then left in place for the remaining tests.
#       The cimof test must be before the TestNosecurity step as it removes
#       the repository builds a new one with cimmofl and another one with
#       cimmof and then compares them. 
#
# NOTE: The Authentication test is comprised of EnableAuthentication, 
#       TestLocalSecurity and TestRemoteSecurity. 
#
# NOTE: The Authorization test is comprised of EnableAuthorization and
#       TestAuthorization. 
#
# NOTE: The EnableAuthentication and EnableAuthorization steps require 
#       root access. Pegasus doesn't currently have the infrastructure
#       in place to run the server as root and run the test as non-root.
#       Rather than run everything, server, tests, providers, clients etc.
#       as root many testers prefer to run the tests as non-root. Setting
#       PEGASUS_DISABLE_PRIVILEGED_TESTS in the environment helps to 
#       facilitate that.
#

standardtests: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i DisableSecurity
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestCimmof
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestNoSecurity
ifndef PEGASUS_DISABLE_PRIVILEGED_TESTS
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile EnableAuthentication
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestLocalSecurity
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestRemoteSecurity
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile EnableAuthorization
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile TestAuthorization
else
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping EnableAuthentication, TestLocalSecurity, and TestRemoteSecurity "
        @ $(ECHO) "+++++ PEGASUS_DISABLE_PRIVILEGED_TESTS defined: Skipping EnableAuthorization and TestAuthorization "        
endif
        @ $(ECHO) "+++++ TestMakefile standardtests complete"

TestNoSecurity:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile servertests
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile startcimWithoutSSL
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile RunTestClientLocal

TestLocalSecurity:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile RunTestClientLocal
        $(MAKE) --directory=$(PEGASUS_ROOT)/test/wetest -f Makefile poststarttests HOSTNAME= PORT= USER= PASSWORD= SECURITY_ENABLED=true

TestRemoteSecurity:
        TestClient -user $(PEGASUS_TEST_USER_ID) -password $(PEGASUS_TEST_USER_PASS) $(system):5988
        $(MAKE) --directory=$(PEGASUS_ROOT)/test/wetest/static -f Makefile poststarttests HOSTNAME=-h$(system) USER=-u$(PEGASUS_TEST_USER_ID) PASSWORD=-w$(PEGASUS_TEST_USER_PASS) SECURITY_ENABLED=true

TestAuthorization:
        TestPegClientDeleteNamespace -a -user $(PEGASUS_TEST_USER_ID) -password $(PEGASUS_TEST_USER_PASS)
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile RunTestClientLocal
        TestClient -user $(PEGASUS_TEST_USER_ID) -password $(PEGASUS_TEST_USER_PASS) $(system):5988
        $(MAKE) --directory=$(PEGASUS_ROOT)/test/wetest/static -f Makefile poststarttests HOSTNAME=-h$(system) USER=-u$(PEGASUS_TEST_USER_ID) PASSWORD=-w$(PEGASUS_TEST_USER_PASS) SECURITY_ENABLED=true

TestSubscriptions:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile DisableSecurity
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile repository
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Makefile testrepository
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile startcimWithoutSSL
        $(MAKE) --directory=$(PEGASUS_ROOT)/test/wetest/cimv2/Subscription -f Makefile poststarttests
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile cimstop

TestCimmof:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f Testcimmof poststarttests

RunTestClientLocal:
        TestClient -local

DisableSecurity:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        cimconfig -s enableAuthentication=false -p
        cimconfig -s enableNamespaceAuthorization=false -p

EnableUsers:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile startcimWithoutSSL
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile ConfigureUsers

EnableAuthentication:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        cimconfig -s enableAuthentication=true -p
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile startcimWithoutSSL
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile ConfigureUsers

EnableAuthorization:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        cimconfig -s enableNamespaceAuthorization=true -p
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile startcimWithoutSSL
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i ConfigureAuthorizations

EnableSSL:
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstop
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile startcimWithSSL

#
# ConfigureUsers
#
# The server must be running prior to invoking this rule
#
ConfigureUsers:
ifndef PEGASUS_PAM_AUTHENTICATION
        -cimuser -l
        -cimuser -a -u $(PEGASUS_TEST_USER_ID) -w $(PEGASUS_TEST_USER_PASS)
endif

#
# ConfigureAuthorizations rule
#
# The server must be running prior to invoking this rule
#
ConfigureAuthorizations:
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test/cimv2 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/cimv2 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/PG_Internal -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/PG_InterOp -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/benchmark -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/sampleprovider -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test/static -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/SampleProvider -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/test/A -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n root/test/B -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test/TestProvider -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test1 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test2 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test3 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test4 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test5 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test6 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test1/test2 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test1/test2/test3 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test1/test2/test3/test4 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test1/test2/test3/test4/test5 -R -W
        cimauth -a -u $(PEGASUS_TEST_USER_ID) -n test1/test2/test3/test4/test5/test6 -R -W

startcimWithoutSSL: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstart
        $(SLEEP) 5

startcimWithSSL: FORCE
        $(MAKE) --directory=$(PEGASUS_ROOT) -f TestMakefile -i cimstart CIMSERVER_CONFIG_OPTIONS="enableHttpConnection=false enableHttpsConnection=true"
        $(SLEEP) 5