[cdc_stream] Add a CLI client to start/stop asset streaming sessions (#4)

Implements the cdc_stream client and adjusts asset streaming in
various places to work better outside of a GGP environment.

This CL tries to get quoting for SSH commands right. It also brings
back the ability to start a streaming session from
asset_stream_manager.

Also cleans up Bazel targets setup. Since the sln file is now in root,
it is no longer necessary to prepend ../ to relative filenames to
make clicking on errors work.
This commit is contained in:
Lutz Justen
2022-11-18 10:59:42 +01:00
committed by GitHub
parent ca84d3dd2e
commit 269fb2be45
38 changed files with 797 additions and 356 deletions
+32 -27
View File
@@ -97,35 +97,40 @@ TEST_F(RemoteUtilTest, BuildProcessStartInfoForSshWithCustomCommand) {
ExpectContains(si.command, {kCustomSshCmd});
}
TEST_F(RemoteUtilTest, EscapeForWindows) {
EXPECT_EQ("foo", RemoteUtil::EscapeForWindows("foo"));
EXPECT_EQ("foo bar", RemoteUtil::EscapeForWindows("foo bar"));
EXPECT_EQ("foo\\bar", RemoteUtil::EscapeForWindows("foo\\bar"));
EXPECT_EQ("\\\\foo", RemoteUtil::EscapeForWindows("\\\\foo"));
EXPECT_EQ("foo\\\\", RemoteUtil::EscapeForWindows("foo\\"));
EXPECT_EQ("foo\\\\\\\\", RemoteUtil::EscapeForWindows("foo\\\\"));
EXPECT_EQ("foo\\\"", RemoteUtil::EscapeForWindows("foo\""));
EXPECT_EQ("foo\\\"bar", RemoteUtil::EscapeForWindows("foo\"bar"));
EXPECT_EQ("foo\\\\\\\"bar", RemoteUtil::EscapeForWindows("foo\\\"bar"));
EXPECT_EQ("foo\\\\\\\\\\\"bar", RemoteUtil::EscapeForWindows("foo\\\\\"bar"));
EXPECT_EQ("\\\"foo\\\"", RemoteUtil::EscapeForWindows("\"foo\""));
EXPECT_EQ("\\\" \\file.txt", RemoteUtil::EscapeForWindows("\" \\file.txt"));
TEST_F(RemoteUtilTest, QuoteForWindows) {
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo"), "\"foo\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo bar"), "\"foo bar\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\\bar"), "\"foo\\bar\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("\\\\foo"), "\"\\\\foo\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\\"), "\"foo\\\\\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\\\\"), "\"foo\\\\\\\\\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\""), "\"foo\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\"bar"), "\"foo\\\"bar\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\\\"bar"), "\"foo\\\\\\\"bar\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("foo\\\\\"bar"),
"\"foo\\\\\\\\\\\"bar\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("\"foo\""), "\"\\\"foo\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForWindows("\" \\file.txt"),
"\"\\\" \\file.txt\"");
}
TEST_F(RemoteUtilTest, QuoteArgument) {
EXPECT_EQ("\"foo\"", RemoteUtil::QuoteArgument("foo"));
EXPECT_EQ("\"foo bar\"", RemoteUtil::QuoteArgument("foo bar"));
EXPECT_EQ("\"foo\\bar\"", RemoteUtil::QuoteArgument("foo\\bar"));
EXPECT_EQ("\"\\\\foo\"", RemoteUtil::QuoteArgument("\\\\foo"));
EXPECT_EQ("\"foo\\\\\"", RemoteUtil::QuoteArgument("foo\\"));
EXPECT_EQ("\"foo\\\\\\\\\"", RemoteUtil::QuoteArgument("foo\\\\"));
EXPECT_EQ("\"foo\\\"\"", RemoteUtil::QuoteArgument("foo\""));
EXPECT_EQ("\"foo\\\"bar\"", RemoteUtil::QuoteArgument("foo\"bar"));
EXPECT_EQ("\"foo\\\\\\\"bar\"", RemoteUtil::QuoteArgument("foo\\\"bar"));
EXPECT_EQ("\"foo\\\\\\\\\\\"bar\"",
RemoteUtil::QuoteArgument("foo\\\\\"bar"));
EXPECT_EQ("\"\\\"foo\\\"\"", RemoteUtil::QuoteArgument("\"foo\""));
EXPECT_EQ("\"\\\" \\file.txt\"", RemoteUtil::QuoteArgument("\" \\file.txt"));
TEST_F(RemoteUtilTest, QuoteForSsh) {
EXPECT_EQ(RemoteUtil::QuoteForSsh("foo"), "\"\\\"foo\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("foo\\bar"), "\"\\\"foo\\\\bar\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("foo\\"), "\"\\\"foo\\\\\\\\\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("foo\\\"bar"),
"\"\\\"foo\\\\\\\\\\\\\\\"bar\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~"), "\"~\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~username"), "\"~username\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~/foo"), "\"~/\\\"foo\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~username/foo"),
"\"~username/\\\"foo\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~invalid user name"),
"\"\\\"~invalid user name\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~invalid user name/foo"),
"\"\\\"~invalid user name/foo\\\"\"");
EXPECT_EQ(RemoteUtil::QuoteForSsh("~user-name69/foo"),
"\"~user-name69/\\\"foo\\\"\""); // Nice!
}
} // namespace