//===-- ConnectionFileDescriptorTest.cpp ------------------------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #include "SocketTestUtilities.h" #include "gtest/gtest.h" #include "TestingSupport/SubsystemRAII.h" #include "lldb/Host/posix/ConnectionFileDescriptorPosix.h" #include "lldb/Utility/UriParser.h" using namespace lldb_private; class ConnectionFileDescriptorTest : public testing::Test { public: SubsystemRAII subsystems; void TestGetURI(std::string ip) { std::unique_ptr socket_a_up; std::unique_ptr socket_b_up; if (!IsAddressFamilySupported(ip)) { GTEST_LOG_(WARNING) << "Skipping test due to missing IPv" << (IsIPv4(ip) ? "4" : "6") << " support."; return; } CreateTCPConnectedSockets(ip, &socket_a_up, &socket_b_up); auto socket = socket_a_up.release(); ConnectionFileDescriptor connection_file_descriptor(socket); llvm::StringRef scheme; llvm::StringRef hostname; int port; llvm::StringRef path; std::string uri(connection_file_descriptor.GetURI()); EXPECT_TRUE(UriParser::Parse(uri, scheme, hostname, port, path)); EXPECT_EQ(ip, hostname); EXPECT_EQ(socket->GetRemotePortNumber(), port); } }; TEST_F(ConnectionFileDescriptorTest, TCPGetURIv4) { TestGetURI("127.0.0.1"); } TEST_F(ConnectionFileDescriptorTest, TCPGetURIv6) { TestGetURI("::1"); }