Add MDM program fuzzer
FEATURE REQUEST
Description of Request
After !4343 (merged) goes through we will have a fully featured program builder used in tests. We can use this to build large, totally random programs which we can use to fuzz the MDM with and check that the outputs are correct (or that it errors when it should).
Reason or Need for Feature
This can uncover subtle or rare bugs that are hard to predict or catch with manual test cases.
Design / Proposal
Add a modules/host/mdm/fuzz_test.go
file with a test that uses the program builder to add random instructions and inputs to those instructions. It should also construct expected outputs for the given inputs. Then it should check that the MDM produces the correct outputs (this part is already covered by the program builder).