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

CI pipelines and automated tests for Core #189

Open
1 task
pranav12321 opened this issue Aug 31, 2022 · 1 comment
Open
1 task

CI pipelines and automated tests for Core #189

pranav12321 opened this issue Aug 31, 2022 · 1 comment
Assignees
Labels
✨ feature New things! 📜 tracking Tracking issue: an issue full of other issues

Comments

@pranav12321
Copy link
Contributor

pranav12321 commented Aug 31, 2022

what

Support for test infrastructure.
CI pipelines for ISA tests, mock dummy peripheral traits device support, RPC and application support. potentially testbenches for real hardware tests (there are some approaches to this. To be fleshed out).

steps

  • [[ steps ]]

[[ What steps will we need to take to implement this feature? ]]

where

branch: N/A, this is a tracking issue

open questions

@pranav12321 pranav12321 added the ✨ feature New things! label Aug 31, 2022
@pranav12321 pranav12321 self-assigned this Aug 31, 2022
@rrbutani
Copy link
Member

rrbutani commented Aug 31, 2022

@pranav12321 I think the CI part of this issue is covered by #174. Testing and test coverage is definitely something worth improving, perhaps we can have this issue focus on that?

Some thoughts:

  • ISA tests

    • I think we actually do have satisfactory infrastructure here (infra for single instruction tests, bare interpreter tests); coverage could use some work though
  • mock dummy peripheral traits device support

    • yup, I think having simple mock tests (like those that the ADC impl has) is valuable just to guard against regressions and give us some confidence that the test suite will catch accidental interface breaking changes
    • in general I think the value of using mocks is a bit questionable but in this specific case it seems like time well spent since we don't actually have "client code" for these peripheral trait implementations in core; all of that lives in device crates like utp-tm4c
  • RPC

  • and application support

    • this one is a little trickier; maybe you can expand on what you have in mind @pranav12321?
    • unit tests on the lc3-application-support crate (wherever possible) are one thing but end-to-end testing (in the style of selenium, etc) is a little more controversial, imo
      • for one thing afaik there aren't really any terminal based UI testing tools and I'm skeptical that the upside to be had from having such tests (i.e. tests that do things like making sure pressing tab changes the TUI tab that's focused) justifies the cost
      • it seems like we can get most of the benefit from having good unit test coverage on widgets and writing automated testing for the low hanging fruit in the end-to-end space (i.e. resize the window randomly and ensure that the TUI doesn't crash, feed the TUI random input and make sure it doesn't crash, etc.)
      • in any case, I think the latter (e2e testing) is an issue that should live on the TUI repo
  • potentially testbenches for real hardware tests

    • this is definitely an issue for the TM4C repo and Set up CI tm4c#1 aims to have the first-order version of this (smoke tests in CI)
    • with the xtask stuff in the tm4c repo we now do have all the infrastructure we need for this
    • the open question in my mind is whether we want to gate CI runs on this repo on these device CI runs but we can figure that out later

@rrbutani rrbutani added the 📜 tracking Tracking issue: an issue full of other issues label Aug 31, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
✨ feature New things! 📜 tracking Tracking issue: an issue full of other issues
Projects
None yet
Development

No branches or pull requests

2 participants