fixing flaky tests in mac and windows

This commit is contained in:
matlabbe
2026-05-30 21:28:53 -07:00
parent e8eabc1538
commit 3ecddfb583
6 changed files with 77 additions and 19 deletions
+11 -2
View File
@@ -827,8 +827,17 @@ TEST_F(RtabmapFixture, ParseParametersUpdatesSettings)
TEST_F(RtabmapFixture, SetWorkingDirectoryReflectsInGetter)
{
rtabmap_->setWorkingDirectory("/tmp");
EXPECT_EQ(rtabmap_->getWorkingDir(), std::string("/tmp"));
// setWorkingDirectory() silently no-ops if the path doesn't exist on disk,
// so use the platform's temp dir (which exists) instead of a hardcoded
// POSIX-only "/tmp". tempPath("") returns "<tempdir>/"; strip the trailing
// separator so the assertion compares the dir itself.
std::string wd = test::tempPath("");
if(!wd.empty() && (wd.back() == '/' || wd.back() == '\\'))
{
wd.pop_back();
}
rtabmap_->setWorkingDirectory(wd);
EXPECT_EQ(rtabmap_->getWorkingDir(), wd);
}
// ---------------------------------------------------------------------------
+7 -6
View File
@@ -559,13 +559,14 @@ TEST_F(RtabmapIntegrationFixture, NetherdroneLidar3D)
#endif
// libpointmatcher's TrimmedDist outlier filter aligns this sparse 3D-lidar
// dataset to sub-mm RMSE against the golden trajectory. With PCL ICP the
// best we can do is a RANSAC correspondence rejector (see
// util3d_registration.cpp), which converges but to a looser ~3 cm RMSE.
// dataset to ~1 mm RMSE against the golden trajectory on Linux; Windows
// math-lib differences push it slightly higher (~1.5 mm observed in CI).
// With PCL ICP the best we can do is a RANSAC correspondence rejector
// (see util3d_registration.cpp), which converges but to a looser ~3 cm RMSE.
ASSERT_GE(result.translationalRmseFinal, 0.0f)
<< "No Gt/translational_rmse in stats (golden GT not injected?)";
#ifdef RTABMAP_POINTMATCHER
EXPECT_LT(result.translationalRmseFinal, 0.001f)
EXPECT_LT(result.translationalRmseFinal, 0.002f)
<< "Final trajectory RMSE = " << result.translationalRmseFinal << " m";
#else
EXPECT_LT(result.translationalRmseFinal, 0.05f)
@@ -643,9 +644,9 @@ TEST_F(RtabmapIntegrationFixture, PR2_Scan2D_RGBD)
EXPECT_EQ(21, result.finalGlobalGraphSize);
EXPECT_GE(result.proximityDetections, 1)
<< "PR2 2D-scan dataset should produce proximity detections";
// Observed: empty 2863-3048, obstacle 4339-4937. Wide bounds absorb
// Observed: empty 2696-3048, obstacle 4339-4937. Wide bounds absorb
// platform-level FP differences in the visual loop-closure path.
EXPECT_GE(result.gridEmptyCells, 2700);
EXPECT_GE(result.gridEmptyCells, 2600);
EXPECT_LE(result.gridEmptyCells, 3200);
EXPECT_GE(result.gridObstacleCells, 4200);
EXPECT_LE(result.gridObstacleCells, 5100);
+9 -4
View File
@@ -10,7 +10,6 @@
#include "rtabmap/core/VWDictionary.h"
#include "rtabmap/core/VisualWord.h"
#include "rtabmap/core/Parameters.h"
#include "rtabmap/utilite/ULogger.h"
#include "rtabmap/utilite/UFile.h"
#include <vector>
#include <list>
@@ -61,9 +60,6 @@ TEST_F(VWDictionaryTest, AddNewWordsIncremental)
params.insert(ParametersPair(Parameters::kKpNndrRatio(), "0.4"));
dict->parseParameters(params);
ULogger::setType(ULogger::kTypeConsole);
ULogger::setLevel(ULogger::kDebug);
for(VWDictionary::NNStrategy strategy : strategies)
{
// Reset dictionary for each strategy
@@ -683,6 +679,14 @@ TEST_F(VWDictionaryTest, SerializeDeserializeIndex)
// Serialize
std::vector<unsigned char> data = dict->serializeIndex();
#ifdef _WIN32
// FlannIndex::serializeIndex() is not implemented on Windows
// (see corelib/src/FlannIndex.cpp), so it always returns empty
// data regardless of the strategy. Skip the rest of the
// round-trip assertions on Windows.
EXPECT_EQ(data.size(), 0u) << "Strategy: " << VWDictionary::nnStrategyName(strategy);
continue;
#else
if(strategy < VWDictionary::kNNBruteForce)
{
// flann strategies
@@ -691,6 +695,7 @@ TEST_F(VWDictionaryTest, SerializeDeserializeIndex)
else {
EXPECT_EQ(data.size(), 0u) << "Strategy: " << VWDictionary::nnStrategyName(strategy);
}
#endif
// Create new dictionary and deserialize
VWDictionary dict2;