Skip to content

feat: Add SQL-on-FHIR benchmark runner as a dedicated module#2640

Merged
piotrszul merged 1 commit into
spike/sof-benchmarkfrom
spike/benchmark_initial
Jul 1, 2026
Merged

feat: Add SQL-on-FHIR benchmark runner as a dedicated module#2640
piotrszul merged 1 commit into
spike/sof-benchmarkfrom
spike/benchmark_initial

Conversation

@piotrszul

Copy link
Copy Markdown
Collaborator

Summary

Adds a runner for the implementation-agnostic SQL-on-FHIR performance benchmark (from the sql-on-fhir submodule), executed over the Pathling engine. This lets Pathling act as a second, strongly-typed JVM/Spark implementation that stress-tests the benchmark spec.

The runner lives in a dedicated sof-benchmark module, separate from the JMH benchmark module — the two share no code, so co-locating them only forced one module to carry the other's dependencies and a single shaded main class. The JMH benchmark module is left byte-identical to its prior state.

What's included

  • sof-benchmark module (child of the root pom.xml): library-runtime + spark-sql + jackson-databind, shaded with SofBenchmarkRunner as its mainClass (runs via java -jar).
  • Java runner (au.csiro.pathling.sof.benchmark): manifest-first data location, load phase measured separately from the timed execute+extract region, output row-count correctness guard (ok/count_mismatch), schema-valid benchmark-report.json.
  • Python runner (sof-benchmark/python/sof_runner.py): mirrors the Java runner over the pathling package using click (matching the Pathling Python CLI), isolating language-binding overhead.
  • Docs: CONTRIBUTING.md module list + diagram, Python README.md.
  • OpenSpec change add-sof-benchmark-runner archived; its spec promoted to openspec/specs/sof-benchmark-runner/.

Verification

  • Both modules build; sof-benchmark produces a runnable shaded jar.
  • Java and Python runners both validated against benchmark-report.schema.json.
  • Parity confirmed: identical case titles and output rows (condition flat → 6219, observation components → 4794), differing only in implementation.name.

🤖 Generated with Claude Code

Introduce the sof-benchmark module: a runner for the implementation-agnostic
SQL-on-FHIR performance benchmark executed over the Pathling engine, with
parallel Java and Python implementations. The runner locates a benchmark's
materialized dataset manifest-first, separates the FHIR load/encode phase from
the timed execute+extract region, times a full write of each case's result,
guards output row counts against expectCount, and emits a schema-valid
benchmark-report.json.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@piotrszul piotrszul force-pushed the spike/benchmark_initial branch from 985734b to 2829285 Compare July 1, 2026 01:04
@piotrszul piotrszul merged commit 775ab41 into spike/sof-benchmark Jul 1, 2026
3 checks passed
@piotrszul piotrszul deleted the spike/benchmark_initial branch July 1, 2026 01:05
@sonarqubecloud

sonarqubecloud Bot commented Jul 1, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
0.0% Coverage on New Code (required ≥ 80%)
D Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

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