| # Debug Agent Integration Tests |
| |
| These tests are all tests that exercise real functionality within Zircon. |
| They are meant to verify that the debug agent actually does what the unit tests |
| say it does. |
| |
| ## Functionality |
| |
| The tests generally work by "tricking" the debug agent that it's connected to |
| a client. This is important because the DebugAgent works receiving messages |
| triggered by the message loop and either returns immediatelly from the remote |
| API (//src/developer/debug/debug_agent/remote_api.h) or sending out notifications. |
| |
| Generally all the interesting behaviour is in the notifications, as they |
| represent exceptions (ie. I hit a breakpoint or a process died). There is a |
| wrapper class meant to easily react to those notifications. |
| |
| ## Usage |
| |
| This directory contains both the tests (ending in "\_test.cc") and utilities |
| for making these kind of testing easier. |
| |
| Some pre-work needs to be done on each test in order to work properly: |
| |
| ### MockStreamBackend |
| |
| This class mocks being a debug_ipc::StreamBuffer::Writer, which is the interface |
| the DebugAgent uses to write it's notifications. Each test is meant to inherit |
| from this class and override the notifications it's interested in. |
| |
| ### MessageLoopWrapper |
| |
| A simple RAII wrapper over the message loop. Nothing really special about it, |
| but it's good to handle resources about it. |
| |
| ### SoWrapper |
| |
| A simple RAII wrapper over loading a .so. This is meant to have an easy way to |
| query symbols using the dlsym-interface. |
| |
| ### Example |
| |
| breakpoint_test.cc is a canonical example and should show the usage of these |
| elements. |