Skip to content

test: adapt integration tests to Weaviate 1.37.5#2046

Closed
jfrancoa wants to merge 1 commit into
mainfrom
jose/adapt-1.37
Closed

test: adapt integration tests to Weaviate 1.37.5#2046
jfrancoa wants to merge 1 commit into
mainfrom
jose/adapt-1.37

Conversation

@jfrancoa
Copy link
Copy Markdown
Contributor

Motivation

Weaviate 1.37.5 introduces two intentional server-side behavior changes that break existing integration tests. This PR bumps the pinned WEAVIATE_137 version in CI from 1.37.1-4e61e26.amd64 to the released 1.37.5 and adapts the affected tests. Both failures stem from deliberate server changes (verified against the Weaviate source), not client bugs — the tests were asserting behavior the server no longer provides.

Approach

Two unrelated server changes drive the test updates:

  1. maxWorkers removed from async replication config (server commit bb3d157004 "async replication scheduler", shipped in v1.37.3+). The server no longer accepts or returns this field, so max_workers now reads back as None. Rather than asserting on a field the server has dropped, the async replication tests now round-trip through hashtree_height (and propagation_concurrency), which are available on all async-capable versions. The client still exposes max_workers for backward compatibility with older servers — it's just silently ignored on 1.37.3+, so no client code changed.

  2. Property name suffix _searchable is now reserved for internal indices (entities/schema/validation.go). Properties named field_index_searchable / nested_searchable are rejected by validation, so they're renamed to field_searchable_index / nested_searchable_index. The index_searchable=False behavior under test is unchanged — only the property names move.

The one test with a real semantic shift is test_replication_config_unset_single_async_field: after the maxWorkers removal, a single-field partial update now replaces the whole async config (unspecified fields revert to server defaults). The test is re-gated to >= 1.37.3 and rewritten with hashtree_height + propagation_concurrency to still exercise that "unspecified field reverts to default" invariant.

Key areas for review

  • test_collection_config.py:test_replication_config_unset_single_async_field — the only test with changed semantics (config replacement on partial update); verify the version gate and the revert-to-default assertion still capture the intended behavior
  • .github/workflows/main.yaml — version pin moves from a pre-release build hash to released 1.37.5
  • The remaining async tests are mechanical max_workershashtree_height substitutions; safe to skim

Risks and mitigations

Low risk — this is test maintenance, no production client code changes.

  • Older-server coverage: dropping max_workers assertions means we no longer verify max_workers round-trips on servers < 1.37.3 where it's still honored. Mitigated by the fact that the field is still exposed by the client and the substituted assertions (hashtree_height) cover the same async-config round-trip path across all supported versions.
  • Version gate correctness: test_replication_config_unset_single_async_field is gated to >= 1.37.3 rather than 1.37.5 because the config-replacement behavior lands with the maxWorkers removal; running it on 1.37.3/1.37.4 is intended.

Testing

Full integration suite run against a live 1.37.5 cluster: 1162 passed, 88 skipped, 0 failures.

🤖 Generated with Claude Code

Bump WEAVIATE_137 to 1.37.5 and adapt integration tests to two intentional
server changes (verified against weaviate source, not client bugs):

1. maxWorkers removed from async replication config (commit bb3d157004
   "async replication scheduler", in tags v1.37.3+). The server no longer
   accepts/returns it, so max_workers reads back None. Drop max_workers from
   the 5 async replication tests and assert round-trip via hashtree_height
   instead (available on all async-capable versions >=1.34.18).
   test_replication_config_unset_single_async_field is re-gated to >=1.37.3
   and rewritten using hashtree_height + propagation_concurrency, since after
   the removal a single-field partial update replaces the config (unspecified
   fields revert to default).

2. Property name suffix "_searchable" is now reserved for internal indices
   (entities/schema/validation.go). Rename field_index_searchable ->
   field_searchable_index and nested_searchable -> nested_searchable_index in
   test_config_export_and_recreate_from_dict; index_searchable=False behavior
   is unchanged.

The client still exposes max_workers for backward compatibility with older
servers (silently ignored on 1.37.3+).

Verified: full integration suite passes against a live 1.37.5 cluster
(1162 passed, 88 skipped, 0 failures).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@jfrancoa jfrancoa requested a review from a team as a code owner May 28, 2026 08:43
Copy link
Copy Markdown

@orca-security-eu orca-security-eu Bot left a comment

Choose a reason for hiding this comment

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

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Infrastructure as Code high 0   medium 0   low 0   info 0 View in Orca
Passed Passed SAST high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca
Passed Passed Vulnerabilities high 0   medium 0   low 0   info 0 View in Orca

@jfrancoa
Copy link
Copy Markdown
Contributor Author

@jfrancoa jfrancoa closed this May 28, 2026
@jfrancoa jfrancoa deleted the jose/adapt-1.37 branch May 28, 2026 10:55
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.

1 participant