1. Ports the `node` function from Python to C#.
2. Adds a missing authentication check.
3. Add validated string type `PoolName` for consistency with Python version.
Adds implementation of the `info` function.
Added support for blobs in the function integration test stuff.
Simplified usage of integration test classes by removing the account name parameter.
### Function implementation
Added implementation of `agent_events` function and some basic tests.
Fixed several issues encountered in `TestOperations`.
### Additional JsonConverter
The existing Python code for `agent_events` figures out which class to use only based upon the shape of the input, without a discriminator. I have added an additional `JsonConverter` named `SubclassConverter<T>` which will pick a subclass of `T` to deserialize into based upon what properties exist in the JSON.
### Enum helpers
Converted some enum helpers to extension methods to make them a bit more readable.
Add support for function tests and the ability to run them against either real Azure Storage or the Azurite emulator.
See follow-up PR #2032 for actual usage.
* Add context to every futur in the supervisor task
* adding more context info for the sync operations
* adding more logging in the monitoring of the process pipe
Mostly a maintenance update (dependabot was trying to do this and failing), but it does have a small improvement in that the `debug node_event state_update` help:
```console
$ target/debug/onefuzz-agent debug node_event state_update --help
onefuzz-agent-debug-node_event-state_update 0.1.0
USAGE:
onefuzz-agent debug node_event state_update <state>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
ARGS:
<state>
```
Now displays the applicable enum values:
```console
$ target/debug/onefuzz-agent debug node_event state_update --help
onefuzz-agent-debug-node_event-state_update
USAGE:
onefuzz-agent debug node_event state_update <STATE>
ARGS:
<STATE> [possible values: init, free, setting-up, rebooting, ready, busy, done]
OPTIONS:
-h, --help Print help information
```
`structopt` dependency removed as it was integrated into `clap`.
Updating the other projects that use `clap` is more involved as they use the lower-level interface.
* flushing the logs when the task is done
* removed teh flush logevent
flushig is now done by sending a message to the task_logger directly
moved the initialization of the logger to cmd.rs
* build fix
* include a duration in the flush message
* exit with a done state instead of panicing
Attempt to speed up CI builds:
1. Disable incremental builds when using `sccache` (incremental can't be cached)
2. Set `--locked` on all invocations of cargo
3. Add `restore-keys` for Github cache action
* Add scripts to install dotnet on windows and ubuntu
* Install dotnet on linux setup
* Move the install to the setup scripts
* Fix slash direction
* typo
* PR comments
- Remove the ability to create or execute a `libfuzzer_coverage` task
- Preserve the enum variant in `onefuzztypes` to prevent errors when deserializing old data
- Remove doc references to `libfuzzer_coverage`
Add extensions for:
* Bicep
* .NET test runner
* Azure Functions
Include in setup script:
* `cargo-audit` & `cargo-license` (pre-reqs for the CI script)
## Summary of the Pull Request
While I'm browsing around the code clippy is shouting at me, so here's a janitorial exercise to clean up clippy lints and become a little more familiar with the codebase.
## Info on Pull Request
Fix all outstanding clippy lints. Fixes are almost mechanical, although I didn't automate them.
## Summary of the Pull Request
Collect .NET coverage during build and display it in GitHub Summary.
## Info on Pull Request
Add the `reportgenerator` tool, run it after tests.
## Validation Steps Performed
Run workflow and make sure it works.
See example coverage output here: https://github.com/microsoft/onefuzz/actions/runs/2458088617