test(cache): optimize chunk size and scale down cache_handle_test object sizes#4816
Conversation
…ect sizes Refactored downloader.ReadChunkSize from a package-level global constant to a Job struct-level field (initialized from DefaultReadChunkSize constant) to allow tests to override it. In cache_handle_test.go: - Scaled down TestObjectSize from 16MiB to 1200KiB. - Scaled down CacheMaxSize to 5MiB and ReadContentSize to 32KiB. - SetupTest now overrides the ReadChunkSize directly on the local fileDownloadJob instance to 1MiB. This allows transition and cancellation tests to pass on the smaller object size without global side- effects. - Fixed Test_shouldReadFromCache_WithJobStateIsCompleted to dynamically compute requiredOffset based on object size instead of assuming >= 9MiB. - Fixed Test_RandomRead_CacheForRangeReadFalseButCacheHit to download 1MiB instead of 2MiB. This speeds up package test execution time from ~12.6s down to ~2.1s (a ~6x speedup). TAG=agy CONV=8c7b5ab6-91ae-4a84-911e-1788917d5ab8
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request focuses on optimizing the test suite performance by introducing configuration flexibility for chunk sizes. By moving the read chunk size from a global constant to a struct-level field, the tests can now operate on smaller, more efficient data sets without side effects. These changes collectively improve the developer experience by significantly reducing the time required to run package tests. Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize the Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counterproductive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request refactors the file downloader to use an instance-specific ReadChunkSize on the Job struct instead of a global constant, allowing for more flexible configuration and testing. The corresponding tests have been updated to use smaller test sizes and reference the dynamic chunk size. The feedback suggests adding a documentation comment to the newly exported ReadChunkSize field to clarify its purpose and warn against concurrent modifications.
…ect sizes (#4816) Refactored downloader.ReadChunkSize from a package-level global constant to a Job struct-level field (initialized from DefaultReadChunkSize constant) to allow tests to override it. In cache_handle_test.go: - Scaled down TestObjectSize from 16MiB to 1200KiB. - Scaled down CacheMaxSize to 5MiB and ReadContentSize to 32KiB. - SetupTest now overrides the ReadChunkSize directly on the local fileDownloadJob instance to 1MiB. This allows transition and cancellation tests to pass on the smaller object size without global side- effects. - Fixed Test_shouldReadFromCache_WithJobStateIsCompleted to dynamically compute requiredOffset based on object size instead of assuming >= 9MiB. - Fixed Test_RandomRead_CacheForRangeReadFalseButCacheHit to download 1MiB instead of 2MiB. This speeds up package test execution time from ~12.6s down to ~2.1s (a ~6x speedup). TAG=agy CONV=8c7b5ab6-91ae-4a84-911e-1788917d5ab8
Refactored downloader.ReadChunkSize from a package-level global constant to a Job struct-level field (initialized from DefaultReadChunkSize constant) to allow tests to override it.
In cache_handle_test.go:
This speeds up package test execution time from ~12.6s down to ~2.1s (a ~6x speedup).
TAG=agy
CONV=8c7b5ab6-91ae-4a84-911e-1788917d5ab8