RPC Binder: Retry Trusty connections several times

Sometimes the restarting of the Trusty service races
with tipc_connect, causing the latter to return -ENOTCONN
since the service has not come up yet. This puts the
connection attempts in a loop and retry them up to 5 times,
sleeping for a short duration between attempts.
Should make binderRpcToTrustyTest a lot less flaky.

Bug: 230135749
Test: run binderRpcToTrustyTest several times
Change-Id: I2c4e8dfe929535dbb77b5af3c677e5d27f00f50e
diff --git a/libs/binder/tests/binderRpcTest.cpp b/libs/binder/tests/binderRpcTest.cpp
index 8d1def1..504b3ce 100644
--- a/libs/binder/tests/binderRpcTest.cpp
+++ b/libs/binder/tests/binderRpcTest.cpp
@@ -382,9 +382,16 @@
                 status = session->setupPreconnectedClient({}, [=]() {
 #ifdef BINDER_RPC_TO_TRUSTY_TEST
                     auto port = trustyIpcPort(serverVersion);
-                    int tipcFd = tipc_connect(kTrustyIpcDevice, port.c_str());
-                    return tipcFd >= 0 ? android::base::unique_fd(tipcFd)
-                                       : android::base::unique_fd();
+                    for (size_t i = 0; i < 5; i++) {
+                        // Try to connect several times,
+                        // in case the service is slow to start
+                        int tipcFd = tipc_connect(kTrustyIpcDevice, port.c_str());
+                        if (tipcFd >= 0) {
+                            return android::base::unique_fd(tipcFd);
+                        }
+                        usleep(50000);
+                    }
+                    return android::base::unique_fd();
 #else
                     LOG_ALWAYS_FATAL("Tried to connect to Trusty outside of vendor");
                     return android::base::unique_fd();