Skip to content

test: build representative end-to-end coverage#66

Closed
woutervanranst wants to merge 126 commits intomasterfrom
improve-e2e-tests
Closed

test: build representative end-to-end coverage#66
woutervanranst wants to merge 126 commits intomasterfrom
improve-e2e-tests

Conversation

@woutervanranst
Copy link
Copy Markdown
Owner

@woutervanranst woutervanranst commented Apr 20, 2026

Summary

  • add deterministic representative E2E datasets, backend-swappable fixtures, and a shared scenario runner that exercises archive and restore flows across Azurite and opt-in Azure
  • add dedicated live Azure archive-tier representative coverage, including pending rehydration, ready restore from chunks-rehydrated/, and cleanup verification
  • retire superseded ad hoc E2E tests, keep only targeted live Azure sanity coverage, and document the representative suite plus the temporary Azure cold-restore skip tracked in #65

Test Plan

  • dotnet test --project "src/Arius.Core.Tests/Arius.Core.Tests.csproj"
  • dotnet test --project "src/Arius.AzureBlob.Tests/Arius.AzureBlob.Tests.csproj"
  • dotnet test --project "src/Arius.Cli.Tests/Arius.Cli.Tests.csproj"
  • dotnet test --project "src/Arius.Integration.Tests/Arius.Integration.Tests.csproj"
  • dotnet test --project "src/Arius.Architecture.Tests/Arius.Architecture.Tests.csproj"
  • dotnet test --project "src/Arius.E2E.Tests/Arius.E2E.Tests.csproj" --treenode-filter "/*/*/E2EStorageBackendFixtureTests/*"
  • dotnet test --project "src/Arius.E2E.Tests/Arius.E2E.Tests.csproj" --treenode-filter "/*/*/RepresentativeScenarioRunnerTests/*"
  • dotnet test --project "src/Arius.E2E.Tests/Arius.E2E.Tests.csproj" --treenode-filter "/*/*/RepresentativeArchiveRestoreTests/*"
  • dotnet test --project "src/Arius.E2E.Tests/Arius.E2E.Tests.csproj" --treenode-filter "/*/*/ArchiveTierRepresentativeTests/*"
  • dotnet test --project "src/Arius.E2E.Tests/Arius.E2E.Tests.csproj" --treenode-filter "/*/*/E2ETests/*"

Notes

  • slopwatch is not installed in this environment, so that check could not be run here.
  • The Azure cold-restore representative scenarios remain skipped with issue reference #65.

Summary by CodeRabbit

  • Documentation

    • Added install guidance (plugin registration + restart) and a new expanded End-to-End testing guide and implementation plans for a deterministic representative E2E suite.
  • Tests

    • Added deterministic synthetic dataset tooling, materialization/tree-verification helpers, a catalog/runner of representative E2E scenarios, many new E2E/integration tests, and runtime skips when emulator/Docker or Azure credentials are unavailable; some Azure cold-restore scenarios are temporarily skipped (see issue Cold Azure representative restore scenarios time out in E2E suite #65).
  • Chores

    • Centralized shared test infrastructure and unified backend fixtures, plus coordinated local-cache lifecycle management.

Keep RepresentativeWorkflowRunner focused on orchestration by moving archive, restore, conflict, and archive-tier mechanics into step-adjacent helpers under Workflows/Steps. Preserve the current Azure workflow skip while the cold-cache representative path remains tracked by issue #65.
Remove the temporary Azure skip and make the archive-tier workflow operate on existing tar chunks from the canonical history instead of expecting a duplicate archive run to create new archive-tier blobs. Rehydrate sideloaded tar chunks using Arius encryption so the ready-restore path matches real chunk format.
Keep helper code inside the owning step when it is not shared across steps. Inline the archive and archive-tier helper logic into their step files and keep RestoreStepSupport as the remaining shared workflow helper.
Keep restore assertions anchored to explicit versioned source roots instead of rematerializing expected trees on demand. Materialize V2 by copying the preserved V1 source and applying mutations so the workflow shows the source history evolving alongside the archive.
Add a short XML doc comment explaining that AssertConflictBehaviorStep seeds a conflicting local file and verifies restore behavior for overwrite versus preserve modes.
Add a docstring and a few high-level comments that explain how ArchiveTierLifecycleStep forces tar chunks into archive tier, verifies the pending rehydration path, sideloads ready rehydrated chunks, and validates the final restore and cleanup flow.
Rewrite ArchiveTierLifecycleStep around one representative tar-backed file instead of rebuilding all tar chunks under a broad subtree. Preserve the real readable chunk blob, move that one chunk to archive tier, verify the pending rehydration prompt, then restore successfully from the staged ready blob and validate cleanup.
@woutervanranst
Copy link
Copy Markdown
Owner Author

Superseded by a refreshed representative E2E workflow PR from the same branch.

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