return pgid.preferred();
}
bool parse(const char *s);
+ bool parse(const std::string& s) {
+ return parse(s.c_str());
+ }
bool is_split(unsigned old_pg_num, unsigned new_pg_num,
set<spg_t> *pchildren) const {
set<pg_t> _children;
const std::string& to_str() const {
return str;
}
+ bool parse(const std::string& s) {
+ if (s == "meta") {
+ str = s;
+ return true;
+ }
+ if (s.find("_head") == s.length() - 5 ||
+ s.find("_TEMP") == s.length() - 5) {
+ spg_t pgid;
+ if (pgid.parse(s.substr(0, s.length() - 5))) {
+ str = s;
+ return true;
+ }
+ }
+ return false;
+ }
const char* c_str() const {
return str.c_str();
ASSERT_EQ(b, bb);
}
+TEST(coll_t, parse) {
+ coll_t a;
+ ASSERT_TRUE(a.parse("meta"));
+ ASSERT_TRUE(a.parse("1.2_head"));
+ ASSERT_TRUE(a.parse("1.2_TEMP"));
+ ASSERT_TRUE(a.parse("1.2s3_head"));
+ ASSERT_TRUE(a.parse("1.2s3_TEMP"));
+ ASSERT_TRUE(a.parse("1.2s0_head"));
+ ASSERT_FALSE(a.parse("foo"));
+ ASSERT_FALSE(a.parse("1.2_food"));
+ ASSERT_FALSE(a.parse("1.2_temp"));
+ ASSERT_FALSE(a.parse(""));
+}
+
TEST(coll_t, temp) {
spg_t pgid;
coll_t foo(pgid);