From: stzuraski898 Date: Wed, 28 Jan 2026 21:49:10 +0000 (+0000) Subject: test/mgr: Add DaemonKey unit tests X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=ad7a075995087fea0dd71b034f64b770589dfe66;p=ceph-ci.git test/mgr: Add DaemonKey unit tests Fixes: https://tracker.ceph.com/issues/72938 Signed-off-by: stzuraski898 --- diff --git a/src/test/mgr/test_daemonkey.cc b/src/test/mgr/test_daemonkey.cc new file mode 100644 index 00000000000..3b20f3a2493 --- /dev/null +++ b/src/test/mgr/test_daemonkey.cc @@ -0,0 +1,147 @@ +// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- +// vim: ts=8 sw=2 smarttab + +#include "gtest/gtest.h" +#include "mgr/DaemonKey.h" + +TEST(DaemonKey, Parse) +{ + auto [key, ok] = DaemonKey::parse("osd.1"); + ASSERT_TRUE(ok); + EXPECT_EQ(key.type, "osd"); + EXPECT_EQ(key.name, "1"); +} + +TEST(DaemonKey, LessThan) +{ + DaemonKey a{"mon", "a"}; + DaemonKey b{"osd", "1"}; + DaemonKey c{"osd", "2"}; + + EXPECT_TRUE(a < b); // mon < osd + EXPECT_TRUE(b < c); // 1 < 2 + EXPECT_FALSE(c < b); // 2 < 1 + EXPECT_FALSE(b < a); // osd < mon +} + +TEST(DaemonKey, Ostream) +{ + DaemonKey key{"osd", "1"}; + std::ostringstream oss; + oss << key; + + EXPECT_EQ(oss.str(), "osd.1"); +} + +TEST(DaemonKey, ToString) +{ + DaemonKey key{"osd", "1"}; + + EXPECT_EQ(ceph::to_string(key), "osd.1"); +} + +/* Start Negative Tests */ + +TEST(DaemonKey, ParseWithEmptyString) +{ + auto [key, ok] = DaemonKey::parse(""); + ASSERT_FALSE(ok); + EXPECT_EQ(key.type, ""); + EXPECT_EQ(key.name, ""); +} + +TEST(DaemonKey, ParseWithoutDot) +{ + auto [key, ok] = DaemonKey::parse("osd1"); + ASSERT_FALSE(ok); + EXPECT_EQ(key.type, ""); + EXPECT_EQ(key.name, ""); +} + +TEST(DaemonKey, ParseExtraDot) +{ + auto [key, ok] = DaemonKey::parse("osd.1.extra"); + ASSERT_TRUE(ok); + EXPECT_EQ(key.type, "osd"); + EXPECT_EQ(key.name, "1.extra"); +} + +TEST(DaemonKey, ParseStartDot) +{ + auto [key, ok] = DaemonKey::parse(".osd"); + ASSERT_TRUE(ok); + EXPECT_EQ(key.type, ""); + EXPECT_EQ(key.name, "osd"); +} + +TEST(DaemonKey, ParseEndDot) +{ + auto [key, ok] = DaemonKey::parse("osd."); + ASSERT_TRUE(ok); + EXPECT_EQ(key.type, "osd"); + EXPECT_EQ(key.name, ""); +} + +TEST(DaemonKey, ParseDot) +{ + auto [key, ok] = DaemonKey::parse("."); + ASSERT_TRUE(ok); + EXPECT_EQ(key.type, ""); + EXPECT_EQ(key.name, ""); +} + +TEST(DaemonKey, LessThanEmptyStr) +{ + DaemonKey a{"", ""}; + DaemonKey b{"", ""}; + DaemonKey c{"osd", "1"}; + + EXPECT_FALSE(a < b); + EXPECT_TRUE(a < c); + EXPECT_FALSE(c < a); +} + +TEST(DaemonKey, LessThanEmptyType) +{ + DaemonKey a{"", "1"}; + DaemonKey b{"", "2"}; + DaemonKey c{"osd", "1"}; + + EXPECT_TRUE(a < b); + EXPECT_TRUE(a < c); +} + +TEST(DaemonKey, LessThanEmptyName) +{ + DaemonKey a{"mon", ""}; + DaemonKey b{"mon", "a"}; + DaemonKey c{"osd", ""}; + + EXPECT_TRUE(a < b); + EXPECT_TRUE(a < c); +} + +TEST(DaemonKey, OstreamEmpty) +{ + DaemonKey key{"", ""}; + std::ostringstream oss; + oss << key; + + EXPECT_EQ(oss.str(), "."); +} + +TEST(DaemonKey, ToStringEmptyType) +{ + DaemonKey key{"", "1"}; + + EXPECT_EQ(ceph::to_string(key), ".1"); +} + +TEST(DaemonKey, ToStringEmptyName) +{ + DaemonKey key{"osd", ""}; + + EXPECT_EQ(ceph::to_string(key), "osd."); +} + +/* End Negative Tests */