diff --git a/core/src/lib/qualified_resource_name_type_converter.cc b/core/src/lib/qualified_resource_name_type_converter.cc index f2bc6c7eefe..0cb5caff09b 100644 --- a/core/src/lib/qualified_resource_name_type_converter.cc +++ b/core/src/lib/qualified_resource_name_type_converter.cc @@ -61,7 +61,7 @@ bool QualifiedResourceNameTypeConverter::ResourceToString(const std::string &nam { std::string r_name = ResourceTypeToString(r_type); if (r_name.empty()) { return false; } - str_out = r_name + std::string(":") + name_of_resource; + str_out = r_name + record_separator_ + name_of_resource; return true; } @@ -72,7 +72,7 @@ bool QualifiedResourceNameTypeConverter::ResourceToString(const std::string &nam { std::string r_name = ResourceTypeToString(r_type); if (r_name.empty()) { return false; } - str_out = r_name + std::string(":") + name_of_resource + std::string(":") + std::to_string(job_id); + str_out = r_name + record_separator_ + name_of_resource + record_separator_ + std::to_string(job_id); return true; } @@ -94,7 +94,7 @@ bool QualifiedResourceNameTypeConverter::StringToResource(std::string &name_of_r const std::string &str_in) const { std::vector string_list; - SplitStringIntoList(str_in, string_list, ':', 3); + SplitStringIntoList(str_in, string_list, record_separator_, 3); if (string_list.size() < 2) { /* minimum of parameters are name_of_resource and r_type */ return false; } diff --git a/core/src/lib/qualified_resource_name_type_converter.h b/core/src/lib/qualified_resource_name_type_converter.h index cfc71282cd7..8d736f2faa3 100644 --- a/core/src/lib/qualified_resource_name_type_converter.h +++ b/core/src/lib/qualified_resource_name_type_converter.h @@ -34,7 +34,8 @@ class QualifiedResourceNameTypeConverter { std::string &out) const; bool StringToResource(std::string &name_of_resource, int &r_type, int &job_id, const std::string &in) const; - private: +private: + static constexpr char record_separator_ = 0x1e; const std::map type_name_relation_map_; const std::map name_type_relation_map_; diff --git a/core/src/lib/unittests/qualified_resource_name_type_converter_test.cc b/core/src/lib/unittests/qualified_resource_name_type_converter_test.cc index 31a00e2bc9c..3429b3eeaf5 100644 --- a/core/src/lib/unittests/qualified_resource_name_type_converter_test.cc +++ b/core/src/lib/unittests/qualified_resource_name_type_converter_test.cc @@ -25,6 +25,8 @@ #undef private #include "include/bareos.h" +static constexpr char record_separator_ = 0x1e; + enum { kOne = 1, @@ -55,12 +57,16 @@ TEST(QualifiedResourceNameTypeConverter, StringToType) EXPECT_EQ(c.StringToResourceType("kNotInsertedIntoMap"), -1); job_id = -1; /* job_id should be unchanged */ - ok = c.StringToResource(name, r_type, job_id, "kOne:Developer"); + std::string tmp; + tmp = std::string("kOne") + record_separator_ + std::string("Developer"); + ok = c.StringToResource(name, r_type, job_id, tmp); EXPECT_EQ(ok, true); EXPECT_EQ(job_id, -1); - job_id = -1; /* job_id should will be changed */ - ok = c.StringToResource(name, r_type, job_id, "kOne:Developer:123"); + job_id = -1; /* job_id will be changed in this test */ + std::string test1 = std::string("kOne") + record_separator_ + std::string("Developer") + record_separator_ + + std::string("123"); + ok = c.StringToResource(name, r_type, job_id, test1.c_str()); EXPECT_EQ(ok, true); EXPECT_EQ(r_type, kOne); EXPECT_EQ(job_id, 123); @@ -71,8 +77,10 @@ TEST(QualifiedResourceNameTypeConverter, StringToType) EXPECT_EQ(ok, false); /* try invalid job_id (not a number) */ - job_id = -2; /* job_id should be unchanged */ - ok = c.StringToResource(name, r_type, job_id, "kOne:Developer:foo"); + job_id = -2; /* job_id should be unchanged in this test */ + std::string test2 = std::string("kOne") + record_separator_ + std::string("Developer") + record_separator_ + + std::string("foo"); + ok = c.StringToResource(name, r_type, job_id, test2.c_str()); EXPECT_EQ(ok, false); EXPECT_EQ(job_id, -2); } @@ -94,13 +102,16 @@ TEST(QualifiedResourceNameTypeConverter, TypeToString) /* resource without job_id */ ok = c.ResourceToString("ResourceName", kTwo, result_str); EXPECT_EQ(ok, true); - EXPECT_STREQ(result_str.c_str(), "kTwo:ResourceName"); + std::string test1 = std::string("kTwo") + record_separator_ + std::string("ResourceName"); + EXPECT_STREQ(result_str.c_str(), test1.c_str()); /* resource with job_id */ job_id = 456; - ok = c.ResourceToString("ResourceName2", kTwo, job_id, result_str); + ok = c.ResourceToString("ResourceName2", kThree, job_id, result_str); EXPECT_EQ(ok, true); - EXPECT_STREQ(result_str.c_str(), "kTwo:ResourceName2:456"); + std::string test2 = std::string("kThree") + record_separator_ + std::string("ResourceName2") + record_separator_ + + std::string("456"); + EXPECT_STREQ(result_str.c_str(), test2.c_str()); /* try invalid resource type */ ok = c.ResourceToString("ResourceName", kNotInsertedIntoMap, result_str);