[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