Skip to content

Conversation

@Saumya-R
Copy link
Contributor

Checked and added test cases in RUST and CPP for the following requirements:

  1. The component shall accept keys that consist solely of alphanumeric characters, underscores, or dashes.
  2. The component shall encode each key as valid UTF-8.
    3 . The component shall guarantee that each key is unique.
  3. The component shall limit the maximum length of a key to 32 bytes.
  4. The component shall accept only values of the following data types: Number, String, Null, Array[Value], or Dictionary{Key:Value}.
  5. The component shall serialize and deserialize all values to and from JSON.
  6. The component shall limit the maximum length of a value to 1024 bytes.

@github-actions
Copy link

github-actions bot commented Jan 21, 2026

License Check Results

🚀 The license check job ran with the Bazel command:

bazel run //:license-check

Status: ⚠️ Needs Review

Click to expand output
[License Check Output]
Extracting Bazel installation...
Starting local Bazel server (8.3.0) and connecting to it...
INFO: Invocation ID: 13b9d123-5198-4c91-89d6-b2a21c629941
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
Computing main repo mapping: 
DEBUG: Rule 'rust_qnx8_toolchain+' indicated that a canonical reproducible form can be obtained by modifying arguments integrity = "sha256-oEubHgeZDdT0svMmBKJx7c3/2TdSI/vfwRUyDn+TPGA="
DEBUG: Repository rust_qnx8_toolchain+ instantiated at:
  <builtin>: in <toplevel>
Repository rule http_archive defined at:
  /home/runner/.bazel/external/bazel_tools/tools/build_defs/repo/http.bzl:394:31: in <toplevel>
Computing main repo mapping: 
WARNING: For repository 'score_process', the root module requires module version score_process@1.3.2, but got score_process@1.4.0 in the resolved dependency graph. Please update the version in your MODULE.bazel or set --check_direct_dependencies=off
Computing main repo mapping: 
Loading: 
Loading: 3 packages loaded
Loading: 3 packages loaded
    currently loading: 
Analyzing: target //:license-check (4 packages loaded, 0 targets configured)
Analyzing: target //:license-check (4 packages loaded, 0 targets configured)

Analyzing: target //:license-check (85 packages loaded, 10 targets configured)

Analyzing: target //:license-check (148 packages loaded, 1858 targets configured)

Analyzing: target //:license-check (159 packages loaded, 6997 targets configured)

Analyzing: target //:license-check (159 packages loaded, 6997 targets configured)

INFO: Analyzed target //:license-check (162 packages loaded, 9013 targets configured).
[13 / 14] [Prepa] Generating Dash formatted dependency file ...
INFO: From Generating Dash formatted dependency file ...:
INFO: Successfully converted 62 packages from Cargo.lock to bazel-out/k8-fastbuild/bin/formatted.txt
INFO: Found 1 target...
Target //:license.check.license_check up-to-date:
  bazel-bin/license.check.license_check
  bazel-bin/license.check.license_check.jar
INFO: Elapsed time: 21.346s, Critical Path: 0.39s
INFO: 14 processes: 5 disk cache hit, 9 internal.
INFO: Build completed successfully, 14 total actions
INFO: Running command line: bazel-bin/license.check.license_check ./formatted.txt <args omitted>
usage: org.eclipse.dash.licenses.cli.Main [-batch <int>] [-cd <url>]
       [-confidence <int>] [-ef <url>] [-excludeSources <sources>] [-help] [-lic
       <url>] [-project <shortname>] [-repo <url>] [-review] [-summary <file>]
       [-timeout <seconds>] [-token <token>]

@github-actions
Copy link

The created documentation from the pull request is available at: docu-html

@Saumya-R Saumya-R force-pushed the saumya_CIT_testing_add_missing_cases branch 2 times, most recently from bbbe842 to 6b59c28 Compare January 21, 2026 07:41
@Saumya-R Saumya-R requested a review from Copilot January 21, 2026 07:41
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR adds comprehensive test coverage for key-value store (KVS) component requirements across Rust, C++, and Python test suites. The changes validate key format constraints, UTF-8 encoding, uniqueness guarantees, length limits, supported data types, and JSON serialization.

Changes:

  • Added test cases for key validation rules (alphanumeric/underscore/dash only, UTF-8 encoding, uniqueness, 32-byte limit)
  • Added test cases for value constraints (supported data types, JSON serialization, 1024-byte limit)
  • Enhanced test scenarios to verify boundary conditions for maximum key and value lengths

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 8 comments.

File Description
tests/rust_test_scenarios/src/cit/supported_datatypes.rs Added key validation tests, UTF-8 key tests, uniqueness checks, and boundary tests for 1024/1025 byte string values
tests/python_test_cases/tests/test_cit_supported_datatypes.py Updated test assertions to verify valid/invalid keys, UTF-8 support, uniqueness, and added test classes for 1024/1025 byte strings
tests/cpp_test_scenarios/src/cit/supported_datatypes.cpp Added key validation logic, UTF-8 key tests, uniqueness checks, and test scenarios for maximum length string values

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Saumya-R Saumya-R force-pushed the saumya_CIT_testing_add_missing_cases branch from 2798638 to e71670a Compare January 21, 2026 09:10
@Saumya-R Saumya-R requested a review from Copilot January 21, 2026 09:11
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Copilot reviewed 14 out of 15 changed files in this pull request and generated 3 comments.


💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@Saumya-R Saumya-R force-pushed the saumya_CIT_testing_add_missing_cases branch from e4f92df to 0b035f9 Compare January 21, 2026 09:16
Copy link
Contributor

@PiotrKorkus PiotrKorkus left a comment

Choose a reason for hiding this comment

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

Could you check if you are using correct clang rules? All files should be formatted already after #219

It is hard to distinguish between relevant changes and formatting

@Saumya-R Saumya-R force-pushed the saumya_CIT_testing_add_missing_cases branch 2 times, most recently from 6edb2c1 to 032f307 Compare January 21, 2026 09:57
@Saumya-R
Copy link
Contributor Author

Could you check if you are using correct clang rules? All files should be formatted already after #219

It is hard to distinguish between relevant changes and formatting

I have rebased again . Should make the changes easy to see.

@arkjedrz arkjedrz self-requested a review January 21, 2026 10:27
Copy link
Contributor

@arkjedrz arkjedrz left a comment

Choose a reason for hiding this comment

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

Three of requirements tested here should be discussed during forthcoming CFT meeting.

@pytest.mark.xfail(
reason="KVS does not implement requirement #1: key character set (alphanumeric, underscore, dash) enforcement. It accepts space,special char,invalid keys."
)
def test_ok(self, results: ScenarioResult, logs_info_level: LogContainer) -> None:
Copy link
Contributor

Choose a reason for hiding this comment

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

Instead of checking 4 things at one function - separate it to multiple tests.
For example: test_ok to test_valid_chars, test_utf8, test_max_key_size..

1. The component shall accept keys that consist solely of alphanumeric characters, underscores, or dashes.
2. The component shall encode each key as valid UTF-8.
3. The component shall guarantee that each key is unique.
4. The component shall limit the maximum length of a key to 32 bytes.
Copy link
Contributor

Choose a reason for hiding this comment

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

This requirement should be discussed during CFT meeting - seems unnecessary restrictive.

Test cases for value requirements:
5. The component shall accept only values of the following data types: Number, String, Null, Array[Value], or Dictionary{Key:Value}.
6. The component shall serialize and deserialize all values to and from JSON.
7. The component shall limit the maximum length of a value to 1024 bytes.
Copy link
Contributor

Choose a reason for hiding this comment

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

This requirement should be discussed during CFT meeting. Non-string types seem to not be taken into consideration here.

Copy link
Contributor

Choose a reason for hiding this comment

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

Unnecessary reformat.

Copy link
Contributor

Choose a reason for hiding this comment

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

Unnecessary reformat.

@pytest.mark.Description(
"""
Test cases for key requirements:
1. The component shall accept keys that consist solely of alphanumeric characters, underscores, or dashes.
Copy link
Contributor

Choose a reason for hiding this comment

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

This requirement should be discussed during CFT meeting - seems unnecessary restrictive.

@Saumya-R Saumya-R force-pushed the saumya_CIT_testing_add_missing_cases branch from 032f307 to 923cb0a Compare January 21, 2026 18:50
ran clang format for cpp

adding xfail for uniqueness and length of keys

adding xfail for the special char for keys

made the comments cleaner

format fix

alinging to new folders

adding description

divided the test case into multiple fun
@Saumya-R Saumya-R force-pushed the saumya_CIT_testing_add_missing_cases branch from 4a134f1 to 6d7abe1 Compare January 22, 2026 06:39
@arkjedrz
Copy link
Contributor

  1. The component shall accept keys that consist solely of alphanumeric characters, underscores, or dashes.
  2. The component shall encode each key as valid UTF-8. - this maybe can be still checked, is C++ passing here?
  3. The component shall guarantee that each key is unique.
  4. The component shall limit the maximum length of a key to 32 bytes.
  5. The component shall accept only values of the following data types: Number, String, Null, Array[Value], or Dictionary{Key:Value}.
  6. The component shall serialize and deserialize all values to and from JSON.
  7. The component shall limit the maximum length of a value to 1024 bytes.

I striked-through reqs that shouldn't be tested yet.

@Saumya-R
Copy link
Contributor Author

  1. The component shall accept keys that consist solely of alphanumeric characters, underscores, or dashes.
  2. The component shall encode each key as valid UTF-8. - this maybe can be still checked, is C++ passing here?
  3. The component shall guarantee that each key is unique.
  4. The component shall limit the maximum length of a key to 32 bytes.
  5. The component shall accept only values of the following data types: Number, String, Null, Array[Value], or Dictionary{Key:Value}.
  6. The component shall serialize and deserialize all values to and from JSON.
  7. The component shall limit the maximum length of a value to 1024 bytes.

I striked-through reqs that shouldn't be tested yet.

@arkjedrz Did you have a discussion with Persistency team on these or is anything planned ?

@arkjedrz
Copy link
Contributor

@Saumya-R this was discussed during last FT meeting (22.01). There are a lot of unknown regarding reqs as of now.
I recommend moving tests for requirements that are not certain yet into some other branch, so that Your work is not lost. For requirements that are more or less certain - we can proceed.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants