[mapguide-commits] r10020 - in trunk/MgDev: . Portable/MgPortable Portable/MgPortable/Services Portable/UnitTest

svn_mapguide at osgeo.org svn_mapguide at osgeo.org
Fri Nov 25 06:03:00 PST 2022


Author: jng
Date: 2022-11-25 06:02:59 -0800 (Fri, 25 Nov 2022)
New Revision: 10020

Modified:
   trunk/MgDev/CMakeLists.txt
   trunk/MgDev/Portable/MgPortable/CMakeLists.txt
   trunk/MgDev/Portable/MgPortable/Services/ProfilingService.cpp
   trunk/MgDev/Portable/UnitTest/CMakeLists.txt
   trunk/MgDev/Portable/UnitTest/TestFeatureService.cpp
   trunk/MgDev/Portable/UnitTest/TestServiceFactory.cpp
   trunk/MgDev/Portable/UnitTest/main.cpp
   trunk/MgDev/cmake_build.sh
Log:
#2852: MgPortable fixes:
 - Get it (the C++ bits) building again on Linux
 - Add Platform.ini cmake file template
 - Allow it to be built from cmake_build.sh (with the new --with-portable switch)
 - UnitTest runner fixes
   - Print 
   - Fix memory leaks in some Feature Service tests due to wrapping a MgPortableFeatureService::TestConnection() call directly in Catch2's REQUIRE() macro
 - Fix memory leaks in Profiling Service (discovered with ASAN instrumented test runner)

Modified: trunk/MgDev/CMakeLists.txt
===================================================================
--- trunk/MgDev/CMakeLists.txt	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/CMakeLists.txt	2022-11-25 14:02:59 UTC (rev 10020)
@@ -270,11 +270,11 @@
 endif (NOT MG_COMMON_SUBSET_ONLY)
 add_subdirectory(Bindings)
 
-if (WITH_DESKTOP)
-    add_subdirectory(Desktop)
-else (WITH_DESKTOP)
-    message(STATUS "Skipping optional mg-desktop support")
-endif (WITH_DESKTOP)
+if (WITH_PORTABLE)
+    add_subdirectory(Portable)
+else (WITH_PORTABLE)
+    message(STATUS "Skipping optional mg-portable support")
+endif (WITH_PORTABLE)
 
 if (MG_COMMON_SUBSET_ONLY)
     message(STATUS "Only building common libs subset")

Modified: trunk/MgDev/Portable/MgPortable/CMakeLists.txt
===================================================================
--- trunk/MgDev/Portable/MgPortable/CMakeLists.txt	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/Portable/MgPortable/CMakeLists.txt	2022-11-25 14:02:59 UTC (rev 10020)
@@ -38,9 +38,9 @@
     ${XERCESC_LIBRARIES}
     ${FDO_LIBRARY}
     ${FDO_EXPRESSIONENGINE_LIBRARY}
-    dwfcore
-    dwftk
-    dwfwhiptk
+    #dwfcore
+    #dwftk
+    #dwfwhiptk
     MgMdfModel${MG_VERSION_SUFFIX}
     MgMdfParser${MG_VERSION_SUFFIX}
     MgFoundation${MG_VERSION_SUFFIX}

Modified: trunk/MgDev/Portable/MgPortable/Services/ProfilingService.cpp
===================================================================
--- trunk/MgDev/Portable/MgPortable/Services/ProfilingService.cpp	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/Portable/MgPortable/Services/ProfilingService.cpp	2022-11-25 14:02:59 UTC (rev 10020)
@@ -48,7 +48,7 @@
 
     // Start to profile the ProfileRenderDynamicOverlay process
     double renderMapStart = MgPortableTimerUtil::GetTime(); 
-    m_svcRendering->RenderDynamicOverlay(map, selection, options, pPRMResult.get());
+    Ptr<MgByteReader> img = m_svcRendering->RenderDynamicOverlay(map, selection, options, pPRMResult.get());
     double renderMapEnd = MgPortableTimerUtil::GetTime();
 
     pPRMResult->SetRenderTime(renderMapEnd - renderMapStart);
@@ -90,7 +90,7 @@
 
     // Start to profile the ProfileRenderMap process
     double renderMapStart = MgPortableTimerUtil::GetTime(); 
-    m_svcRendering->RenderMap(map, selection, center, scale, width, height, backgroundColor, format, bKeepSelection, pPRMResult.get());
+    Ptr<MgByteReader> img = m_svcRendering->RenderMap(map, selection, center, scale, width, height, backgroundColor, format, bKeepSelection, pPRMResult.get());
     double renderMapEnd = MgPortableTimerUtil::GetTime();
 
     pPRMResult->SetRenderTime(renderMapEnd - renderMapStart);

Modified: trunk/MgDev/Portable/UnitTest/CMakeLists.txt
===================================================================
--- trunk/MgDev/Portable/UnitTest/CMakeLists.txt	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/Portable/UnitTest/CMakeLists.txt	2022-11-25 14:02:59 UTC (rev 10020)
@@ -1,4 +1,5 @@
 include_directories(${ACE_INCLUDE_DIR}
+    ${MG_OEM_CATCH2_INCLUDE_DIR}
     ${XERCESC_INCLUDE_DIR}
     ${FDO_INCLUDE_DIR}
     ${CMAKE_CURRENT_SOURCE_DIR}
@@ -46,4 +47,21 @@
     MgPlatformBase${MG_VERSION_SUFFIX}
     MgSecurity${MG_VERSION_SUFFIX}
     MgPortable${MG_VERSION_SUFFIX}
-)
\ No newline at end of file
+)
+
+set(ORIG_MG_INSTALL_SERVER_PREFIX_ABS "${MG_INSTALL_SERVER_PREFIX_ABS}")
+set(ORIG_MG_INSTALL_COORDSYS_PREFIX_ABS "${MG_INSTALL_COORDSYS_PREFIX_ABS}")
+set(MG_INSTALL_SERVER_PREFIX_ABS "${CMAKE_CURRENT_BINARY_DIR}")
+set(MG_INSTALL_COORDSYS_PREFIX_ABS "${MG_OEM_ROOT_BUILD_DIR}/CsMapLibrary/CsMap_Install/Dictionaries")
+configure_file(${CMAKE_MODULE_PATH}/../configs/Platform.ini.in ${CMAKE_CURRENT_BINARY_DIR}/Platform.ini)
+set(MG_INSTALL_SERVER_PREFIX_ABS "${ORIG_MG_INSTALL_SERVER_PREFIX_ABS}")
+set(MG_INSTALL_COORDSYS_PREFIX_ABS "${ORIG_MG_INSTALL_COORDSYS_PREFIX_ABS}")
+file(COPY ${MG_COMMON_DIR}/MapGuideCommon/Resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+file(COPY ${MG_COMMON_DIR}/Schema DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+# Test Data Setup
+file(GLOB_RECURSE UNIT_TEST_FILES "${MG_UNIT_TEST_DATA_DIR}/*.*")
+file(COPY ${UNIT_TEST_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/../UnitTestFiles)
+
+file(GLOB_RECURSE PT_UNIT_TEST_FILES "${CMAKE_CURRENT_SOURCE_DIR}/../DesktopTestData/*.*")
+file(COPY ${PT_UNIT_TEST_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/../UnitTestFiles)
\ No newline at end of file

Modified: trunk/MgDev/Portable/UnitTest/TestFeatureService.cpp
===================================================================
--- trunk/MgDev/Portable/UnitTest/TestFeatureService.cpp	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/Portable/UnitTest/TestFeatureService.cpp	2022-11-25 14:02:59 UTC (rev 10020)
@@ -2942,7 +2942,8 @@
 
         //Now apply credentials
         resSvc->SetResourceCredentials(fsId, username, password);
-        REQUIRE(true == featSvc->TestConnection(fsId));
+        bool ok = featSvc->TestConnection(fsId);
+        REQUIRE(ok);
 
         //Now apply bad credentials
         username = L"foo";
@@ -3321,7 +3322,8 @@
         Ptr<MgByteReader> fsDataReader = fsData->GetReader();
 
         pService->SetResourceData(fsId, L"ParcelsJoinTest.sdf", L"File", fsDataReader);
-        REQUIRE(featSvc->TestConnection(fsId));
+        bool ok = featSvc->TestConnection(fsId);
+        REQUIRE(ok);
 
         Ptr<MgFeatureReader> reader;
 
@@ -3421,7 +3423,8 @@
         Ptr<MgByteReader> fsDataReader = fsData->GetReader();
 
         pService->SetResourceData(fsId, L"ParcelsJoinTest.sqlite", L"File", fsDataReader);
-        REQUIRE(featSvc->TestConnection(fsId));
+        bool ok = featSvc->TestConnection(fsId);
+        REQUIRE(ok);
 
         Ptr<MgFeatureReader> reader;
 
@@ -3513,7 +3516,8 @@
         }
 
         Ptr<MgResourceIdentifier> fsId = new MgResourceIdentifier(L"Library://UnitTests/Data/ParcelsJoinTestSQLite.FeatureSource");
-        REQUIRE(featSvc->TestConnection(fsId));
+        bool ok = featSvc->TestConnection(fsId);
+        REQUIRE(ok);
         Ptr<MgDataReader> reader;
 
         // ----- Start the tests ------- //

Modified: trunk/MgDev/Portable/UnitTest/TestServiceFactory.cpp
===================================================================
--- trunk/MgDev/Portable/UnitTest/TestServiceFactory.cpp	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/Portable/UnitTest/TestServiceFactory.cpp	2022-11-25 14:02:59 UTC (rev 10020)
@@ -180,6 +180,7 @@
             catch (MgException* e)
             {
                 STRING message = e->GetDetails(TestServiceFactory::TEST_LOCALE);
+                printf("Error in mapping service test data setup: %ls\n", message.c_str());
                 SAFE_RELEASE(e);
                 FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
             }
@@ -517,6 +518,7 @@
             catch (MgException* e)
             {
                 STRING message = e->GetDetails(TestServiceFactory::TEST_LOCALE);
+                printf("Error in rendering service test data setup: %ls\n", message.c_str());
                 SAFE_RELEASE(e);
                 FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
             }
@@ -533,10 +535,10 @@
             try
             {
                 // ------------------------------------------------------
-        // base map source data
-        // ------------------------------------------------------
+                // base map source data
+                // ------------------------------------------------------
 
-        // publish the map definition
+                // publish the map definition
                 Ptr<MgResourceIdentifier> mapres1 = new MgResourceIdentifier(L"Library://UnitTests/Maps/BaseMap.MapDefinition");
                 Ptr<MgByteSource> mdfsrc1 = new MgByteSource(L"../UnitTestFiles/UT_BaseMap.mdf", false);
                 Ptr<MgByteReader> mdfrdr1 = mdfsrc1->GetReader();
@@ -593,6 +595,7 @@
             catch (MgException* e)
             {
                 STRING message = e->GetDetails(TestServiceFactory::TEST_LOCALE);
+                printf("Error in tile service test data setup: %ls\n", message.c_str());
                 SAFE_RELEASE(e);
                 FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
             }
@@ -848,6 +851,7 @@
             catch (MgException* e)
             {
                 STRING message = e->GetDetails(TestServiceFactory::TEST_LOCALE);
+                printf("Error in profiling service test data setup: %ls\n", message.c_str());
                 SAFE_RELEASE(e);
                 FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
             }
@@ -875,7 +879,7 @@
                 pService->SetResource(ldfres3, ldfrdr3, nullptr);
 
                 Ptr<MgResourceIdentifier> fsres3 = new MgResourceIdentifier(L"Library://UnitTests/Data/ParcelsWriteable.FeatureSource");
-                Ptr<MgByteSource> fssrc3 = new MgByteSource(L"../UnitTestFiles/UT_Parcels_writeable.fs", false);
+                Ptr<MgByteSource> fssrc3 = new MgByteSource(L"../UnitTestFiles/UT_Parcels_Writeable.fs", false);
                 Ptr<MgByteReader> fsrdr3 = fssrc3->GetReader();
                 pService->SetResource(fsres3, fsrdr3, nullptr);
 
@@ -1058,6 +1062,7 @@
             catch (MgException* e)
             {
                 STRING message = e->GetDetails(TestServiceFactory::TEST_LOCALE);
+                printf("Error in feature service test data setup: %ls\n", message.c_str());
                 SAFE_RELEASE(e);
                 FAIL(MG_WCHAR_TO_CHAR(message.c_str()));
             }

Modified: trunk/MgDev/Portable/UnitTest/main.cpp
===================================================================
--- trunk/MgDev/Portable/UnitTest/main.cpp	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/Portable/UnitTest/main.cpp	2022-11-25 14:02:59 UTC (rev 10020)
@@ -91,7 +91,6 @@
     //to verify functionality, but don't use VLD for memory leak detection. Seek an alternate tool/library
     //in this case.
     TestServiceFactory::AddSuiteToRun("[TileService]");
-
     Catch::Session session;
     int nResult = session.run(argc, argv);
     MgPortablePlatform::Terminate();

Modified: trunk/MgDev/cmake_build.sh
===================================================================
--- trunk/MgDev/cmake_build.sh	2022-11-20 04:09:40 UTC (rev 10019)
+++ trunk/MgDev/cmake_build.sh	2022-11-25 14:02:59 UTC (rev 10020)
@@ -10,6 +10,7 @@
 MG_VERSION_RELEASE=0
 MG_REV=0
 COMMON_SUBSET_ONLY=0
+ENABLE_MG_PORTABLE=0
 
 while [ $# -gt 0 ]; do    # Until you run out of parameters...
     case "$1" in
@@ -40,6 +41,9 @@
         --common-subset-only)
             COMMON_SUBSET_ONLY=1
             ;;
+        --with-portable)
+            ENABLE_MG_PORTABLE=1
+            ;;
         --ninja)
             USE_NINJA=1
             ;;
@@ -105,6 +109,7 @@
 echo "OEM Working Directory is: $OEM_WORK_DIR"
 echo "LinuxApt Working Directory is: $LINUXAPT_WORK_DIR"
 echo "Building common libs only: $COMMON_SUBSET_ONLY"
+echo "Building mg-portable: $ENABLE_MG_PORTABLE"
 
 echo "Creating CMake build directory"
 mkdir -p "$CMAKE_BUILD_DIR"
@@ -118,10 +123,10 @@
 echo "Setting up CMake in: $CMAKE_BUILD_DIR"
 cd "$CMAKE_BUILD_DIR" || exit
 if test $USE_NINJA -eq 1; then
-    cmake -G Ninja "$SOURCE_DIR" -DMG_VERSION_MAJOR=$MG_VERSION_MAJOR -DMG_VERSION_MINOR=$MG_VERSION_MINOR -DMG_VERSION_RELEASE=$MG_VERSION_RELEASE -DMG_VERSION_REV=$MG_REV -DMG_INSTALL_PREFIX=$MG_INST_PREFIX -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DUSE_LD_GOLD=$USE_LD_GOLD -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER=$PHP_VER -DHTTPD_VER=$HTTPD_VER -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR -DMG_LINUXAPT_WORK_DIR=$LINUXAPT_WORK_DIR -DINTERNAL_XERCES=$INTERNAL_XERCES -DINTERNAL_ACE=$INTERNAL_ACE -DINTERNAL_ZLIB=$INTERNAL_ZLIB -DINTERNAL_JPEG=$INTERNAL_JPEG -DINTERNAL_PNG=$INTERNAL_PNG -DINTERNAL_FREETYPE=$INTERNAL_FREETYPE -DINTERNAL_GD=$INTERNAL_GD -DINTERNAL_JSON=$INTERNAL_JSON -DINTERNAL_GEOS=$INTERNAL_GEOS -DCOMMON_SUBSET_ONLY=$COMMON_SUBSET_ONLY
+    cmake -G Ninja "$SOURCE_DIR" -DMG_VERSION_MAJOR=$MG_VERSION_MAJOR -DMG_VERSION_MINOR=$MG_VERSION_MINOR -DMG_VERSION_RELEASE=$MG_VERSION_RELEASE -DMG_VERSION_REV=$MG_REV -DMG_INSTALL_PREFIX=$MG_INST_PREFIX -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DUSE_LD_GOLD=$USE_LD_GOLD -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER=$PHP_VER -DHTTPD_VER=$HTTPD_VER -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR -DMG_LINUXAPT_WORK_DIR=$LINUXAPT_WORK_DIR -DINTERNAL_XERCES=$INTERNAL_XERCES -DINTERNAL_ACE=$INTERNAL_ACE -DINTERNAL_ZLIB=$INTERNAL_ZLIB -DINTERNAL_JPEG=$INTERNAL_JPEG -DINTERNAL_PNG=$INTERNAL_PNG -DINTERNAL_FREETYPE=$INTERNAL_FREETYPE -DINTERNAL_GD=$INTERNAL_GD -DINTERNAL_JSON=$INTERNAL_JSON -DINTERNAL_GEOS=$INTERNAL_GEOS -DCOMMON_SUBSET_ONLY=$COMMON_SUBSET_ONLY -DWITH_PORTABLE=$ENABLE_MG_PORTABLE
     check_build
 else
-    cmake "$SOURCE_DIR" -DMG_VERSION_MAJOR=$MG_VERSION_MAJOR -DMG_VERSION_MINOR=$MG_VERSION_MINOR -DMG_VERSION_RELEASE=$MG_VERSION_RELEASE -DMG_VERSION_REV=$MG_REV -DMG_INSTALL_PREFIX=$MG_INST_PREFIX -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DUSE_LD_GOLD=$USE_LD_GOLD -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER=$PHP_VER -DHTTPD_VER=$HTTPD_VER -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR -DMG_LINUXAPT_WORK_DIR=$LINUXAPT_WORK_DIR -DINTERNAL_XERCES=$INTERNAL_XERCES -DINTERNAL_ACE=$INTERNAL_ACE -DINTERNAL_ZLIB=$INTERNAL_ZLIB -DINTERNAL_JPEG=$INTERNAL_JPEG -DINTERNAL_PNG=$INTERNAL_PNG -DINTERNAL_FREETYPE=$INTERNAL_FREETYPE -DINTERNAL_GD=$INTERNAL_GD -DINTERNAL_JSON=$INTERNAL_JSON -DINTERNAL_GEOS=$INTERNAL_GEOS -DCOMMON_SUBSET_ONLY=$COMMON_SUBSET_ONLY
+    cmake "$SOURCE_DIR" -DMG_VERSION_MAJOR=$MG_VERSION_MAJOR -DMG_VERSION_MINOR=$MG_VERSION_MINOR -DMG_VERSION_RELEASE=$MG_VERSION_RELEASE -DMG_VERSION_REV=$MG_REV -DMG_INSTALL_PREFIX=$MG_INST_PREFIX -DMG_CPU=$BUILD_CPU -DWITH_JAVA=TRUE -DUSE_LD_GOLD=$USE_LD_GOLD -DSANITIZE_ADDRESS=$USE_ASAN -DPHP_VER=$PHP_VER -DHTTPD_VER=$HTTPD_VER -DCMAKE_BUILD_TYPE=$BUILD_CONFIG -DMG_OEM_WORK_DIR=$OEM_WORK_DIR -DMG_LINUXAPT_WORK_DIR=$LINUXAPT_WORK_DIR -DINTERNAL_XERCES=$INTERNAL_XERCES -DINTERNAL_ACE=$INTERNAL_ACE -DINTERNAL_ZLIB=$INTERNAL_ZLIB -DINTERNAL_JPEG=$INTERNAL_JPEG -DINTERNAL_PNG=$INTERNAL_PNG -DINTERNAL_FREETYPE=$INTERNAL_FREETYPE -DINTERNAL_GD=$INTERNAL_GD -DINTERNAL_JSON=$INTERNAL_JSON -DINTERNAL_GEOS=$INTERNAL_GEOS -DCOMMON_SUBSET_ONLY=$COMMON_SUBSET_ONLY -DWITH_PORTABLE=$ENABLE_MG_PORTABLE
     check_build
 fi
 cmake --build .



More information about the mapguide-commits mailing list