Skip to content

[UT] Add UT for utils.py#2615

Merged
maobaolong merged 2 commits intoLMCache:devfrom
maobaolong:test_utils
Feb 19, 2026
Merged

[UT] Add UT for utils.py#2615
maobaolong merged 2 commits intoLMCache:devfrom
maobaolong:test_utils

Conversation

@maobaolong
Copy link
Copy Markdown
Collaborator

What this PR does / why we need it:

Special notes for your reviewers:

If applicable:

  • this PR contains user facing changes - docs added
  • this PR contains unit tests

@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @maobaolong, 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 significantly enhances the reliability of the lmcache.utils module by introducing a new, comprehensive suite of unit tests. These tests validate the correctness of various utility functions, including mathematical operations, slot mapping compression and decompression, version retrieval, token conversion, and the intricate logic of cache engine key generation and parsing. The addition of these tests ensures that core functionalities behave as expected across different inputs and edge cases, improving overall code quality and maintainability.

Highlights

  • Math Utility Functions: Added comprehensive unit tests for cdiv (ceiling division) and round_down functions, covering various scenarios including exact division, ceiling behavior, and edge cases.
  • Slot Mapping Compression/Decompression: Introduced tests for compress_slot_mapping, decompress_slot_mapping, _append_range_or_elements, and parse_mixed_slot_mapping to ensure correct handling of slot ranges, individual elements, mixed formats, and error conditions.
  • Version Retrieval: Implemented tests for get_version to verify its behavior when VERSION and COMMIT_ID are present, empty, or partially available, using unittest.mock.
  • Token Conversion: Added tests for convert_tokens_to_list to confirm its ability to handle None, torch.Tensor, and list inputs, correctly extracting token ranges.
  • Cache Engine Key Management: Provided extensive unit tests for CacheEngineKey and LayerCacheEngineKey classes, covering hashing, equality, string conversion (to/from string), dictionary conversion (to/from dict), handling of request tags, worker ID updates, layer splitting, and unsupported data types.
  • Cache Key Parsing: Included tests for parse_cache_key to ensure it correctly identifies and parses both CacheEngineKey and LayerCacheEngineKey instances from their string representations.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Changelog
  • tests/test_utils.py
    • Added new file test_utils.py to house unit tests for lmcache.utils.
    • Implemented tests for cdiv and round_down math utilities.
    • Added tests for slot mapping compression, decompression, and parsing functions.
    • Included tests for get_version function.
    • Provided tests for convert_tokens_to_list function.
    • Developed extensive tests for CacheEngineKey and LayerCacheEngineKey classes, covering serialization, deserialization, and key manipulation.
    • Added tests for parse_cache_key to validate key parsing logic.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize 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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. 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.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request adds a comprehensive suite of unit tests for the functions in utils.py. The tests are well-structured and cover a wide range of scenarios, including edge cases and error conditions for various utility functions. My review found one area for improvement in the tests for parse_cache_key, where a test was bypassing the function it was meant to test due to a bug in the underlying code. I've suggested a change to make the test correctly reflect the state of the code by marking it as an expected failure. Overall, this is a valuable addition that significantly improves test coverage.

Comment thread tests/test_utils.py
Signed-off-by: baoloongmao <baoloongmao@tencent.com>
Signed-off-by: baoloongmao <baoloongmao@tencent.com>
@maobaolong
Copy link
Copy Markdown
Collaborator Author

@sammshen @chunxiaozheng Would you like to take a look at this PR? Thanks!

@maobaolong maobaolong added the Testing Related to unittests or end-to-end tests label Feb 19, 2026
Copy link
Copy Markdown
Contributor

@sammshen sammshen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@maobaolong maobaolong added the full Run comprehensive tests on this PR label Feb 19, 2026
Copy link
Copy Markdown
Collaborator

@chunxiaozheng chunxiaozheng left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

lgtm

@maobaolong maobaolong merged commit 7abd114 into LMCache:dev Feb 19, 2026
24 checks passed
DongDongJu pushed a commit to DongDongJu/LMCache that referenced this pull request Feb 22, 2026
* [UT] Add UT for utils.py

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

* merge after rebase

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

---------

Signed-off-by: baoloongmao <baoloongmao@tencent.com>
Signed-off-by: DongDongJu <commisori28@gmail.com>
DongDongJu pushed a commit to DongDongJu/LMCache that referenced this pull request Feb 22, 2026
* [UT] Add UT for utils.py

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

* merge after rebase

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

---------

Signed-off-by: baoloongmao <baoloongmao@tencent.com>
sammshen pushed a commit to sammshen/LMCache that referenced this pull request Mar 1, 2026
* [UT] Add UT for utils.py

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

* merge after rebase

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

---------

Signed-off-by: baoloongmao <baoloongmao@tencent.com>
hlin99 pushed a commit to hlin99/LMCache that referenced this pull request Mar 2, 2026
* [UT] Add UT for utils.py

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

* merge after rebase

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

---------

Signed-off-by: baoloongmao <baoloongmao@tencent.com>
mauryaavinash95 pushed a commit to mauryaavinash95/LMCache that referenced this pull request Mar 7, 2026
* [UT] Add UT for utils.py

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

* merge after rebase

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

---------

Signed-off-by: baoloongmao <baoloongmao@tencent.com>
shaoxiawjc pushed a commit to shaoxiawjc/LMCache that referenced this pull request Mar 11, 2026
* [UT] Add UT for utils.py

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

* merge after rebase

Signed-off-by: baoloongmao <baoloongmao@tencent.com>

---------

Signed-off-by: baoloongmao <baoloongmao@tencent.com>
Signed-off-by: shaoxiawjc <wjc2800@163.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

full Run comprehensive tests on this PR Testing Related to unittests or end-to-end tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants