fecgov / fecfile-web-api

Back-end API for FECfile application
Other
8 stars 2 forks source link

Load test celery with 400 F3X filings #863

Open dheitzer opened 5 months ago

dheitzer commented 5 months ago

We need to run load testing against the fecfile-web-services celery filing functionality to simulate deadline filing loads. To do this, we need to test the submit functionality (not against testefo however) using Locust to submit 50 form 99s (for example). During these tests, we will want to be monitoring the speed and resource utilization of the application.

Note: Please do not submit to testefo for this. The key here is that we're trying to load test the .fec generation.

QA Notes

QA will receive a report on server performance.

DEV Notes

  1. Perform test on Cloud.gov resources.
  2. This will test the creation of a large number of .fec files simultaneously.
  3. The submission to EFO can be mocked. See here.

Design

null

See full ticket and images here: FECFILE-170

exalate-issue-sync[bot] commented 1 month ago

It’s tricky on how to track the run of an asynchronous task such as celery when running them in parallel. This ticket is on hold and will be revisited after we do this [https://fecgov.atlassian.net/browse/FECFILE-1548|https://fecgov.atlassian.net/browse/FECFILE-1548|smart-link]

The work in [https://fecgov.atlassian.net/browse/FECFILE-1548|https://fecgov.atlassian.net/browse/FECFILE-1548|smart-link] will allow us to monitor task completion via the database or system logs

exalate-issue-sync[bot] commented 1 month ago

From Todd:

[https://docs.locust.io/en/stable/writing-a-locustfile.html|https://docs.locust.io/en/stable/writing-a-locustfile.html|smart-link]

looking at the docs, it seems like we could write a task: submit_report() where it calls [client.post|http://client.post](submit report), then a python loop that polls client.get(status) and ends

the locust report should give us all the averages and stats on that task

so each user would have run the task and poll for it being done. just like the real world where each user would be refreshing their reports page to see if it's done

exalate-issue-sync[bot] commented 1 month ago

This ticket is on hold so moving back to sprint backlog.