Files
my-chat_-server/transmite/test/user_client.cc
2025-10-13 18:34:48 +08:00

80 lines
3.0 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "etcd.hpp"
#include "channel.hpp"
#include "utils.hpp"
#include <gflags/gflags.h>
#include <gtest/gtest.h>
#include <thread>
#include "user.pb.h"
#include "base.pb.h"
DEFINE_bool(run_mode, false, "程序的运行模式false-调试; true-发布;");
DEFINE_string(log_file, "", "发布模式下,用于指定日志的输出文件");
DEFINE_int32(log_level, 0, "发布模式下,用于指定日志输出等级");
DEFINE_string(etcd_host, "http://127.0.0.1:2379", "服务注册中心地址");
DEFINE_string(base_service, "/service", "服务监控根目录");
DEFINE_string(user_service, "/service/user_service", "服务监控根目录");
bite_im::ServiceManager::ptr user_channels;
void reg_user(const std::string &nickname, const std::string &pswd) {
auto channel = user_channels->choose(FLAGS_user_service);//获取通信信道
ASSERT_TRUE(channel);
bite_im::UserRegisterReq req;
req.set_request_id(bite_im::uuid());
req.set_nickname(nickname);
req.set_password(pswd);
bite_im::UserRegisterRsp rsp;
brpc::Controller cntl;
bite_im::UserService_Stub stub(channel.get());
stub.UserRegister(&cntl, &req, &rsp, nullptr);
ASSERT_FALSE(cntl.Failed());
ASSERT_TRUE(rsp.success());
}
void set_user_avatar(const std::string &uid, const std::string &avatar) {
auto channel = user_channels->choose(FLAGS_user_service);//获取通信信道
ASSERT_TRUE(channel);
bite_im::SetUserAvatarReq req;
req.set_request_id(bite_im::uuid());
req.set_user_id(uid);
req.set_session_id("测试登录会话ID");
req.set_avatar(avatar);
bite_im::SetUserAvatarRsp rsp;
brpc::Controller cntl;
bite_im::UserService_Stub stub(channel.get());
stub.SetUserAvatar(&cntl, &req, &rsp, nullptr);
ASSERT_FALSE(cntl.Failed());
ASSERT_TRUE(rsp.success());
}
int main(int argc, char *argv[])
{
google::ParseCommandLineFlags(&argc, &argv, true);
bite_im::init_logger(FLAGS_run_mode, FLAGS_log_file, FLAGS_log_level);
user_channels = std::make_shared<bite_im::ServiceManager>();
user_channels->declared(FLAGS_user_service);
auto put_cb = std::bind(&bite_im::ServiceManager::onServiceOnline, user_channels.get(), std::placeholders::_1, std::placeholders::_2);
auto del_cb = std::bind(&bite_im::ServiceManager::onServiceOffline, user_channels.get(), std::placeholders::_1, std::placeholders::_2);
//2. 构造服务发现对象
bite_im::Discovery::ptr dclient = std::make_shared<bite_im::Discovery>(FLAGS_etcd_host, FLAGS_base_service, put_cb, del_cb);
reg_user("小猪佩奇", "123456");
reg_user("小猪乔治", "123456");
std::string uid1, uid2;
std::cout << "输入佩奇用户ID";
std::fflush(stdout);
std::cin >> uid1;
std::cout << "输入乔治用户ID";
std::fflush(stdout);
std::cin >> uid2;
set_user_avatar(uid1, "佩奇的头像数据");
set_user_avatar(uid2, "乔治的头像数据");
// set_user_avatar("672f-c755e83e-0000", "猪爸爸头像数据");
// set_user_avatar("ee55-9043bfd7-0001", "猪妈妈头像数据");
return 0;
}