提交 86026e99 编写于 作者: X Xiangquan Xiao 提交者: Jiangtao Hu

Common: Add MessageFingerprint util. (#1370)

上级 c28f0317
......@@ -87,6 +87,13 @@ bool DumpMessage(const std::shared_ptr<T>& msg,
*msg, util::StrCat(dump_path, "/", sequence_num, ".pb.txt"));
}
inline size_t MessageFingerprint(const google::protobuf::Message& message) {
static std::hash<std::string> hash_fn;
std::string proto_bytes;
message.SerializeToString(&proto_bytes);
return hash_fn(proto_bytes);
}
// template <typename T, typename std::enable_if<
// std::is_base_of<Message, T>::value, int>::type = 0>
// double GetDelaySec(const std::shared_ptr<T>& msg) {
......
......@@ -25,7 +25,7 @@ namespace apollo {
namespace common {
namespace util {
TEST(StringUtilTest, dump_message) {
TEST(MessageUtilTest, DumpMessage) {
auto a = 1;
EXPECT_TRUE(DumpMessage(a));
auto simple_msg = std::make_shared<test::SimpleMessage>();
......@@ -35,7 +35,25 @@ TEST(StringUtilTest, dump_message) {
PathExists("/tmp/apollo.common.util.test.SimpleMessage/0.pb.txt"));
}
// TEST(StringUtilTest, get_desy_sec) {
TEST(MessageUtilTest, MessageFingerprint) {
test::SimpleMessage msg;
const size_t fp0 = MessageFingerprint(msg);
msg.set_integer(1);
const size_t fp1 = MessageFingerprint(msg);
EXPECT_NE(fp0, fp1);
msg.set_integer(2);
EXPECT_NE(fp1, MessageFingerprint(msg));
msg.set_integer(1);
EXPECT_EQ(fp1, MessageFingerprint(msg));
msg.clear_integer();
EXPECT_EQ(fp0, MessageFingerprint(msg));
}
// TEST(MessageUtilTest, get_desy_sec) {
// auto simple_msg = std::make_shared<test::SimpleMessage>();
// FillHeader("test", simple_msg.get());
// EXPECT_GT(GetDelaySec(simple_msg), 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册