Update IAccessor implementation for getInstance

The interface now has a method to get the instance name of the service
that it is repsponsible for. This is used by libbinder to make sure it's
using the right Accessor implementation.

The addConnection method now also returns an error string which may come
in handy.

Test: atest vm_accessor_test
Bug: 358427181
Change-Id: I9a2fe89a80e1e3bbd3dc18da7b373930d9702ec4
diff --git a/tests/vm_accessor/accessor/src/accessor.rs b/tests/vm_accessor/accessor/src/accessor.rs
index 6a9ced6..966bffb 100644
--- a/tests/vm_accessor/accessor/src/accessor.rs
+++ b/tests/vm_accessor/accessor/src/accessor.rs
@@ -31,11 +31,12 @@
     //       because 'trait Interface' requires 'static.
     vm: VmInstance,
     port: i32,
+    instance: String,
 }
 
 impl Accessor {
-    pub fn new(vm: VmInstance, port: i32) -> Self {
-        Self { vm, port }
+    pub fn new(vm: VmInstance, port: i32, instance: &str) -> Self {
+        Self { vm, port, instance: instance.into() }
     }
 }
 
@@ -43,10 +44,13 @@
 
 impl IAccessor for Accessor {
     fn addConnection(&self) -> binder::Result<ParcelFileDescriptor> {
-        self.vm.wait_until_ready(Duration::from_secs(10)).unwrap();
+        self.vm.wait_until_ready(Duration::from_secs(20)).unwrap();
 
         info!("VM is ready. Connecting to service via port {}", self.port);
 
         self.vm.vm.connectVsock(self.port)
     }
+    fn getInstanceName(&self) -> binder::Result<String> {
+        Ok(self.instance.clone())
+    }
 }
diff --git a/tests/vm_accessor/accessor/src/main.rs b/tests/vm_accessor/accessor/src/main.rs
index 27ce415..49f5794 100644
--- a/tests/vm_accessor/accessor/src/main.rs
+++ b/tests/vm_accessor/accessor/src/main.rs
@@ -42,7 +42,7 @@
     let vm = run_vm()?;
 
     // If you want to serve multiple services in a VM, then register Accessor impls multiple times.
-    let accessor = Accessor::new(vm, PORT);
+    let accessor = Accessor::new(vm, PORT, SERVICE_NAME);
     let accessor_binder = BnAccessor::new_binder(accessor, BinderFeatures::default());
     binder::register_lazy_service(SERVICE_NAME, accessor_binder.as_binder()).map_err(|e| {
         anyhow!("Failed to register lazy service, service={SERVICE_NAME}, err={e:?}",)