Test Scenario: Run a report through the grid and read every result

Table of Contents

This page documents a test scenario verifying Run a report from its page and read its rows in Prove the report grid run end to end — the remaining work. It is filled in with the target screen and checklist of steps before testing starts; record the outcome by hand in * Results.

1. Before you start

  • The database is this worktree's own, provisioned with Acme Corporation holding group: compass db status reports the schema in sync and bootstrap finished, and compass services status shows every unit running, the five ores.compute.wrapper nodes included.
  • The currency quotes the report's yield curves need are seeded, following How do I seed currency quotes for a local report run?. Without them the run reaches the grid and the engine refuses every curve.
  • At least one run of the report has completed and at least one has failed, so the comparison and the error display have something to read. This scenario creates the second completed run in its own steps.
  • The result rows table exists and the reporting service may write it, which a freshly recreated database grants through its prefix grant function.

2. Scenario Info

Field Value
Verifies task Run a report from its page and read its rows
Parent story Prove the report grid run end to end — the remaining work
Target screen Reporting > Reports, the run page, and Operations > Grid
Clients  
Environment swift_curie, at http://127.0.0.1:20202
State PASSED

3. Steps

3.1. Sign in as the tenant administrator

  • Open http://127.0.0.1:20202.
  • Sign in as tenant_admin@acme_corporation with Secure-Password-123.
  • Choose the party ACME Corporation HK Ltd in the party picker.
  • Confirm Reporting appears in the main navigation.

3.1.1. Result

Field Value
Status PASS

3.2. Read the report list and open NPV

  • Go to Reporting then Reports.
  • Confirm the list states the reports the party runs, and open NPV.
  • Confirm the page states the definition first: the record details, the last-changed line, the history of the record, and the tabs Definition and Runs.
  • Confirm Run and Refresh sit at the top right, and Edit on the record.

3.2.1. Result

Field Value
Status PASS

3.3. Start a run from the definition

  • Press Run.
  • Confirm the page moves to a new run's page with the tabs Run and Results.
  • Confirm the run's state moves on its own, without a hand refresh, and that it reaches completed.

3.3.1. Result

Field Value
Status PASS

3.4. Follow the run onto the grid

  • On the run's Run tab, follow the link that opens this run on the grid.
  • Confirm the grid's page names the run, its report and its batch; the same page is at /operations/grid/report-runs/<run id> and is reachable from Operations then Grid.
  • Confirm it names the run, its report and its compute batch, and that its errors tab states what the run recorded, if anything.
  • Open the batch: the grid's jobs tab opens with the batch selected and lists its jobs. Confirm the job for this run is Done.
  • Select that job and press the action that follows it to its own page. Confirm the job page names the run behind it, the node that ran it and the outcome.
  • Follow the node from the job, and confirm the node page states the host, its platform and when it last reported.

3.4.1. Result

Field Value
Status PASS

3.5. Read the results at trade level

  • Open the run's Results tab.
  • Confirm the header states the trade count and the priced date, that the note says these are the rows the post-processor loaded, and that one row per trade is drawn.
  • Confirm the totals line states the trade count and the total NPV in the run's currency.
  • Open one row and confirm it states that trade's NPV, its base-currency NPV, its notional, its counterparty and any error the run recorded against it.

3.5.1. Result

Field Value
Status PASS

3.6. Follow a trade, a book and a counterparty

  • From the open row, follow the trade link and confirm it opens that trade's record.
  • Back on the results, follow a book link and confirm it opens the book, and a counterparty link and confirm it opens the counterparty.
  • Confirm the trades in the run name the same book and counterparty the record pages state.

3.6.1. Result

Field Value
Status PASS

3.7. Roll the run up by book and by counterparty

  • Change Aggregate by to Book.
  • Confirm the books roll up under their portfolios, a portfolio under its parent, and that the header still states the run's own trade count.
  • Change Aggregate by to Counterparty and confirm the rows roll up to counterparties, with their groups where they have one.
  • Confirm the donut of each book's share is drawn at the book level when the run has more than one book, and that every figure beside it matches the table.

3.7.1. Result

Field Value
Status PASS

3.8. Compare the run with an earlier one

  • Go back to the report, press Run once more, and wait for the second run to complete.
  • On the second run's Results tab, choose the first run in Compare to.
  • Confirm each row states its change and change percentage, that a row the earlier run had and this one does not is marked as gone, and that the summary line names the earlier run's totals.
  • Confirm the plots state the run's problems by scope when the compared run recorded any.

3.8.1. Result

Field Value
Status PASS

3.9. Read a run that failed

  • Go back to the report, open its Runs tab, and open a run in state failed.
  • Confirm the run page states the failure in the engine's own words, and that the errors link lists them by scope.
  • Confirm the results tab states that the run shows no rows and why, rather than an empty table.

3.9.1. Result

Field Value
Status PASS

3.10. Check the rows in the store

  • In a shell, run compass sql -- -c "set row_security=off; select measure, count(*) from ores_reporting_report_result_rows_tbl where report_instance_id'<run id>' group by 1;"=.
  • Confirm the run's rows are there, with the measures the report produced.
  • Confirm select count(*) from ores_reporting_report_result_rows_tbl where report_instance_id'<run id>'= equals the trades on the screen times the measures.
  • Confirm no row carries a measure the screen does not read, and that the table answers as a hypertable: select * from timescaledb_information.hypertables where hypertable_name'ores_reporting_report_result_rows_tbl';=.

3.10.1. Result

Field Value
Status PASS

4. Results

Field Value
Status PASSED
Completed at 2026-10-27T20:18:52Z
Branch  
Commit  
Worktree  

5. Notes

Emacs 29.3 (Org mode 9.6.15)