Skip to content

E2E certification tests - PR2 - #5298

Open
Fabian Meiswinkel (FabianMeiswinkel) wants to merge 35 commits into
mainfrom
users/fabianm/E2ETests_PR2
Open

Fabian Meiswinkel (FabianMeiswinkel) wants to merge 35 commits into
mainfrom
users/fabianm/E2ETests_PR2

Conversation

@FabianMeiswinkel

@FabianMeiswinkel Fabian Meiswinkel (FabianMeiswinkel) commented Sep 13, 2026

Copy link
Copy Markdown
Member

Summary

Expands functional Cosmos DB Rust SDK E2E coverage through the public azure_data_cosmos API and raises hosted in-memory emulator fidelity for core operations.

PR2 scope

  • Source-native core-operation scenarios and language-neutral metadata.
  • Database and container resource lifecycle.
  • Scalar and hierarchical partition keys, quoted paths, and unique keys.
  • Item validation, payload limits, and exact post-operation state.
  • Query pagination, feed ranges, and continuation handling.
  • Change-feed continuation and mode validation.
  • Transactional batch atomicity and patch behavior.
  • Gateway V1 and Gateway V2 execution.
  • A blocking coreOperations CI profile for both hosted gateways.
  • Emulator behavior required by these public SDK contracts.

Follow-up PRs

  • PR3 — Configuration and resilience: authentication and bootstrap fallback, broader configuration precedence, binary/Gateway/connection settings, session behavior, retries, timeouts, hedging, fault injection, diagnostics, and representative OpenTelemetry validation.
  • PR4 — Dynamic topology and availability: region and account failover, partition migration, split/merge phases, replication controls, routing refresh, PPAF/PPCB, and failback.
  • PR5 — Live matrix and promotion: Azure Live profiles and required coverage, CI sharding, reports, runtime calibration, quarantine policy, documentation, and cross-SDK portability review.

Copilot AI balanced review requested due to automatic review settings September 13, 2026 21:22
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
2 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Gateway V2 currently misclassifies ordinary item feeds as change feeds, and additional release-completeness issues remain.

Get a fresh assessment by requesting another Copilot review.

Review tier: Balanced
Findings: 1 High severity · 1 Medium severity · 2 Low severity

Open findings (4)
What changed in this PR

Introduces the PR2 Cosmos functional E2E certification suite, expanding hosted-emulator coverage and related driver behavior.

Changes:

  • Adds schemas, profiles, scenario catalogs, implementation mappings, and CI matrices.
  • Adds Rust E2E tests for core Cosmos operations and emulator capability reporting.
  • Updates emulator fidelity, session-token behavior, and test orchestration.
File Description
sdk/​cosmos/​eng/​scripts/​Invoke-CosmosTestSetup.ps1 Validates catalogs and provisions profile-based emulators.
sdk/​cosmos/​eng/​scripts/​Invoke-CosmosTestCleanup.ps1 Cleans owned emulator processes and directories.
sdk/​cosmos/​e2e-read-consistency-override-matrix.json Defines read-consistency CI combinations.
sdk/​cosmos/​e2e-core-operations-matrix.json Defines core-operation CI combinations.
sdk/​cosmos/​e2e-consistency-matrix.json Defines account-consistency CI combinations.
sdk/​cosmos/​e2e_tests/​schema/​scenario.v1.json Defines scenario metadata schema.
sdk/​cosmos/​e2e_tests/​schema/​profile.v1.json Defines setup-profile schema.
sdk/​cosmos/​e2e_tests/​scenarios/​queries/​parameterized-filter.json Catalogs parameterized-query coverage.
sdk/​cosmos/​e2e_tests/​scenarios/​queries/​pagination-resume.json Catalogs query continuation coverage.
sdk/​cosmos/​e2e_tests/​scenarios/​queries/​invalid-syntax.json Catalogs invalid-query behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​queries/​feed-ranges.json Catalogs feed-range behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​queries/​change-feed-pagination-resume.json Catalogs change-feed continuation behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​queries/​change-feed-all-versions-starts.json Catalogs unsupported full-fidelity starts.
sdk/​cosmos/​e2e_tests/​scenarios/​management/​resource-lifecycle.json Catalogs resource lifecycle behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​management/​capabilities.json Catalogs capability discovery.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​validation-contracts.json Catalogs write-validation behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​upsert-create-update.json Catalogs upsert behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​transactional-batch-atomicity.json Catalogs batch atomicity.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​scalar-partition-keys.json Catalogs scalar partition keys.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​patch-state.json Catalogs patch state behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​optimistic-concurrency.json Catalogs ETag concurrency behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​not-found-wrong-partition-key.json Catalogs partition-aware 404 behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​lifecycle.json Catalogs item CRUD behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​hierarchical-partition-key.json Catalogs hierarchical partition keys.
sdk/​cosmos/​e2e_tests/​scenarios/​items/​create-conflict.json Catalogs duplicate-create conflicts.
sdk/​cosmos/​e2e_tests/​scenarios/​diagnostics/​success-and-error.json Catalogs diagnostics behavior.
sdk/​cosmos/​e2e_tests/​scenarios/​bootstrap/​primary-success.json Catalogs client bootstrap behavior.
sdk/​cosmos/​e2e_tests/​README.md Documents the E2E catalog architecture.
sdk/​cosmos/​e2e_tests/​profiles/​readConsistencyOverrideMatrix.json Defines consistency-override profiles.
sdk/​cosmos/​e2e_tests/​profiles/​lifecycleConsistencyMatrix.json Defines lifecycle consistency profiles.
sdk/​cosmos/​e2e_tests/​profiles/​hostedEmulatorSmoke.json Defines the smoke-test profile.
sdk/​cosmos/​e2e_tests/​profiles/​coreOperations.json Defines the core-operations profile.
sdk/​cosmos/​e2e_tests/​implementations/​rust.json Maps scenarios to Rust tests.
sdk/​cosmos/​docs/​specs/​0028-functional-e2e-testing.md Defines the E2E testing roadmap.
sdk/​cosmos/​docs/​specs/​0026-session-consistency.md Updates session-token semantics.
sdk/​cosmos/​docs/​specs/​0011-gateway-v2.md Clarifies read-consistency precedence.
sdk/​cosmos/​docs/​README.md Indexes the new specification.
sdk/​cosmos/​ci.yml Registers new E2E matrices.
sdk/​cosmos/​azure_data_cosmos/​tests/​in_memory_emulator_tests/​session_token.rs Expands session-token tests.
sdk/​cosmos/​azure_data_cosmos/​tests/​in_memory_emulator_tests/​change_feed.rs Tests change-feed polling semantics.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_tests.rs Adds the E2E test target.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​transactional_batch_atomicity.rs Tests transactional batches.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​support.rs Adds shared E2E assertions and gating.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​query_parameterized_filter.rs Tests parameterized queries.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​query_pagination_resume.rs Tests query continuation.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​query_invalid_syntax.rs Tests invalid-query errors.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​query_feed_ranges.rs Tests feed-range mapping.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​mod.rs Registers E2E modules and tests.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​management_resource_lifecycle.rs Tests database/container lifecycle.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_validation_contracts.rs Tests invalid writes and unique keys.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_upsert.rs Tests upsert create/update semantics.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_scalar_partition_keys.rs Tests scalar partition-key types.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_patch_state.rs Tests patch post-images.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_optimistic_concurrency.rs Tests stale ETag rejection.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_not_found.rs Tests partition-aware not-found behavior.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_hierarchical_partition_key.rs Tests hierarchical partition keys.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​item_create_conflict.rs Tests duplicate creates across key modes.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​fixture.rs Adds client and resource fixtures.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​diagnostics_success_and_error.rs Tests diagnostics fields.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​change_feed_pagination_resume.rs Tests change-feed resume behavior.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​change_feed_all_versions_starts.rs Tests full-fidelity start validation.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​capabilities.rs Tests capability discovery.
sdk/​cosmos/​azure_data_cosmos/​tests/​e2e_test_cases/​bootstrap_primary.rs Tests primary-endpoint bootstrap.
sdk/​cosmos/​azure_data_cosmos/​Cargo.toml Registers E2E test features.
sdk/​cosmos/​azure_data_cosmos/​build.rs Registers the e2e cfg value.
sdk/​cosmos/​azure_data_cosmos_emulator/​src/​metrics.rs Tracks Gateway V1 requests.
sdk/​cosmos/​azure_data_cosmos_emulator/​src/​management.rs Exposes capabilities and request metrics.
sdk/​cosmos/​azure_data_cosmos_emulator/​src/​main.rs Passes metrics into Gateway V1.
sdk/​cosmos/​azure_data_cosmos_emulator/​src/​gateway_v2.rs Adjusts Gateway V2 request counting.
sdk/​cosmos/​azure_data_cosmos_emulator/​src/​data_plane.rs Adds Gateway V1 metrics.
sdk/​cosmos/​azure_data_cosmos_emulator/​README.md Documents capability discovery.
sdk/​cosmos/​azure_data_cosmos_driver/​tests/​framework/​test_client.rs Supports operation-specific read options.
sdk/​cosmos/​azure_data_cosmos_driver/​tests/​emulator_tests/​driver_fault_injection.rs Scopes retry options to the tested read.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​options/​read_consistency.rs Clarifies consistency strategy semantics.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​in_memory_emulator/​system_properties.rs Preserves container properties.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​in_memory_emulator/​store.rs Stores and replaces container properties.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​in_memory_emulator/​gateway_v2.rs Bridges Gateway V2 read-feed headers.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​in_memory_emulator/​epk.rs Supports undefined partition keys.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​in_memory_emulator/​dispatch.rs Routes container replacement.
sdk/​cosmos/​azure_data_cosmos_driver/​src/​driver/​pipeline/​operation_pipeline.rs Revises session-token capture and resolution.

💡 Add a code-review agent skill for context-aware, tailored reviews. Learn more in the docs.

Comment thread sdk/cosmos/azure_data_cosmos_driver/src/in_memory_emulator/gateway_v2.rs Outdated
Comment thread sdk/cosmos/docs/specs/0028-functional-e2e-testing.md Outdated
@FabianMeiswinkel

Copy link
Copy Markdown
Member Author

/azp run rust - cosmos - weekly

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@FabianMeiswinkel

Copy link
Copy Markdown
Member Author

/azp run rust - cosmos - weekly

@FabianMeiswinkel
Fabian Meiswinkel (FabianMeiswinkel) marked this pull request as ready for review September 19, 2026 04:21
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).
2 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@FabianMeiswinkel

Copy link
Copy Markdown
Member Author

/azp run rust - cosmos - weekly

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

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

Labels

Cosmos The azure_cosmos crate

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants