Skip to content

Manual test pass: MongoDB + Elasticsearch backend #941

Description

@smunini

Summary

Run the manual testing pass in MANUAL_TESTING_MATRIX.md for the MongoDB + Elasticsearch backend (HFS_STORAGE_BACKEND=mongo-es) and record the results in this issue.

The matrix is organised backend-first: every backend gets the same T0 through T8 sequence. This issue covers one row of that matrix.

Procedure

Follow MANUAL_TESTING_MATRIX.md sections 2 through 12 in order, using the mongo-es row of the per-backend environment table in section 5.

Infrastructure: start MongoDB 7.0 and Elasticsearch 8.15.0 per section 4. Infrastructure: start Elasticsearch 8.15.0 per section 4. Set HFS_COMPOSITE_SYNC_MODE=synchronous and HFS_ELASTICSEARCH_WRITE_REFRESH=wait_for (section 5 common env) so searches are read-your-write during T2 and T3. Confirm in the log or with HFS_LOG_LEVEL=debug that T3 searches are served by Elasticsearch, and that curl localhost:9200/_cat/indices/hfs* document counts match the T2 totals. Note: Bulk Data $export (T4) has no job store on MongoDB and is expected to return 501; record that cell as N/A rather than as a failure.

  • T0 Build with the CI selection: cargo build --workspace --all-features --release
  • T1 Start HFS with HFS_STORAGE_BACKEND=mongo-es HFS_MONGODB_URI=mongodb://localhost:27017 HFS_MONGODB_DATABASE=helios HFS_ELASTICSEARCH_NODES=http://localhost:9200 and confirm /health, /metadata, and /ui
  • T2 Import at least 10,000 resources from the Synthea bulk_1k archive (record wall-clock time, bundle count, resource total)
  • T3 One search per type: string, token, date, number, quantity, reference, uri, composite, special, plus chained, reverse-chained, _include/_revinclude, _sort, paging, _content, POST search
  • T4 Bulk Data $export: system, patient, group; all three NDJSON format spellings; unsupported format returns 400; UI /ui/bulk-export
  • T5 Create a ViewDefinition via API and via /ui/sql/view-definitions; examine $sql-run output in json, csv, ndjson, parquet
  • T6 $sql-export with a ViewDefinition subject, a SQLQuery Library subject, and a SQLView Library subject, cycling all four formats; UI /ui/sql/export
  • T7 Create a SubscriptionTopic (R4 backport Basic) and rest-hook Subscription, trigger notifications, verify delivery, $status, $events
  • T8 Verify the /ui/subscriptions activity dashboard (cards, table row, sparkline, failure streak, rehydration after restart)

Results to attach

  • The filled-in mongo-es row of the matrix table from section 1 of MANUAL_TESTING_MATRIX.md
  • build.log tail, hfs-mongo-es.log, import-mongo-es.log, and the T2 timing line
  • One T4 manifest and one T6 result manifest
  • Screenshots of /ui after import, /ui/sql/export with a completed card, and /ui/subscriptions after T8
  • For any failure: the request, the OperationOutcome, the log excerpt, and a link to the issue filed for it

Acceptance criteria

  • Every T0 through T8 cell for the mongo-es row is marked pass, or marked fail with a linked issue, or marked N/A where section 1's expected-support table says the capability is unsupported on this backend
  • Results and artifacts listed above are attached to this issue

Activity

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions