Add a `module_cache` field to the `Tester` struct and ctor (which is not used by OneFuzz). This enables coverage collection when using it to test inputs. Add an optional `coverage` field to the `DebuggerResult` in the `input-tester` crate. This lets users retrieve per-input coverage after testing an input.
In #765, we introduced an assumption that all module-relative instruction offsets are representable by a `u32`. Move to an explicit `u32` repr for offsets, and add validation to check for overflow at conversion sites.
- Add `module!` test helper to let us always define tests paths using POSIX-style paths
- Use `serde_json::json!` macro for maintainable definitions of expected test results
Expose the Azure storage table's "Timestamp" for the models where Timestamp should be user-accessible and remove the Timestamp field from models that did not sign up for it.
The behavior where Timestamp is only set by Azure Storage is kept.
## Summary of the Pull Request
- The UI now receives the telemetry events
- A new section for the coverage has been added
- All synced dir are now monitored by the UI
- Gracefully exit from the UI
depends on #663
This adds a retry wrapper around azcopy.
something to note: tokio's Command doesn't allow for clone, which makes this unfortunately difficult to generalize to any command.
## Info on Pull Request
This is a quick fix for multi tenant authentication. After doing some more testing, I realized I was missing a parameter in `azuredeploy.json`. So added missing code from previous [PR ](https://github.com/microsoft/onefuzz/pull/563/files).
## Validation Steps Performed
I have tested these changes and was successfully able to deploy in both single tenant and multi tenant environments.
## Summary of the Pull Request
This PR add a UI to the local run.
- The UI currently monitors the logs and some of the directory created (the rest will be wired in a coming PR)
- pressing 'q' will quit the PR
- By default, the job directory is deleted when the ui quits unless the parameter 'keep_job_dir' is specified
This fixes retrying on bad status codes.
Note, this adds support to specify specific error codes as "successful". This is important for the If-None-Match conditional upload case (blob uploading). The response we get back is 409 (Conflict).
Previously, we would "fail fast" the 409. However, what we want is "409 is basically success here" and every other call 409 should be a failure.