MCPcopy Create free account
hub / github.com/apache/impala / DoUnixSocketTest

Method DoUnixSocketTest

be/src/kudu/util/net/socket-test.cc:160–200  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

158 }
159
160 void DoUnixSocketTest(const string& path) {
161 const string kData = "hello world over a socket";
162
163 NO_FATALS(BindAndListenUnix(path));
164 std::thread t(
165 [&]{
166 Sockaddr new_addr;
167 Socket sock;
168 CHECK_OK(listener_.Accept(&sock, &new_addr, 0));
169
170 // Test GetPeerAddress from server side.
171 Sockaddr peer_addr;
172 CHECK_OK(sock.GetPeerAddress(&peer_addr));
173 CHECK(HasPrefixString(peer_addr.ToString(), "unix:"));
174 size_t n_written;
175 CHECK_OK(sock.BlockingWrite(
176 reinterpret_cast<const uint8_t*>(kData.data()), kData.size(), &n_written,
177 MonoTime::Now() + MonoDelta::FromSeconds(10)));
178 CHECK_OK(sock.Close());
179 });
180 auto cleanup = MakeScopedCleanup([&] { t.join(); });
181
182 Socket client = ConnectToListeningServer();
183
184 // Test GetPeerAddress from client side.
185 Sockaddr peer_addr;
186 ASSERT_OK(client.GetPeerAddress(&peer_addr));
187 EXPECT_EQ("unix:" + path, peer_addr.ToString());
188
189 size_t n;
190 char buf[kData.size()];
191 ASSERT_OK(client.BlockingRecv(reinterpret_cast<uint8_t*>(buf), kData.size(), &n,
192 MonoTime::Now() + MonoDelta::FromSeconds(5)));
193 cleanup.cancel();
194 t.join();
195
196 ASSERT_OK(client.Close());
197
198 ASSERT_EQ(n, kData.size());
199 ASSERT_EQ(string(buf, n), kData);
200 }
201};
202
203TEST_F(SocketTest, TestRecvReset) {

Callers

nothing calls this directly

Calls 12

HasPrefixStringFunction · 0.85
MakeScopedCleanupFunction · 0.85
AcceptMethod · 0.80
BlockingWriteMethod · 0.80
BlockingRecvMethod · 0.80
GetPeerAddressMethod · 0.45
ToStringMethod · 0.45
dataMethod · 0.45
sizeMethod · 0.45
CloseMethod · 0.45
joinMethod · 0.45
cancelMethod · 0.45

Tested by

no test coverage detected