| 72 | }; |
| 73 | |
| 74 | TEST(http_client, get) { |
| 75 | system("mkdir -p /tmp/ease_ut/http_test/"); |
| 76 | system("echo \"this is a http_client request body text for socket stream\" > /tmp/ease_ut/http_test/ease-httpclient-gettestfile"); |
| 77 | auto tcpserver = new_tcp_socket_server(); |
| 78 | tcpserver->setsockopt<int>(IPPROTO_TCP, TCP_NODELAY, 1); |
| 79 | tcpserver->bind_v4any(); |
| 80 | tcpserver->listen(); |
| 81 | DEFER(delete tcpserver); |
| 82 | auto server = new_http_server(); |
| 83 | DEFER(delete server); |
| 84 | auto fs = photon::fs::new_localfs_adaptor("/tmp/ease_ut/http_test/"); |
| 85 | DEFER(delete fs); |
| 86 | auto fs_handler = new_fs_handler(fs); |
| 87 | DEFER(delete fs_handler); |
| 88 | server->add_handler(fs_handler); |
| 89 | tcpserver->set_handler(server->get_connection_handler()); |
| 90 | tcpserver->start_loop(); |
| 91 | auto target = to_url(tcpserver, "/ease-httpclient-gettestfile"); |
| 92 | auto client = new_http_client(); |
| 93 | DEFER(delete client); |
| 94 | auto op2 = client->new_operation(Verb::GET, target); |
| 95 | DEFER(client->destroy_operation(op2)); |
| 96 | op2->req.headers.content_length(0); |
| 97 | int ret = client->call(op2); |
| 98 | GTEST_ASSERT_EQ(0, ret); |
| 99 | |
| 100 | char resp_body_buf[1024]; |
| 101 | EXPECT_EQ(sizeof(socket_buf), op2->resp.resource_size()); |
| 102 | ret = op2->resp.read(resp_body_buf, sizeof(socket_buf)); |
| 103 | EXPECT_EQ(sizeof(socket_buf), ret); |
| 104 | resp_body_buf[sizeof(socket_buf) - 1] = '\0'; |
| 105 | LOG_DEBUG(resp_body_buf); |
| 106 | EXPECT_EQ(0, strcmp(resp_body_buf, socket_buf)); |
| 107 | |
| 108 | auto op3 = client->new_operation(Verb::GET, target); |
| 109 | DEFER(client->destroy_operation(op3)); |
| 110 | op3->req.headers.content_length(0); |
| 111 | op3->req.headers.range(10, 19); |
| 112 | client->call(op3); |
| 113 | char resp_body_buf_range[1024]; |
| 114 | ret = op3->resp.read(resp_body_buf_range, op3->resp.headers.content_length()); |
| 115 | resp_body_buf_range[10] = '\0'; |
| 116 | EXPECT_EQ(0, strcmp("http_clien", resp_body_buf_range)); |
| 117 | LOG_DEBUG(resp_body_buf_range); |
| 118 | |
| 119 | auto op4 = client->new_operation(Verb::GET, target); |
| 120 | DEFER(client->destroy_operation(op4)); |
| 121 | op4->req.headers.content_length(0); |
| 122 | op4->call(); |
| 123 | EXPECT_EQ(sizeof(socket_buf), op4->resp.resource_size()); |
| 124 | ret = op4->resp.read(resp_body_buf, 10); |
| 125 | EXPECT_EQ(10, ret); |
| 126 | resp_body_buf[10] = '\0'; |
| 127 | EXPECT_EQ(0, strcmp("this is a ", resp_body_buf)); |
| 128 | LOG_DEBUG(resp_body_buf); |
| 129 | ret = op4->resp.read(resp_body_buf, 10); |
| 130 | EXPECT_EQ(10, ret); |
| 131 | resp_body_buf[10] = '\0'; |
nothing calls this directly
no test coverage detected