15 #include <gtest/gtest.h>
21 #ifdef GRPC_HAVE_UNIX_SOCKET
46 BinderResolverTest() {
51 ~BinderResolverTest()
override {}
57 if (!
builder->resolver_registry()->HasResolverFactory(
"binder")) {
61 RegisterBinderResolver(
builder);
63 builder->resolver_registry()->HasResolverFactory(
"binder"));
69 .LookupResolverFactory(
"binder") ==
nullptr) {
81 : expect_result_(
true), expected_binder_id_(expected_binder_id) {}
88 const struct sockaddr_un* un =
89 reinterpret_cast<const struct sockaddr_un*
>(
addr.address().addr);
91 sizeof(un->sun_family) + expected_binder_id_.length() + 1);
93 EXPECT_EQ(un->sun_path, expected_binder_id_);
98 bool expect_result_ =
false;
111 args.result_handler =
112 absl::make_unique<BinderResolverTest::ResultHandler>(
expected_path);
116 resolver->StartLocked();
119 void TestFails(
const char*
string) {
127 args.result_handler =
128 absl::make_unique<BinderResolverTest::ResultHandler>();
141 TEST_F(BinderResolverTest, AuthorityPresents) {
142 TestFails(
"binder://example");
143 TestFails(
"binder://google.com");
144 TestFails(
"binder://google.com/test");
148 TEST_F(BinderResolverTest, EmptyPath) {
149 TestFails(
"binder:");
150 TestFails(
"binder:/");
151 TestFails(
"binder://");
154 TEST_F(BinderResolverTest, PathLength) {
166 TEST_F(BinderResolverTest, SlashPrefixes) {
167 TestSucceeds(
"binder:///test",
"test");
168 TestSucceeds(
"binder:////test",
"/test");
171 TEST_F(BinderResolverTest, ValidCases) {
172 TestSucceeds(
"binder:[[",
"[[");
173 TestSucceeds(
"binder:google!com",
"google!com");
174 TestSucceeds(
"binder:test/",
"test/");
175 TestSucceeds(
"binder:test:",
"test:");
177 TestSucceeds(
"binder:e",
"e");
178 TestSucceeds(
"binder:example",
"example");
179 TestSucceeds(
"binder:google.com",
"google.com");
180 TestSucceeds(
"binder:~",
"~");
181 TestSucceeds(
"binder:12345",
"12345");
183 "binder:abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._"
185 "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~");
190 int main(
int argc,
char** argv) {