xref: /aosp_15_r20/external/mobly-snippet-lib/examples/ex3_async_event/README.md (revision ae5b1ec8a57d9cd6259556f14d3f2bb4f9fb3a85)
1*ae5b1ec8SZiwei Zhang# Async Event RPC Example
2*ae5b1ec8SZiwei Zhang
3*ae5b1ec8SZiwei ZhangThis example shows you how to use the @AsyncRpc annotation of Mobly snippet lib
4*ae5b1ec8SZiwei Zhangto handle asynchronous callbacks.
5*ae5b1ec8SZiwei Zhang
6*ae5b1ec8SZiwei ZhangSee the source code in `ExampleAsyncSnippet.java` for details.
7*ae5b1ec8SZiwei Zhang
8*ae5b1ec8SZiwei Zhang## Running the example code
9*ae5b1ec8SZiwei Zhang
10*ae5b1ec8SZiwei ZhangThis folder contains a fully working example of a standalone snippet apk.
11*ae5b1ec8SZiwei Zhang
12*ae5b1ec8SZiwei Zhang1.  Compile the example
13*ae5b1ec8SZiwei Zhang
14*ae5b1ec8SZiwei Zhang        ./gradlew examples:ex3_async_event:assembleDebug
15*ae5b1ec8SZiwei Zhang
16*ae5b1ec8SZiwei Zhang1.  Install the apk on your phone
17*ae5b1ec8SZiwei Zhang
18*ae5b1ec8SZiwei Zhang        adb install -r ./examples/ex3_async_event/build/outputs/apk/debug/ex3_async_event-debug.apk
19*ae5b1ec8SZiwei Zhang
20*ae5b1ec8SZiwei Zhang1.  Use `snippet_shell` from mobly to trigger `tryEvent()`:
21*ae5b1ec8SZiwei Zhang
22*ae5b1ec8SZiwei Zhang        snippet_shell.py com.google.android.mobly.snippet.example3
23*ae5b1ec8SZiwei Zhang
24*ae5b1ec8SZiwei Zhang        >>> handler = s.tryEvent(42)
25*ae5b1ec8SZiwei Zhang        >>> print("Not blocked, can do stuff here")
26*ae5b1ec8SZiwei Zhang        >>> event = handler.waitAndGet('AsyncTaskResult') # Blocks until the event is received
27*ae5b1ec8SZiwei Zhang
28*ae5b1ec8SZiwei Zhang        Now let's see the content of the event
29*ae5b1ec8SZiwei Zhang
30*ae5b1ec8SZiwei Zhang        >>> import pprint
31*ae5b1ec8SZiwei Zhang        >>> pprint.pprint(event)
32*ae5b1ec8SZiwei Zhang        {
33*ae5b1ec8SZiwei Zhang            'callbackId': '2-1',
34*ae5b1ec8SZiwei Zhang            'name': 'AsyncTaskResult',
35*ae5b1ec8SZiwei Zhang            'time': 20460228696,
36*ae5b1ec8SZiwei Zhang            'data': {
37*ae5b1ec8SZiwei Zhang                'exampleData': "Here's a simple event.",
38*ae5b1ec8SZiwei Zhang                'successful': True,
39*ae5b1ec8SZiwei Zhang                'secretNumber': 12
40*ae5b1ec8SZiwei Zhang            }
41*ae5b1ec8SZiwei Zhang        }
42