MCPcopy Create free account
hub / github.com/alibaba/PhotonLibOS / TEST

Function TEST

net/http/test/client_function_test.cpp:74–141  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

72};
73
74TEST(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';

Callers

nothing calls this directly

Calls 15

new_tcp_socket_serverFunction · 0.85
new_http_serverFunction · 0.85
new_localfs_adaptorFunction · 0.85
new_fs_handlerFunction · 0.85
to_urlFunction · 0.85
new_http_clientFunction · 0.85
new_uds_serverFunction · 0.85
new_proxy_handlerFunction · 0.85
add_handlerMethod · 0.80
resource_sizeMethod · 0.80
write_streamMethod · 0.80
body_sizeMethod · 0.80

Tested by

no test coverage detected