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

Function TestConnectInterruptImpl

test/bthread_fd_unittest.cpp:603–631  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

601}
602
603void TestConnectInterruptImpl(bool timed) {
604 butil::EndPoint ep;
605 ASSERT_EQ(0, butil::hostname2endpoint(g_hostname1, 80, &ep));
606 struct sockaddr_storage serv_addr{};
607 socklen_t serv_addr_size = 0;
608 ASSERT_EQ(0, endpoint2sockaddr(ep, &serv_addr, &serv_addr_size));
609 butil::fd_guard sockfd(socket(serv_addr.ss_family, SOCK_STREAM, 0));
610 ASSERT_GE(sockfd, 0);
611
612 int rc;
613 if (timed) {
614 int64_t start_ms = butil::cpuwide_time_ms();
615 butil::tcp_connect(ep, NULL);
616 int64_t connect_ms = butil::cpuwide_time_ms() - start_ms;
617 LOG(INFO) << "Connect to " << ep << ", cost " << connect_ms << "ms";
618
619 timespec abstime = butil::milliseconds_from_now(connect_ms * 10);
620 rc = bthread_timed_connect(
621 sockfd, (struct sockaddr*) &serv_addr,
622 serv_addr_size, &abstime);
623 } else {
624 rc = bthread_timed_connect(
625 sockfd, (struct sockaddr*) &serv_addr,
626 serv_addr_size, NULL);
627 }
628 ASSERT_EQ(0, rc) << "errno=" << errno;
629 ASSERT_EQ(0, butil::is_connected(sockfd));
630
631}
632
633void* ConnectThread(void* arg) {
634 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
bthread_timed_connectFunction · 0.85
is_connectedFunction · 0.85

Tested by

no test coverage detected