Adds a new workflow reporting code coverage when opening a pull request.
The idea is to help find blind spots in our test suites and inform where testing
efforts should go, but there is no hard requirement related to the numbers.
We are allowed to merge pull requests regardless of the coverage percentage,
and even if the coverage workflow fails.
Past coverage data is stored in a separate branch (cov-data).
It gets updated when the workflow run against master.
Fetching the corpus in the main CI worflow is a problem because
it will fail when the azure storage is modified during the download:
> ERROR: The specified blob does not exist.
> RequestId:76c40723-901e-0098-38b9-8215c9000000
> Time:2023-05-09T21:03:10.8992962Z
> ErrorCode:BlobNotFound
This occurs when there are multiple runs at the same time. This
happens for example when two pull requests are opened.
This will cause CI to go red for no good reason.
With this patch, main CI will simply run the fuzz targets without
using the corpus, as a sanity check. Then, another workflow will
run at 03:12 AM UTC on Sunday, Monday, and Saturday using the corpus
from azure storage.
Future work: make the scheduled run fuzz longer and in parallel.
This adds support for RDP6 32bpp bitmaps.
- RDP6 RLE implementation
- `RDP6_BITMAP_STREAM` pdu parsing
- New CLI arguments to select color depth and color reduction
- Unit tests and fuzzing for implemented functionality
Test bpp32 mode without lossy compression (RGB colorspace)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 <IP_ADDRESS>
```
Test bpp32 mode with lossy compression (YCoCg colorspace, subsampling, color loss)
```
cargo run -p ironrdp-client -- -u vmbox -p password --color-depth=32 --lossy-bitmap-compression <IP_ADDRESS>
```
Issue: ARC-149
- Remove Tauri client.
It was useful when initially prototyping the Web Component, but now
it’s more of a maintenance burden. It’s notably not convenient to
check in CI. Since we now have another native alternative that does
not require any GPU (`ironrdp-client`), it’s probably a good time to
part ways.
- Move wasm package into the workspace.
- Move Rust crates into a `crates` subfolder.
- Introduce `xtask` crate for free-form automation.