MCPcopy Create free account
hub / github.com/apache/brpc / TestConnectInterruptImpl

Function TestConnectInterruptImpl

test/endpoint_unittest.cpp:552–580  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

550bool g_connect_startd = false;
551
552void TestConnectInterruptImpl(bool timed) {
553 butil::EndPoint ep;
554 ASSERT_EQ(0, butil::hostname2endpoint(g_hostname1, 80, &ep));
555
556 struct sockaddr_storage serv_addr{};
557 socklen_t serv_addr_size = 0;
558 ASSERT_EQ(0, endpoint2sockaddr(ep, &serv_addr, &serv_addr_size));
559 butil::fd_guard sockfd(socket(serv_addr.ss_family, SOCK_STREAM, 0));
560 ASSERT_LE(0, sockfd);
561
562 int rc;
563 if (timed) {
564 int64_t start_ms = butil::cpuwide_time_ms();
565 butil::tcp_connect(ep, NULL);
566 int64_t connect_ms = butil::cpuwide_time_ms() - start_ms;
567 LOG(INFO) << "Connect to " << ep << ", cost " << connect_ms << "ms";
568
569 timespec abstime = butil::milliseconds_from_now(connect_ms * 10);
570 rc = butil::pthread_timed_connect(
571 sockfd, (struct sockaddr*) &serv_addr,
572 serv_addr_size, &abstime);
573 } else {
574 rc = butil::pthread_timed_connect(
575 sockfd, (struct sockaddr*) &serv_addr,
576 serv_addr_size, NULL);
577 }
578 ASSERT_EQ(0, rc) << "errno=" << errno;
579 ASSERT_EQ(0, butil::is_connected(sockfd));
580}
581
582void* ConnectThread(void* arg) {
583 bool timed = *(bool*)arg;

Callers 1

ConnectThreadFunction · 0.70

Calls 7

hostname2endpointFunction · 0.85
endpoint2sockaddrFunction · 0.85
cpuwide_time_msFunction · 0.85
tcp_connectFunction · 0.85
milliseconds_from_nowFunction · 0.85
pthread_timed_connectFunction · 0.85
is_connectedFunction · 0.85

Tested by

no test coverage detected