-
Notifications
You must be signed in to change notification settings - Fork 41
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
Test CLI startup time with CI/CD job #706
Conversation
Kudos, SonarCloud Quality Gate passed! |
Codecov ReportPatch and project coverage have no change.
Additional details and impacted files@@ Coverage Diff @@
## main #706 +/- ##
=======================================
Coverage 99.66% 99.66%
=======================================
Files 89 89
Lines 6295 6295
=======================================
Hits 6274 6274
Misses 21 21 ☔ View full report in Codecov by Sentry. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, very nice guard against slow imports creeping in!
I gave a minor suggestion as a comment.
average_startup_time=$(echo "scale=3; ($startup_time1 + $startup_time2 + $startup_time3 + $startup_time4) / 4" | bc) | ||
|
||
# Print the average startup time | ||
echo "Average Startup time: $average_startup_time seconds" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe print the threshold here as well?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it is enough to print the threshold only if it is exceeded, so I'll let this be as is.
Adds a GitHub Actions job with a shell script for measuring the CLI startup time to prevent its unnoticed deterioration.
The startup time was optimized in #696, and now it is good make sure the startup remains fast. For example, I noticed that adding type hints (planned in #690) can slow the startup, but this can be avoided by postponing the evaluation of annotations.
The timing script executes
annif --help
four times and measures user + sys time. If the average of the user + sys time is over a threshold, the job fails. The threshold is set to 0.300 s.In the five previous runs the measured time was 0.245 s, 0.240 s, 0.252 s, 0.242 s and 0.245 s, but in some earlier runs the measured time was over 0.300 s. So failures can be expected, however I think it does not matter if they are reasonably rare (say ~10% of runs).
Failure of this job does not make the other jobs fail, so unit testing, linting and publishing are run in any case.