Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add CI for mobile platforms (iOS & Android) #1778

Open
thomaseizinger opened this issue Mar 11, 2024 · 1 comment
Open

Add CI for mobile platforms (iOS & Android) #1778

thomaseizinger opened this issue Mar 11, 2024 · 1 comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed

Comments

@thomaseizinger
Copy link
Contributor

thomaseizinger commented Mar 11, 2024

Currently, quinn (and quinn-udp) is only tested on Linux, Windows and MacOS: https://github.com/quinn-rs/quinn/blob/main/.github/workflows/rust.yml#L36

There have been a number of PRs that fix things on other platforms:

All of those have only been validated with manual testing which isn't great for maintenance. Simple refactorings could easily break those features again.

It would be great to test the features of GRO & GSO as well as retrieval of the additional packet meta data on Android as well as iOS.

@Ralith Ralith added enhancement New feature or request help wanted Extra attention is needed good first issue Good for newcomers labels Mar 11, 2024
@grodin
Copy link

grodin commented Mar 15, 2024

I could help with the Android side of this.

I think the likely most straightforward solution is to run the test binary generated by cargo on the official Android emulator. There are well maintained GH actions to assist with provisioning emulators for different versions of Android and different profiles, so there'll be some investigation to find out what kernels those correspond to but it seems eminently doable.

I think it's only fair to warn you that Android can be a major pain to support though; every device manufacturer ships a custom version of Android, from the kernel to the user space and up to the Android platform APIs, often with a number of incompatibilities.

The upshot of this is you may find things failing in the wild which pass CI (unless your CI includes testing on a decent number of real devices, which is obviously slow and costly. Most large Android apps do this one way or another.)

I don't want to be too pessimistic though, it's possible none of the above will matter for this project! I just thought it was fair to bring it up as you mentioned elsewhere you didn't have much Android dev experience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request good first issue Good for newcomers help wanted Extra attention is needed
Projects
None yet
Development

No branches or pull requests

3 participants