| //===-- 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 "lldb/Host/posix/ConnectionFileDescriptorPosix.h" | |
| #include "lldb/Utility/UriParser.h" | |
| using namespace lldb_private; | |
| class ConnectionFileDescriptorTest : public testing::Test { | |
| public: | |
| void SetUp() override { | |
| ASSERT_THAT_ERROR(Socket::Initialize(), llvm::Succeeded()); | |
| } | |
| void TearDown() override { Socket::Terminate(); } | |
| void TestGetURI(std::string ip) { | |
| std::unique_ptr<TCPSocket> socket_a_up; | |
| std::unique_ptr<TCPSocket> 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"); } |