CMSgov / bluebutton-web-server

Blue Button API
https://sandbox.bluebutton.cms.gov
Other
40 stars 24 forks source link

jimfuqian/BB2-3216 Investigate adding coverage report to tests #1200

Open JFU-NAVA-PBC opened 5 months ago

JFU-NAVA-PBC commented 5 months ago

JIRA Ticket: BB2-3216

User Story or Bug Summary:

Part of the quarterly QASP report deals with testing coverage of the code, and at this point, I haven't seen any baseline for our code coverage from the existing tests. We should investigate if any tooling is already in place to provide a code coverage report. If we do have tooling for this, then we need the team to be made aware of how to use it. If we do not, we should propose an approach to add tooling for this, either through Github, SonarQube, etc.

What Does This PR Do?

A python Coverage.py based coverage report integrated with a local sonarqube server and scanner (docker compose based) to demo the recommended BB2 code quality solution.

What Should Reviewers Watch For?

If you're reviewing this PR, please check these things, in particular:

To check out the demo locally:

  1. Checkout this PR to local
  2. Start local sonarqube server (port 9000) by running: docker compose sonarqube up
  3. Point browser to http://localhost:9000, login admin/admin
  4. From sonarqube console, create a project e.g. BB2 with most settings in default, generate sonarqube token (for use at sonar scanner)
  5. Open another term, and run: docker compose coverage, this will run all unit tests with python coverage, a coverage report will be written to current directory, coverage.xml
  6. Run sonar scanner for project BB2: docker compose sonardemo
  7. If sonardemo service run into error: Unauthorized check token or login/password, and the token in the docker-compose.yml sonardemo bash command line is good, then add -Dsonar.login=admin -Dsonar.password=
  8. Go back to sonarqube console, and select project BB2, and navigate all the analysis including coverage.

What Security Implications Does This PR Have?

Submitters should complete the following questionnaire:

What Needs to Be Merged and Deployed Before this PR?

This PR cannot be either merged or deployed until the following pre-requisite changes have been fully deployed:

Any Migrations?

Submitter Checklist

I have gone through and verified that...:

JFU-NAVA-PBC commented 5 months ago

This takes a very long time to run locally, but seems to work pretty well, especially as a starting point. We'll need to probably work with Stephen and maybe others to figure out how to get this into Sonarqube to not have to run this locally, but I really like this POC. We should plan to demo this to the team during sprint demo, and also discuss at our next Eng Sync. Thanks for good work here!

Thanks Jimmy for taking time to review it and trying it out.

for super slow unit tests run (on Mac chip only), logged ticket: BB2-3236