1*58d28b93SMichał Górny //===-- GDBRemoteCommunicationServerLLGSTest.cpp --------------------------===//
2*58d28b93SMichał Górny //
3*58d28b93SMichał Górny // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4*58d28b93SMichał Górny // See https://llvm.org/LICENSE.txt for license information.
5*58d28b93SMichał Górny // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6*58d28b93SMichał Górny //
7*58d28b93SMichał Górny //===----------------------------------------------------------------------===//
8*58d28b93SMichał Górny
9*58d28b93SMichał Górny #include "gtest/gtest.h"
10*58d28b93SMichał Górny
11*58d28b93SMichał Górny #include "Plugins/Process/gdb-remote/GDBRemoteCommunicationServerLLGS.h"
12*58d28b93SMichał Górny
13*58d28b93SMichał Górny using namespace lldb_private::process_gdb_remote;
14*58d28b93SMichał Górny
TEST(GDBRemoteCommunicationServerLLGSTest,LLGSArgToURL)15*58d28b93SMichał Górny TEST(GDBRemoteCommunicationServerLLGSTest, LLGSArgToURL) {
16*58d28b93SMichał Górny // LLGS new-style URLs should be passed through (indepenently of
17*58d28b93SMichał Górny // --reverse-connect)
18*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("listen://127.0.0.1:1234", false),
19*58d28b93SMichał Górny "listen://127.0.0.1:1234");
20*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("listen://127.0.0.1:1234", true),
21*58d28b93SMichał Górny "listen://127.0.0.1:1234");
22*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("connect://127.0.0.1:1234", false),
23*58d28b93SMichał Górny "connect://127.0.0.1:1234");
24*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("connect://127.0.0.1:1234", true),
25*58d28b93SMichał Górny "connect://127.0.0.1:1234");
26*58d28b93SMichał Górny
27*58d28b93SMichał Górny // LLGS legacy listen URLs should be converted if !reverse_connect
28*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("tcp://127.0.0.1:1234", false),
29*58d28b93SMichał Górny "listen://127.0.0.1:1234");
30*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("unix:///tmp/foo", false), "unix-accept:///tmp/foo");
31*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("unix-abstract://foo", false),
32*58d28b93SMichał Górny "unix-abstract-accept://foo");
33*58d28b93SMichał Górny
34*58d28b93SMichał Górny // LLGS listen host:port pairs should be converted to listen://
35*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("127.0.0.1:1234", false), "listen://127.0.0.1:1234");
36*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("[::1]:1234", false), "listen://[::1]:1234");
37*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("[[::1]:1234]", false), "listen://[[::1]:1234]");
38*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("localhost:1234", false), "listen://localhost:1234");
39*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("*:1234", false), "listen://*:1234");
40*58d28b93SMichał Górny
41*58d28b93SMichał Górny // LLGS listen :port special-case should be converted to listen://
42*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL(":1234", false), "listen://localhost:1234");
43*58d28b93SMichał Górny
44*58d28b93SMichał Górny // LLGS listen UNIX sockets should be converted to unix-accept://
45*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("/tmp/foo", false), "unix-accept:///tmp/foo");
46*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("127.0.0.1", false), "unix-accept://127.0.0.1");
47*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("[::1]", false), "unix-accept://[::1]");
48*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("localhost", false), "unix-accept://localhost");
49*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL(":frobnicate", false), "unix-accept://:frobnicate");
50*58d28b93SMichał Górny
51*58d28b93SMichał Górny // LLGS reverse connect host:port pairs should be converted to connect://
52*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("127.0.0.1:1234", true), "connect://127.0.0.1:1234");
53*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("[::1]:1234", true), "connect://[::1]:1234");
54*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("[[::1]:1234]", true), "connect://[[::1]:1234]");
55*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("localhost:1234", true), "connect://localhost:1234");
56*58d28b93SMichał Górny
57*58d28b93SMichał Górny // with LLGS reverse connect, anything else goes as unix-connect://
58*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("/tmp/foo", true), "unix-connect:///tmp/foo");
59*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("127.0.0.1", true), "unix-connect://127.0.0.1");
60*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("[::1]", true), "unix-connect://[::1]");
61*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL("localhost", true), "unix-connect://localhost");
62*58d28b93SMichał Górny EXPECT_EQ(LLGSArgToURL(":frobnicate", true), "unix-connect://:frobnicate");
63*58d28b93SMichał Górny }
64