[mapguide-commits] r6129 - trunk/MgDev/Server/src/UnitTesting

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Thu Sep 8 01:33:43 EDT 2011


Author: liuar
Date: 2011-09-07 22:33:43 -0700 (Wed, 07 Sep 2011)
New Revision: 6129

Added:
   trunk/MgDev/Server/src/UnitTesting/TestProfilingService.cpp
   trunk/MgDev/Server/src/UnitTesting/TestProfilingService.h
Modified:
   trunk/MgDev/Server/src/UnitTesting/Makefile.am
   trunk/MgDev/Server/src/UnitTesting/UnitTesting.cpp
   trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcproj
   trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcxproj
Log:
The RFC 110 Profiling Service (VIII). 

ProfilingService UnitTest.


Modified: trunk/MgDev/Server/src/UnitTesting/Makefile.am
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/Makefile.am	2011-09-07 12:43:01 UTC (rev 6128)
+++ trunk/MgDev/Server/src/UnitTesting/Makefile.am	2011-09-08 05:33:43 UTC (rev 6129)
@@ -47,6 +47,7 @@
   TestSiteManager.cpp \
   TestSiteService.cpp \
   TestTileService.cpp \
+  TestProfilingService.cpp \
   TestTransformMesh.cpp \
   UnitTesting.cpp
 
@@ -69,6 +70,7 @@
   TestSiteManager.h \
   TestSiteService.h \
   TestTileService.h \
+  TestProfilingService.h \
   TestTransformMesh.h \
   UnitTesting.h
 

Added: trunk/MgDev/Server/src/UnitTesting/TestProfilingService.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestProfilingService.cpp	                        (rev 0)
+++ trunk/MgDev/Server/src/UnitTesting/TestProfilingService.cpp	2011-09-08 05:33:43 UTC (rev 6129)
@@ -0,0 +1,615 @@
+//
+//  Copyright (C) 2011 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#include "MapGuideCommon.h"
+#include "TestProfilingService.h"
+#include "ServiceManager.h"
+#include "ServerSiteService.h"
+#include "StylizationDefs.h"
+#include "../Common/Manager/FdoConnectionManager.h"
+#include "FoundationDefs.h"
+const STRING TEST_LOCALE = L"en";
+
+CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(TestProfilingService, "TestProfilingService");
+
+
+TestProfilingService::TestProfilingService()
+{
+    // Initialize service objects.
+    MgServiceManager* serviceManager = MgServiceManager::GetInstance();
+
+    m_svcResource = dynamic_cast<MgResourceService*>(
+        serviceManager->RequestService(MgServiceType::ResourceService));
+    assert(m_svcResource != NULL);
+
+    m_svcProfiling = dynamic_cast<MgProfilingService*>(
+        serviceManager->RequestService(MgServiceType::ProfilingService));
+    assert(m_svcProfiling != NULL);
+
+    // Initialize a site connection.
+    Ptr<MgServerSiteService> svcSite = dynamic_cast<MgServerSiteService*>(
+        serviceManager->RequestService(MgServiceType::SiteService));
+    assert(svcSite != NULL);
+
+    Ptr<MgUserInformation> userInfo = new MgUserInformation(
+        L"Administrator", L"admin");
+    userInfo->SetLocale(TEST_LOCALE);
+
+    // Set the current MgUserInformation
+    // This must be done before calling CreateSession()
+    MgUserInformation::SetCurrentUserInfo(userInfo);
+
+    STRING session = svcSite->CreateSession();
+    assert(!session.empty());
+    userInfo->SetMgSessionId(session);
+
+    // Set the current MgUserInformation
+    MgUserInformation::SetCurrentUserInfo(userInfo);
+
+    m_siteConnection = new MgSiteConnection();
+    m_siteConnection->Open(userInfo);
+}
+
+
+TestProfilingService::~TestProfilingService()
+{
+}
+
+
+void TestProfilingService::setUp()
+{
+}
+
+
+void TestProfilingService::tearDown()
+{
+}
+
+
+void TestProfilingService::TestStart()
+{
+    ACE_DEBUG((LM_INFO, ACE_TEXT("\nRunning Profiling Service tests.\n")));
+
+    try
+    {
+        #ifdef _DEBUG
+        MgFdoConnectionManager* pFdoConnectionManager = MgFdoConnectionManager::GetInstance();
+        if(pFdoConnectionManager)
+        {
+            pFdoConnectionManager->ShowCache();
+        }
+        #endif
+
+        // set user info
+        Ptr<MgUserInformation> userInfo = new MgUserInformation(L"Administrator", L"admin");
+        userInfo->SetLocale(TEST_LOCALE);
+        MgUserInformation::SetCurrentUserInfo(userInfo);
+
+        // publish the map definition
+        Ptr<MgResourceIdentifier> mapres1 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Sheboygan.MapDefinition");
+        Ptr<MgByteSource> mdfsrc1 = new MgByteSource(L"../UnitTestFiles/UT_Sheboygan.mdf", false);
+        Ptr<MgByteReader> mdfrdr1 = mdfsrc1->GetReader();
+        m_svcResource->SetResource(mapres1, mdfrdr1, NULL);
+
+        // publish the layer definitions
+        Ptr<MgResourceIdentifier> ldfres1 = new MgResourceIdentifier(L"Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc1 = new MgByteSource(L"../UnitTestFiles/UT_HydrographicPolygons.ldf", false);
+        Ptr<MgByteReader> ldfrdr1 = ldfsrc1->GetReader();
+        m_svcResource->SetResource(ldfres1, ldfrdr1, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres2 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Rail.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc2 = new MgByteSource(L"../UnitTestFiles/UT_Rail.ldf", false);
+        Ptr<MgByteReader> ldfrdr2 = ldfsrc2->GetReader();
+        m_svcResource->SetResource(ldfres2, ldfrdr2, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres3 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Parcels.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc3 = new MgByteSource(L"../UnitTestFiles/UT_Parcels.ldf", false);
+        Ptr<MgByteReader> ldfrdr3 = ldfsrc3->GetReader();
+        m_svcResource->SetResource(ldfres3, ldfrdr3, NULL);
+
+        // publish the feature sources
+        Ptr<MgResourceIdentifier> fsres1 = new MgResourceIdentifier(L"Library://UnitTests/Data/HydrographicPolygons.FeatureSource");
+        Ptr<MgByteSource> fssrc1 = new MgByteSource(L"../UnitTestFiles/UT_HydrographicPolygons.fs", false);
+        Ptr<MgByteReader> fsrdr1 = fssrc1->GetReader();
+        m_svcResource->SetResource(fsres1, fsrdr1, NULL);
+
+        Ptr<MgResourceIdentifier> fsres2 = new MgResourceIdentifier(L"Library://UnitTests/Data/Rail.FeatureSource");
+        Ptr<MgByteSource> fssrc2 = new MgByteSource(L"../UnitTestFiles/UT_Rail.fs", false);
+        Ptr<MgByteReader> fsrdr2 = fssrc2->GetReader();
+        m_svcResource->SetResource(fsres2, fsrdr2, NULL);
+
+        Ptr<MgResourceIdentifier> fsres3 = new MgResourceIdentifier(L"Library://UnitTests/Data/Parcels.FeatureSource");
+        Ptr<MgByteSource> fssrc3 = new MgByteSource(L"../UnitTestFiles/UT_Parcels.fs", false);
+        Ptr<MgByteReader> fsrdr3 = fssrc3->GetReader();
+        m_svcResource->SetResource(fsres3, fsrdr3, NULL);
+
+        // publish the resource data
+        Ptr<MgByteSource> dataSource1 = new MgByteSource(L"../UnitTestFiles/UT_HydrographicPolygons.sdf", false);
+        Ptr<MgByteReader> dataReader1 = dataSource1->GetReader();
+        m_svcResource->SetResourceData(fsres1, L"UT_HydrographicPolygons.sdf", L"File", dataReader1);
+
+        Ptr<MgByteSource> dataSource2 = new MgByteSource(L"../UnitTestFiles/UT_Rail.sdf", false);
+        Ptr<MgByteReader> dataReader2 = dataSource2->GetReader();
+        m_svcResource->SetResourceData(fsres2, L"UT_Rail.sdf", L"File", dataReader2);
+
+        Ptr<MgByteSource> dataSource3 = new MgByteSource(L"../UnitTestFiles/UT_Parcels.sdf", false);
+        Ptr<MgByteReader> dataReader3 = dataSource3->GetReader();
+        m_svcResource->SetResourceData(fsres3, L"UT_Parcels.sdf", L"File", dataReader3);
+
+        // publish the print layouts
+        Ptr<MgResourceIdentifier> plres1 = new MgResourceIdentifier(L"Library://UnitTests/PrintLayouts/AllElements.PrintLayout");
+        Ptr<MgByteSource> plsrc1 = new MgByteSource(L"../UnitTestFiles/UT_AllElements.pl", false);
+        Ptr<MgByteReader> plrdr1 = plsrc1->GetReader();
+        m_svcResource->SetResource(plres1, plrdr1, NULL);
+
+        Ptr<MgResourceIdentifier> plres2 = new MgResourceIdentifier(L"Library://UnitTests/PrintLayouts/NoLegend.PrintLayout");
+        Ptr<MgByteSource> plsrc2 = new MgByteSource(L"../UnitTestFiles/UT_NoLegend.pl", false);
+        Ptr<MgByteReader> plrdr2 = plsrc2->GetReader();
+        m_svcResource->SetResource(plres2, plrdr2, NULL);
+
+        // publish the symbol library
+        Ptr<MgResourceIdentifier> slres1 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/SymbolMart.SymbolLibrary");
+        Ptr<MgByteSource> slsrc1 = new MgByteSource(L"../UnitTestFiles/UT_SymbolMart.sl", false);
+        Ptr<MgByteReader> slrdr1 = slsrc1->GetReader();
+        m_svcResource->SetResource(slres1, slrdr1, NULL);
+        Ptr<MgByteSource> datasrc = new MgByteSource(L"../UnitTestFiles/UT_Symbols.dwf", false);
+        Ptr<MgByteReader> datardr = datasrc->GetReader();
+        m_svcResource->SetResourceData(slres1, L"symbols.dwf", L"File", datardr);
+
+        //
+        // publish symbology stuff
+        //
+
+        // the point feature source
+        Ptr<MgResourceIdentifier> fsres4 = new MgResourceIdentifier(L"Library://UnitTests/Data/Capitals.FeatureSource");
+        Ptr<MgByteSource> fssrc4 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPoints.fs", false);
+        Ptr<MgByteReader> fsrdr4 = fssrc4->GetReader();
+        m_svcResource->SetResource(fsres4, fsrdr4, NULL);
+
+        // point sdf file
+        Ptr<MgByteSource> dataSource4 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPoints.sdf", false);
+        Ptr<MgByteReader> dataReader4 = dataSource4->GetReader();
+        m_svcResource->SetResourceData(fsres4, L"UT_SymbologyPoints.sdf", L"File", dataReader4);
+
+        // point symbols
+        Ptr<MgResourceIdentifier> sdres1 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/PointSymbol.SymbolDefinition");
+        Ptr<MgByteSource> sdsrc1 = new MgByteSource(L"../UnitTestFiles/symbol.sd", false);
+        Ptr<MgByteReader> sdrdr1 = sdsrc1->GetReader();
+        m_svcResource->SetResource(sdres1, sdrdr1, NULL);
+
+        Ptr<MgResourceIdentifier> sdres2 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/PointSymbolParam.SymbolDefinition");
+        Ptr<MgByteSource> sdsrc2 = new MgByteSource(L"../UnitTestFiles/symbolp.sd", false);
+        Ptr<MgByteReader> sdrdr2 = sdsrc2->GetReader();
+        m_svcResource->SetResource(sdres2, sdrdr2, NULL);
+
+        // point ldf
+        Ptr<MgResourceIdentifier> ldfres4 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Capitals.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc4 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPoints.ldf", false);
+        Ptr<MgByteReader> ldfrdr4 = ldfsrc4->GetReader();
+        m_svcResource->SetResource(ldfres4, ldfrdr4, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres5 = new MgResourceIdentifier(L"Library://UnitTests/Layers/CapitalsParam.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc5 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPointsParam.ldf", false);
+        Ptr<MgByteReader> ldfrdr5 = ldfsrc5->GetReader();
+        m_svcResource->SetResource(ldfres5, ldfrdr5, NULL);
+
+        // point mdf
+        Ptr<MgResourceIdentifier> mapres2 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Capitals.MapDefinition");
+        Ptr<MgByteSource> mdfsrc2 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPoints.mdf", false);
+        Ptr<MgByteReader> mdfrdr2 = mdfsrc2->GetReader();
+        m_svcResource->SetResource(mapres2, mdfrdr2, NULL);
+
+        Ptr<MgResourceIdentifier> mapres3 = new MgResourceIdentifier(L"Library://UnitTests/Maps/CapitalsParam.MapDefinition");
+        Ptr<MgByteSource> mdfsrc3 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPointsParam.mdf", false);
+        Ptr<MgByteReader> mdfrdr3 = mdfsrc3->GetReader();
+        m_svcResource->SetResource(mapres3, mdfrdr3, NULL);
+
+        // the line feature source
+        Ptr<MgResourceIdentifier> fsres5 = new MgResourceIdentifier(L"Library://UnitTests/Data/Lines.FeatureSource");
+        Ptr<MgByteSource> fssrc5 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyLines.fs", false);
+        Ptr<MgByteReader> fsrdr5 = fssrc5->GetReader();
+        m_svcResource->SetResource(fsres5, fsrdr5, NULL);
+
+        // line sdf file
+        Ptr<MgByteSource> dataSource5 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyLines.sdf", false);
+        Ptr<MgByteReader> dataReader5 = dataSource5->GetReader();
+        m_svcResource->SetResourceData(fsres5, L"UT_SymbologyLines.sdf", L"File", dataReader5);
+
+        // line symbols
+        Ptr<MgResourceIdentifier> sdres3 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/LineSymbol.SymbolDefinition");
+        Ptr<MgByteSource> sdsrc3 = new MgByteSource(L"../UnitTestFiles/linesymbol.sd", false);
+        Ptr<MgByteReader> sdrdr3 = sdsrc3->GetReader();
+        m_svcResource->SetResource(sdres3, sdrdr3, NULL);
+
+        Ptr<MgResourceIdentifier> sdres4 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/MTYP1500a.SymbolDefinition");
+        Ptr<MgByteSource> sdsrc4 = new MgByteSource(L"../UnitTestFiles/MTYP1500a.sd", false);
+        Ptr<MgByteReader> sdrdr4 = sdsrc4->GetReader();
+        m_svcResource->SetResource(sdres4, sdrdr4, NULL);
+
+        // line ldf
+        Ptr<MgResourceIdentifier> ldfres6 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Lines.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc6 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyLines.ldf", false);
+        Ptr<MgByteReader> ldfrdr6 = ldfsrc6->GetReader();
+        m_svcResource->SetResource(ldfres6, ldfrdr6, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres7 = new MgResourceIdentifier(L"Library://UnitTests/Layers/LinesCrossTick.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc7 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyLinesCrossTick.ldf", false);
+        Ptr<MgByteReader> ldfrdr7 = ldfsrc7->GetReader();
+        m_svcResource->SetResource(ldfres7, ldfrdr7, NULL);
+
+        // line mdf
+        Ptr<MgResourceIdentifier> mapres4 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Lines.MapDefinition");
+        Ptr<MgByteSource> mdfsrc4 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyLines.mdf", false);
+        Ptr<MgByteReader> mdfrdr4 = mdfsrc4->GetReader();
+        m_svcResource->SetResource(mapres4, mdfrdr4, NULL);
+
+        Ptr<MgResourceIdentifier> mapres5 = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinesCrossTick.MapDefinition");
+        Ptr<MgByteSource> mdfsrc5 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyLinesCrossTick.mdf", false);
+        Ptr<MgByteReader> mdfrdr5 = mdfsrc5->GetReader();
+        m_svcResource->SetResource(mapres5, mdfrdr5, NULL);
+
+        // annotation ldf - this shares the point sdf
+        Ptr<MgResourceIdentifier> ldfres8 = new MgResourceIdentifier(L"Library://UnitTests/Layers/UT_Annotation1.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc8 = new MgByteSource(L"../UnitTestFiles/UT_Annotation1.ldf", false);
+        Ptr<MgByteReader> ldfrdr8 = ldfsrc8->GetReader();
+        m_svcResource->SetResource(ldfres8, ldfrdr8, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres9 = new MgResourceIdentifier(L"Library://UnitTests/Layers/UT_Annotation2.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc9 = new MgByteSource(L"../UnitTestFiles/UT_Annotation2.ldf", false);
+        Ptr<MgByteReader> ldfrdr9 = ldfsrc9->GetReader();
+        m_svcResource->SetResource(ldfres9, ldfrdr9, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres10 = new MgResourceIdentifier(L"Library://UnitTests/Layers/UT_Annotation3.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc10 = new MgByteSource(L"../UnitTestFiles/UT_Annotation3.ldf", false);
+        Ptr<MgByteReader> ldfrdr10 = ldfsrc10->GetReader();
+        m_svcResource->SetResource(ldfres10, ldfrdr10, NULL);
+
+        // annotation mdf
+        Ptr<MgResourceIdentifier> mapres8 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_Annotation1.MapDefinition");
+        Ptr<MgByteSource> mdfsrc8 = new MgByteSource(L"../UnitTestFiles/UT_Annotation1.mdf", false);
+        Ptr<MgByteReader> mdfrdr8 = mdfsrc8->GetReader();
+        m_svcResource->SetResource(mapres8, mdfrdr8, NULL);
+
+        Ptr<MgResourceIdentifier> mapres9 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_Annotation2.MapDefinition");
+        Ptr<MgByteSource> mdfsrc9 = new MgByteSource(L"../UnitTestFiles/UT_Annotation2.mdf", false);
+        Ptr<MgByteReader> mdfrdr9 = mdfsrc9->GetReader();
+        m_svcResource->SetResource(mapres9, mdfrdr9, NULL);
+
+        Ptr<MgResourceIdentifier> mapres10 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_Annotation3.MapDefinition");
+        Ptr<MgByteSource> mdfsrc10 = new MgByteSource(L"../UnitTestFiles/UT_Annotation3.mdf", false);
+        Ptr<MgByteReader> mdfrdr10 = mdfsrc10->GetReader();
+        m_svcResource->SetResource(mapres10, mdfrdr10, NULL);
+
+        //symbology - polygons
+        Ptr<MgResourceIdentifier> mapres11 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_SymbologyPolygons.MapDefinition");
+        Ptr<MgByteSource> mdfsrc11 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyPolygons.mdf", false);
+        Ptr<MgByteReader> mdfrdr11 = mdfsrc11->GetReader();
+        m_svcResource->SetResource(mapres11, mdfrdr11, NULL);
+
+        Ptr<MgResourceIdentifier> ldfres11 = new MgResourceIdentifier(L"Library://UnitTests/Layers/SymbologyParcels.LayerDefinition");
+        Ptr<MgByteSource> ldfsrc11 = new MgByteSource(L"../UnitTestFiles/UT_SymbologyParcels.ldf", false);
+        Ptr<MgByteReader> ldfrdr11 = ldfsrc11->GetReader();
+        m_svcResource->SetResource(ldfres11, ldfrdr11, NULL);
+
+        Ptr<MgResourceIdentifier> sdres5 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/AreaSymbol.SymbolDefinition");
+        Ptr<MgByteSource> sdsrc5 = new MgByteSource(L"../UnitTestFiles/areasymbol.sd", false);
+        Ptr<MgByteReader> sdrdr5 = sdsrc5->GetReader();
+        m_svcResource->SetResource(sdres5, sdrdr5, NULL);
+
+        // For watermark test
+        // publish the map definition
+        Ptr<MgResourceIdentifier> mapres12 = new MgResourceIdentifier(L"Library://UnitTests/Maps/SheboyganWithWatermark.MapDefinition");
+        Ptr<MgByteSource> mdfsrc12 = new MgByteSource(L"../UnitTestFiles/UT_SheboyganWithWatermark.mdf", false);
+        Ptr<MgByteReader> mdfrdr12 = mdfsrc12->GetReader();
+        m_svcResource->SetResource(mapres12, mdfrdr12, NULL);
+
+        // publish the watermark definition
+        Ptr<MgResourceIdentifier> wdfres1 = new MgResourceIdentifier(L"Library://UnitTests/Watermarks/PoweredByMapGuide.WatermarkDefinition");
+        Ptr<MgByteSource> wdfsrc1 = new MgByteSource(L"../UnitTestFiles/UT_PoweredByMapGuide.wdf", false);
+        Ptr<MgByteReader> wdfrdr1 = wdfsrc1->GetReader();
+        m_svcResource->SetResource(wdfres1, wdfrdr1, NULL);
+
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
+
+void TestProfilingService::TestEnd()
+{
+    try
+    {
+        // set user info
+        Ptr<MgUserInformation> userInfo = new MgUserInformation(L"Administrator", L"admin");
+        userInfo->SetLocale(TEST_LOCALE);
+        MgUserInformation::SetCurrentUserInfo(userInfo);
+
+        // delete the map definition
+        Ptr<MgResourceIdentifier> mapres1 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Sheboygan.MapDefinition");
+        m_svcResource->DeleteResource(mapres1);
+
+        // delete the layer definitions
+        Ptr<MgResourceIdentifier> ldfres1 = new MgResourceIdentifier(L"Library://UnitTests/Layers/HydrographicPolygons.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres1);
+
+        Ptr<MgResourceIdentifier> ldfres2 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Rail.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres2);
+
+        Ptr<MgResourceIdentifier> ldfres3 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Parcels.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres3);
+
+        // delete the feature sources
+        Ptr<MgResourceIdentifier> fsres1 = new MgResourceIdentifier(L"Library://UnitTests/Data/HydrographicPolygons.FeatureSource");
+        m_svcResource->DeleteResource(fsres1);
+
+        Ptr<MgResourceIdentifier> fsres2 = new MgResourceIdentifier(L"Library://UnitTests/Data/Rail.FeatureSource");
+        m_svcResource->DeleteResource(fsres2);
+
+        Ptr<MgResourceIdentifier> fsres3 = new MgResourceIdentifier(L"Library://UnitTests/Data/Parcels.FeatureSource");
+        m_svcResource->DeleteResource(fsres3);
+
+        // delete the print layouts
+        Ptr<MgResourceIdentifier> plres1 = new MgResourceIdentifier(L"Library://UnitTests/PrintLayouts/AllElements.PrintLayout");
+        m_svcResource->DeleteResource(plres1);
+
+        Ptr<MgResourceIdentifier> plres2 = new MgResourceIdentifier(L"Library://UnitTests/PrintLayouts/NoLegend.PrintLayout");
+        m_svcResource->DeleteResource(plres2);
+
+        // delete the symbol library
+        Ptr<MgResourceIdentifier> slres1 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/SymbolMart.SymbolLibrary");
+        m_svcResource->DeleteResource(slres1);
+
+        // delete symbology stuff
+        Ptr<MgResourceIdentifier> fsres4 = new MgResourceIdentifier(L"Library://UnitTests/Data/Capitals.FeatureSource");
+        m_svcResource->DeleteResource(fsres4);
+        Ptr<MgResourceIdentifier> sdres1 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/PointSymbol.SymbolDefinition");
+        m_svcResource->DeleteResource(sdres1);
+        Ptr<MgResourceIdentifier> sdres2 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/PointSymbolParam.SymbolDefinition");
+        m_svcResource->DeleteResource(sdres2);
+        Ptr<MgResourceIdentifier> ldfres4 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Capitals.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres4);
+        Ptr<MgResourceIdentifier> ldfres5 = new MgResourceIdentifier(L"Library://UnitTests/Layers/CapitalsParam.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres5);
+        Ptr<MgResourceIdentifier> mapres2 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Capitals.MapDefinition");
+        m_svcResource->DeleteResource(mapres2);
+        Ptr<MgResourceIdentifier> mapres3 = new MgResourceIdentifier(L"Library://UnitTests/Maps/CapitalsParam.MapDefinition");
+        m_svcResource->DeleteResource(mapres3);
+
+        Ptr<MgResourceIdentifier> fsres5 = new MgResourceIdentifier(L"Library://UnitTests/Data/Lines.FeatureSource");
+        m_svcResource->DeleteResource(fsres5);
+        Ptr<MgResourceIdentifier> sdres3 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/LineSymbol.SymbolDefinition");
+        m_svcResource->DeleteResource(sdres3);
+        Ptr<MgResourceIdentifier> sdres4 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/MTYP1500a.SymbolDefinition");
+        m_svcResource->DeleteResource(sdres4);
+        Ptr<MgResourceIdentifier> ldfres6 = new MgResourceIdentifier(L"Library://UnitTests/Layers/Lines.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres6);
+        Ptr<MgResourceIdentifier> ldfres7 = new MgResourceIdentifier(L"Library://UnitTests/Layers/LinesCrossTick.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres7);
+        Ptr<MgResourceIdentifier> mapres4 = new MgResourceIdentifier(L"Library://UnitTests/Maps/Lines.MapDefinition");
+        m_svcResource->DeleteResource(mapres4);
+        Ptr<MgResourceIdentifier> mapres5 = new MgResourceIdentifier(L"Library://UnitTests/Maps/LinesCrossTick.MapDefinition");
+        m_svcResource->DeleteResource(mapres5);
+
+        Ptr<MgResourceIdentifier> ldfres8 = new MgResourceIdentifier(L"Library://UnitTests/Layers/UT_Annotation1.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres8);
+        Ptr<MgResourceIdentifier> ldfres9 = new MgResourceIdentifier(L"Library://UnitTests/Layers/UT_Annotation2.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres9);
+        Ptr<MgResourceIdentifier> ldfres10 = new MgResourceIdentifier(L"Library://UnitTests/Layers/UT_Annotation3.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres10);
+        Ptr<MgResourceIdentifier> mapres8 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_Annotation1.MapDefinition");
+        m_svcResource->DeleteResource(mapres8);
+        Ptr<MgResourceIdentifier> mapres9 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_Annotation2.MapDefinition");
+        m_svcResource->DeleteResource(mapres9);
+        Ptr<MgResourceIdentifier> mapres10 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_Annotation3.MapDefinition");
+        m_svcResource->DeleteResource(mapres10);
+
+        Ptr<MgResourceIdentifier> mapres11 = new MgResourceIdentifier(L"Library://UnitTests/Maps/UT_SymbologyPolygons.MapDefinition");
+        m_svcResource->DeleteResource(mapres11);
+        Ptr<MgResourceIdentifier> ldfres11 = new MgResourceIdentifier(L"Library://UnitTests/Layers/SymbologyParcels.LayerDefinition");
+        m_svcResource->DeleteResource(ldfres11);
+        Ptr<MgResourceIdentifier> sdres5 = new MgResourceIdentifier(L"Library://UnitTests/Symbols/AreaSymbol.SymbolDefinition");
+        m_svcResource->DeleteResource(sdres5);
+        
+        Ptr<MgResourceIdentifier> mapres12 = new MgResourceIdentifier(L"Library://UnitTests/Maps/SheboyganWithWatermark.MapDefinition");
+        m_svcResource->DeleteResource(mapres12);
+        Ptr<MgResourceIdentifier> wdfres1 = new MgResourceIdentifier(L"Library://UnitTests/Watermarks/PoweredByMapGuide.WatermarkDefinition");
+        m_svcResource->DeleteResource(wdfres1);
+
+       #ifdef _DEBUG
+        MgFdoConnectionManager* pFdoConnectionManager = MgFdoConnectionManager::GetInstance();
+        if(pFdoConnectionManager)
+        {
+            pFdoConnectionManager->ShowCache();
+        }
+        #endif
+    }
+    catch(MgFileIoException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        ACE_DEBUG((LM_INFO, ACE_TEXT("\nMgFileIoException - Possible file permission error.\nError: %W\n"), message.c_str()));
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        message += e->GetStackTrace(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+
+    ACE_DEBUG((LM_INFO, ACE_TEXT("\nProfiling Service tests completed.\n\n")));
+}
+
+
+void TestProfilingService::TestCase_ProfileRenderDynamicOverlay()
+{
+    try
+    {
+        // make a runtime normal map
+        Ptr<MgMap> map = CreateTestMap();
+        Ptr<MgSelection> selectionOnMap = CreateSelection(map);
+
+        // make a runtime map with watermark
+        Ptr<MgMap> mapWithWatermark = CreateTestMapWithWatermark();
+        Ptr<MgSelection> selectionOnMapWithWatermark = CreateSelection(mapWithWatermark);
+
+        // make a rendering option
+        Ptr<MgRenderingOptions> options = new MgRenderingOptions(L"PNG",MgRenderingOptions::RenderSelection| MgRenderingOptions::RenderLayers| MgRenderingOptions::KeepSelection,NULL);
+        
+        // profile rendering normal map
+        Ptr<MgByteReader> rdr1 = m_svcProfiling->ProfileRenderDynamicOverlay(map, NULL, options);
+        rdr1->ToFile(L"../UnitTestFiles/ProfileRenderDynamicOverlay_Normal.xml");
+
+        // profile rendering normal map with selection
+        Ptr<MgByteReader> rdr2 = m_svcProfiling->ProfileRenderDynamicOverlay(map, selectionOnMap, options);
+        rdr2->ToFile(L"../UnitTestFiles/ProfileRenderDynamicOverlay_Selection.xml");
+
+        // profile rendering map with watermark
+        Ptr<MgByteReader> rdr3 = m_svcProfiling->ProfileRenderDynamicOverlay(mapWithWatermark, NULL, options);
+        rdr3->ToFile(L"../UnitTestFiles/ProfileRenderDynamicOverlay_Watermark.xml");
+
+        // profile rendering map with both watermark and selection
+        Ptr<MgByteReader> rdr4 = m_svcProfiling->ProfileRenderDynamicOverlay(mapWithWatermark, selectionOnMapWithWatermark, options);
+        rdr4->ToFile(L"../UnitTestFiles/ProfileRenderDynamicOverlay_Watermark_Selection.xml");
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
+
+void TestProfilingService::TestCase_ProfileRenderMap()
+{
+    try
+    {
+        // make a runtime normal map
+        Ptr<MgMap> map = CreateTestMap();
+        Ptr<MgSelection> selectionOnMap = CreateSelection(map);
+
+        // make a runtime map with watermark
+        Ptr<MgMap> mapWithWatermark = CreateTestMapWithWatermark();
+        Ptr<MgSelection> selectionOnMapWithWatermark = CreateSelection(mapWithWatermark);
+
+        // make a rendering option
+        Ptr<MgRenderingOptions> options = new MgRenderingOptions(L"PNG",MgRenderingOptions::RenderSelection| MgRenderingOptions::RenderLayers| MgRenderingOptions::KeepSelection,NULL);
+
+        Ptr<MgCoordinate> coordNewCenter = new MgCoordinateXY(-87.733253, 43.746199);
+        Ptr<MgColor> bgc = new MgColor(255, 255, 255, 255);
+
+        // profile rendering normal map
+        Ptr<MgByteReader> rdr1 = m_svcProfiling->ProfileRenderMap(map, NULL, coordNewCenter, 75000, 1024, 1024, bgc, L"PNG", false);
+        rdr1->ToFile(L"../UnitTestFiles/ProfileRenderMap_Normal.xml");
+
+        // profile rendering normal map with selection
+        Ptr<MgByteReader> rdr2 = m_svcProfiling->ProfileRenderMap(map, selectionOnMap, coordNewCenter, 75000, 1024, 1024, bgc, L"PNG", false);
+        rdr2->ToFile(L"../UnitTestFiles/ProfileRenderMap_Selection.xml");
+
+        // profile rendering normal map with watermark
+        Ptr<MgByteReader> rdr3 = m_svcProfiling->ProfileRenderMap(mapWithWatermark, NULL, coordNewCenter, 75000, 1024, 1024, bgc, L"PNG", false);
+        rdr3->ToFile(L"../UnitTestFiles/ProfileRenderMap_Watermark.xml");
+
+        // profile rendering normal map with watermark
+        Ptr<MgByteReader> rdr4 = m_svcProfiling->ProfileRenderMap(mapWithWatermark, selectionOnMapWithWatermark, coordNewCenter, 75000, 1024, 1024, bgc, L"PNG", false);
+        rdr4->ToFile(L"../UnitTestFiles/ProfileRenderMap_Watermark_Selection.xml");
+    }
+    catch (MgException* e)
+    {
+        STRING message = e->GetDetails(TEST_LOCALE);
+        SAFE_RELEASE(e);
+        CPPUNIT_FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
+    }
+    catch (...)
+    {
+        throw;
+    }
+}
+
+MgMap* TestProfilingService::CreateTestMap()
+{
+    Ptr<MgResourceIdentifier> mdfres = new MgResourceIdentifier(L"Library://UnitTests/Maps/Sheboygan.MapDefinition");
+    MgMap* map = new MgMap(m_siteConnection);
+    map->Create(mdfres, L"UnitTestSheboygan");
+
+    Ptr<MgCoordinate> coordNewCenter = new MgCoordinateXY(-87.733253, 43.746199);
+    Ptr<MgPoint> ptNewCenter = new MgPoint(coordNewCenter);
+    map->SetViewCenter(ptNewCenter);
+    map->SetViewScale(75000.0);
+    map->SetDisplayDpi(96);
+    map->SetDisplayWidth(1024);
+    map->SetDisplayHeight(1024);
+
+    return map;
+}
+
+MgMap* TestProfilingService::CreateTestMapWithWatermark()
+{
+    Ptr<MgResourceIdentifier> mdfres = new MgResourceIdentifier(L"Library://UnitTests/Maps/SheboyganWithWatermark.MapDefinition");
+    MgMap* map = new MgMap(m_siteConnection);
+    map->Create(mdfres, L"UnitTestSheboyganWithWatermark");
+
+    Ptr<MgCoordinate> coordNewCenter = new MgCoordinateXY(-87.733253, 43.746199);
+    Ptr<MgPoint> ptNewCenter = new MgPoint(coordNewCenter);
+    map->SetViewCenter(ptNewCenter);
+    map->SetViewScale(75000.0);
+    map->SetDisplayDpi(96);
+    map->SetDisplayWidth(1024);
+    map->SetDisplayHeight(1024);
+
+    return map;
+}
+
+MgSelection* TestProfilingService::CreateSelection(MgMap* map)
+{
+    // make a selection in normal map
+    STRING layerId;
+    Ptr<MgLayerCollection> layers = map->GetLayers();
+
+    for (int i=0; i<layers->GetCount(); i++)
+    {
+        Ptr<MgLayerBase> layer = layers->GetItem(i);
+        if(L"HydrographicPolygons" ==layer->GetName())
+        {
+            layerId = layer->GetObjectId();
+        }
+    }
+    STRING selectionStr = L"<?xml version=\"1.0\" encoding=\"UTF-8\"?><FeatureSet><Layer id=\"";
+    selectionStr.append(layerId);
+    selectionStr.append(L"\"><Class id=\"SHP_Schema:HydrographicPolygons\"><ID>HQAAAA==</ID></Class></Layer></FeatureSet>");
+
+    MgSelection* selection = new MgSelection(map, selectionStr);
+    return selection;
+}
+

Added: trunk/MgDev/Server/src/UnitTesting/TestProfilingService.h
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/TestProfilingService.h	                        (rev 0)
+++ trunk/MgDev/Server/src/UnitTesting/TestProfilingService.h	2011-09-08 05:33:43 UTC (rev 6129)
@@ -0,0 +1,57 @@
+//
+//  Copyright (C) 2011 by Autodesk, Inc.
+//
+//  This library is free software; you can redistribute it and/or
+//  modify it under the terms of version 2.1 of the GNU Lesser
+//  General Public License as published by the Free Software Foundation.
+//
+//  This library is distributed in the hope that it will be useful,
+//  but WITHOUT ANY WARRANTY; without even the implied warranty of
+//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+//  Lesser General Public License for more details.
+//
+//  You should have received a copy of the GNU Lesser General Public
+//  License along with this library; if not, write to the Free Software
+//  Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+//
+
+#ifndef _TESTPROFILINGSERVICE_H
+#define _TESTPROFILINGSERVICE_H
+
+#include <cppunit/extensions/HelperMacros.h>
+
+class TestProfilingService : public CppUnit::TestFixture
+{
+    CPPUNIT_TEST_SUITE(TestProfilingService);
+    CPPUNIT_TEST(TestStart); // This must be the very first unit test
+
+    CPPUNIT_TEST(TestCase_ProfileRenderDynamicOverlay);
+    CPPUNIT_TEST(TestCase_ProfileRenderMap);
+
+    CPPUNIT_TEST(TestEnd); // This must be the very last unit test
+    CPPUNIT_TEST_SUITE_END();
+
+public:
+    TestProfilingService();
+    ~TestProfilingService();
+
+    void setUp();
+    void tearDown();
+    void TestStart();
+    void TestEnd();
+
+    void TestCase_ProfileRenderDynamicOverlay();
+    void TestCase_ProfileRenderMap();
+
+private:
+    MgMap* CreateTestMap();
+    MgMap* CreateTestMapWithWatermark();
+    MgSelection* CreateSelection(MgMap* map);
+
+private:
+    Ptr<MgSiteConnection> m_siteConnection;
+    Ptr<MgResourceService> m_svcResource;
+    Ptr<MgProfilingService> m_svcProfiling;
+};
+
+#endif // _TESTPROFILINGSERVICE_H

Modified: trunk/MgDev/Server/src/UnitTesting/UnitTesting.cpp
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/UnitTesting.cpp	2011-09-07 12:43:01 UTC (rev 6128)
+++ trunk/MgDev/Server/src/UnitTesting/UnitTesting.cpp	2011-09-08 05:33:43 UTC (rev 6129)
@@ -56,6 +56,7 @@
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestRenderingService").makeTest());
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestResourceService").makeTest());
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
+            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerAdminService").makeTest());
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerManager").makeTest());
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServiceManager").makeTest());
@@ -90,6 +91,7 @@
             ACE_OS::printf("  SiteManager\n");
             ACE_OS::printf("  SiteService\n");
             ACE_OS::printf("  TileService\n");
+            ACE_OS::printf("  ProfilingService\n");
             ACE_OS::printf("  TransformMesh\n");
             ACE_OS::printf("\n");
 
@@ -175,6 +177,11 @@
             ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Tile Service tests. <<<<<\n\n")));
             runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
         }
+        else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_LIB_TEXT("ProfilingService")) == 0)
+        {
+            ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Profiling Service tests. <<<<<\n\n")));
+            runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
+        }
         else if(ACE_OS::strcasecmp(MG_WCHAR_TO_TCHAR(test), ACE_LIB_TEXT("TransformMesh")) == 0)
         {
             ACE_DEBUG((LM_INFO, ACE_TEXT(">>>>> Running only Transform Mesh tests. <<<<<\n\n")));
@@ -205,6 +212,7 @@
         runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestRenderingService").makeTest());
         runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestResourceService").makeTest());
         runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestTileService").makeTest());
+        runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestProfilingService").makeTest());
         runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerAdminService").makeTest());
         runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServerManager").makeTest());
         runner.addTest(CppUnit::TestFactoryRegistry::getRegistry("TestServiceManager").makeTest());

Modified: trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcproj
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcproj	2011-09-07 12:43:01 UTC (rev 6128)
+++ trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcproj	2011-09-08 05:33:43 UTC (rev 6129)
@@ -418,6 +418,14 @@
 			>
 		</File>
 		<File
+			RelativePath=".\TestProfilingService.cpp"
+			>
+		</File>
+		<File
+			RelativePath=".\TestProfilingService.h"
+			>
+		</File>
+		<File
 			RelativePath=".\TestRenderingService.cpp"
 			>
 		</File>

Modified: trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcxproj
===================================================================
--- trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcxproj	2011-09-07 12:43:01 UTC (rev 6128)
+++ trunk/MgDev/Server/src/UnitTesting/UnitTesting.vcxproj	2011-09-08 05:33:43 UTC (rev 6129)
@@ -202,6 +202,7 @@
     <ClInclude Include="TestMappingService.h" />
     <ClInclude Include="TestMdfModel.h" />
     <ClInclude Include="TestPerformance.h" />
+    <ClInclude Include="TestProfilingService.h" />
     <ClInclude Include="TestRenderingService.h" />
     <ClInclude Include="TestResourceService.h" />
     <ClInclude Include="TestServerAdminService.h" />
@@ -223,6 +224,7 @@
     <ClCompile Include="TestMappingService.cpp" />
     <ClCompile Include="TestMdfModel.cpp" />
     <ClCompile Include="TestPerformance.cpp" />
+    <ClCompile Include="TestProfilingService.cpp" />
     <ClCompile Include="TestRenderingService.cpp" />
     <ClCompile Include="TestResourceService.cpp" />
     <ClCompile Include="TestServerAdminService.cpp" />



More information about the mapguide-commits mailing list