@@ -88,6 +88,28 @@ TEST_P(SocketTest, DomainListenConnectAccept) {
88
88
CreateDomainConnectedSockets (Path, &socket_a_up, &socket_b_up);
89
89
}
90
90
91
+ TEST_P (SocketTest, DomainListenGetListeningConnectionURI) {
92
+ llvm::SmallString<64 > Path;
93
+ std::error_code EC =
94
+ llvm::sys::fs::createUniqueDirectory (" DomainListenConnectAccept" , Path);
95
+ ASSERT_FALSE (EC);
96
+ llvm::sys::path::append (Path, " test" );
97
+
98
+ // Skip the test if the $TMPDIR is too long to hold a domain socket.
99
+ if (Path.size () > 107u )
100
+ return ;
101
+
102
+ auto listen_socket_up = std::make_unique<DomainSocket>(
103
+ /* should_close=*/ true );
104
+ Status error = listen_socket_up->Listen (Path, 5 );
105
+ ASSERT_THAT_ERROR (error.ToError (), llvm::Succeeded ());
106
+ ASSERT_TRUE (listen_socket_up->IsValid ());
107
+
108
+ ASSERT_THAT (
109
+ listen_socket_up->GetListeningConnectionURI (),
110
+ testing::ElementsAre (llvm::formatv (" unix-connect://{0}" , Path).str ()));
111
+ }
112
+
91
113
TEST_P (SocketTest, DomainMainLoopAccept) {
92
114
llvm::SmallString<64 > Path;
93
115
std::error_code EC =
@@ -225,12 +247,29 @@ TEST_P(SocketTest, TCPListen0GetPort) {
225
247
if (!HostSupportsIPv4 ())
226
248
return ;
227
249
llvm::Expected<std::unique_ptr<TCPSocket>> sock =
228
- Socket::TcpListen (" 10.10.12.3:0" , false );
250
+ Socket::TcpListen (" 10.10.12.3:0" , 5 );
229
251
ASSERT_THAT_EXPECTED (sock, llvm::Succeeded ());
230
252
ASSERT_TRUE (sock.get ()->IsValid ());
231
253
EXPECT_NE (sock.get ()->GetLocalPortNumber (), 0 );
232
254
}
233
255
256
+ TEST_P (SocketTest, TCPListen0GetListeningConnectionURI) {
257
+ if (!HostSupportsProtocol ())
258
+ return ;
259
+
260
+ std::string addr = llvm::formatv (" [{0}]:0" , GetParam ().localhost_ip ).str ();
261
+ llvm::Expected<std::unique_ptr<TCPSocket>> sock = Socket::TcpListen (addr);
262
+ ASSERT_THAT_EXPECTED (sock, llvm::Succeeded ());
263
+ ASSERT_TRUE (sock.get ()->IsValid ());
264
+
265
+ EXPECT_THAT (
266
+ sock.get ()->GetListeningConnectionURI (),
267
+ testing::ElementsAre (llvm::formatv (" connection://[{0}]:{1}" ,
268
+ GetParam ().localhost_ip ,
269
+ sock->get ()->GetLocalPortNumber ())
270
+ .str ()));
271
+ }
272
+
234
273
TEST_P (SocketTest, TCPGetConnectURI) {
235
274
std::unique_ptr<TCPSocket> socket_a_up;
236
275
std::unique_ptr<TCPSocket> socket_b_up;
0 commit comments