From 9243710ca372de26823c2225c7b46b072458c671 Mon Sep 17 00:00:00 2001
From: lichao <lichao@aiotlink.com>
Date: 星期五, 28 五月 2021 17:18:33 +0800
Subject: [PATCH] tcp proxy requests, need more test.

---
 utest/tcp_test.cpp |   61 ++++++++++++++++++++----------
 1 files changed, 41 insertions(+), 20 deletions(-)

diff --git a/utest/tcp_test.cpp b/utest/tcp_test.cpp
index a838252..86a0897 100644
--- a/utest/tcp_test.cpp
+++ b/utest/tcp_test.cpp
@@ -19,6 +19,7 @@
 #include "defs.h"
 #include "node_center.h"
 #include "tcp_connection.h"
+#include "tcp_proxy.h"
 #include "tcp_server.h"
 #include "util.h"
 #include <sys/ioctl.h>
@@ -33,34 +34,54 @@
 
 BOOST_AUTO_TEST_CASE(TcpTest)
 {
-	SharedMemory &shm = TestShm();
-
 	const std::string connect_addr = "127.0.0.1";
 	const uint16_t port = kBHCenterPort;
 
-	boost::asio::io_context io;
+	IoService io;
 
 	tcp::endpoint dest(ip::address::from_string(connect_addr), port);
-	MsgRequestTopic req;
-	req.set_topic("#center_query_procs");
-	req.set_data("");
-	auto head = InitMsgHead(GetType(req), "#test_proc", 1000000);
-	auto route = head.add_route();
-	route->set_mq_id(12345);
-	route->set_abs_addr(67890);
 
-	head.mutable_dest()->set_ip(connect_addr);
-	head.mutable_dest()->set_port(port);
-	head.mutable_dest()->set_mq_id(1000011);
-	head.mutable_dest()->set_abs_addr(10296);
+	auto NewRequest = [&]() {
+		MsgRequestTopic req;
+		req.set_topic("#center_query_procs");
+		req.set_data("");
+		auto head = InitMsgHead(GetType(req), "#test_proc", 1000000);
+		auto route = head.add_route();
+		route->set_mq_id(12345);
+		route->set_abs_addr(67890);
 
-	auto request(MsgI::Serialize(head, req));
-	for (int i = 0; i < 1; ++i) {
-		LOG_DEBUG() << "request size: " << request.size();
-		TcpRequest1::Create(io, dest, request, DefaultSender(BHomeShm()));
+		head.mutable_dest()->set_ip(connect_addr);
+		head.mutable_dest()->set_port(port);
+		head.mutable_dest()->set_mq_id(1000011);
+		head.mutable_dest()->set_abs_addr(10296);
+
+		return (MsgI::Serialize(head, req));
+	};
+	auto onReply = [](BHMsgHead &head, std::string body_content) {
+		static int n = 0;
+		printf("reply %d: ", ++n);
+		MsgRequestTopicReply reply;
+		if (reply.ParseFromString(body_content)) {
+			if (IsSuccess(reply.errmsg().errcode())) {
+				printf("\ncontent: %s\n", reply.data().c_str());
+			} else {
+				printf("error: %s\n", reply.errmsg().errstring().c_str());
+			}
+		} else {
+			printf("parse error\n");
+		}
+	};
+	for (int i = 0; i < 100; ++i) {
+		auto request = NewRequest();
+		TcpRequest1::Create(io.io(), dest, request, onReply);
 	}
-
-	io.run();
+	Sleep(2s);
+	printf("-------------------------------------------------------\n");
+	for (int i = 0; i < 3; ++i) {
+		auto request = NewRequest();
+		TcpRequest1::Create(io.io(), dest, request, onReply);
+	}
+	Sleep(2s);
 
 	printf("TcpTest\n");
 }

--
Gitblit v1.8.0