@@ -88,6 +88,28 @@ TEST_P(SocketTest, DomainListenConnectAccept) {
8888 CreateDomainConnectedSockets (Path, &socket_a_up, &socket_b_up);
8989}
9090
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+
91113TEST_P (SocketTest, DomainMainLoopAccept) {
92114 llvm::SmallString<64 > Path;
93115 std::error_code EC =
@@ -225,12 +247,29 @@ TEST_P(SocketTest, TCPListen0GetPort) {
225247 if (!HostSupportsIPv4 ())
226248 return ;
227249 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 );
229251 ASSERT_THAT_EXPECTED (sock, llvm::Succeeded ());
230252 ASSERT_TRUE (sock.get ()->IsValid ());
231253 EXPECT_NE (sock.get ()->GetLocalPortNumber (), 0 );
232254}
233255
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+
234273TEST_P (SocketTest, TCPGetConnectURI) {
235274 std::unique_ptr<TCPSocket> socket_a_up;
236275 std::unique_ptr<TCPSocket> socket_b_up;
0 commit comments