| 550 | bool g_connect_startd = false; |
| 551 | |
| 552 | void 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 | |
| 582 | void* ConnectThread(void* arg) { |
| 583 | bool timed = *(bool*)arg; |
no test coverage detected