Refactor the tests and component APIs to be more amenable to metrics, fuzzing, understanding data flows, etc.