void test_serde() { // dynamic create message. MessageHelper helper; FileDescriptorProto file_proto; file_proto.set_name("test.proo"); DescriptorProto *message_proto = file_proto.add_message_type(); message_proto->set_name("Pair"); auto field = message_proto->add_field(); field->set_name("key"); field->set_label(FieldDescriptorProto_Label_LABEL_REQUIRED); field->set_type(FieldDescriptorProto_Type_TYPE_STRING); field->set_number(1); field = message_proto->add_field(); field->set_name("value"); field->set_label(FieldDescriptorProto_Label_LABEL_REQUIRED); field->set_type(FieldDescriptorProto_Type_TYPE_BYTES); field->set_number(2); helper.registerDynamicMessage(file_proto); auto src = helper.createMessage("Pair"); auto ref = src->GetReflection(); string key("scott"); string value("tiger"); ref->SetString(src.get(), src->GetDescriptor()->FindFieldByName("key"), key); ref->SetString(src.get(), src->GetDescriptor()->FindFieldByName("value"), value); // test serde check_serde_str(src.get(), helper.createMessage("Pair").get()); check_serde_array(src.get(), helper.createMessage("Pair").get()); check_serstr_dearray(src.get(), helper.createMessage("Pair").get()); check_serarray_destr(src.get(), helper.createMessage("Pair").get()); }
TEST(DynamicProto, registerDynamicMessage) { MessageHelper helper; ResultCode resultCode; resultCode = helper.registerDynamicMessage("conf/tpch.proto"); ASSERT_TRUE(resultCode == RC_SUCCESS); auto account = helper.createMessage("idgs.sample.tpch.pb.Customer"); ASSERT_TRUE(account != NULL); }