• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Alan-Jowett / sonde / 25953392533
81%

Build:
DEFAULT BRANCH: main
Ran 16 May 2026 05:16AM UTC
Jobs 1
Files 126
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

16 May 2026 05:02AM UTC coverage: 82.952% (+0.1%) from 82.835%
25953392533

push

github

web-flow
feat(azure-handler): implement SensorData table storage (AZH-0500, AZH-0501) (#931)

* feat(azure-handler): implement SensorData table storage (AZH-0500, AZH-0501)

Extract enriched \eadings\ (CBOR key 16) from \GW-0813\ APP_DATA
connector messages and write a \SensorData\ row for every app-data
invocation.

Changes:
- Add \eadings: Option<BTreeMap<String, i64>>\ to \AppDataMessage\
- Add \decode_optional_readings()\ to extract CBOR key 16 map
- Add \SensorDataRow\ / \SensorDataEntity\ types
- Add \eadings_to_json()\ with \MAX_SAFE_INTEGER\ threshold:
  values within ±2^53-1 are JSON numbers, values exceeding that
  threshold are JSON strings to preserve precision for SPA consumers
- Add \ppend_sensor_data()\ to \HandlerStore\ trait
- Add \sensor_data_table\ to \RuntimeConfig\ and \AzureTablesStore\
- Write SensorData row before ProgramRoute lookup in \handle_app_data\,
  per design §6.1 (SensorData writes are independent of routing)

Tests added:
- T-AZH-0500: basic row creation
- T-AZH-0500a: duplicate-timestamp uniqueness
- T-AZH-0501: readings stored as JSON
- T-AZH-0501a: missing readings → empty string
- T-AZH-0501b: large int64 threshold (positive and negative)
- SensorData written even when ProgramRoute missing
- \eadings_to_json\ edge cases (None, empty, boundary, i64::MIN)
- \SensorDataEntity\ conversion round-trip

Known limitations:
- T-AZH-0500b (retry idempotency) requires passing upstream queue
  message ID through \handle_payload\ — deferred to a follow-up
- AZH-0500 AC-4 (Bicep provisioning) is infrastructure-only

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Alan Jowett <alan.jowett@microsoft.com>

* infra: provision SensorData table and RBAC (AZH-0500 AC-4)

Add the \SensorData\ Azure Table to the Bicep provisioning stack so
the Azure handler can write enriched APP_DATA rows at runtime.

Changes across the deployment chain:
- storage.bicep: new \sensorDataTableName\ param, table resource, ... (continued)

349 of 361 new or added lines in 1 file covered. (96.68%)

35243 of 42486 relevant lines covered (82.95%)

255.87 hits per line

Uncovered Changes

Lines Coverage ∆ File
12
91.21
1.04% crates/sonde-azure-handler/src/lib.rs
Jobs
ID Job ID Ran Files Coverage
1 25953392533.1 16 May 2026 05:16AM UTC 126
82.95
GitHub Action Run
Source Files on build 25953392533
  • Tree
  • List 126
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #25953392533
  • 09a85604 on github
  • Prev Build on main (#25951294802)
  • Next Build on main (#25954318319)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc