aminghadersohi commented on PR #45148:
URL: https://github.com/apache/superset/pull/45148#issuecomment-6088446399

   ## Acceptance test: PASS (Superset producer)
   
   Tested head `5b48ec5dd771d3642b0f15ea02d0c1c3dbb965e7`; verified OPEN and 
unchanged before reporting.
   
   Ran the actual service from this worktree with 
`SUPERSET_CONFIG_PATH=/tmp/accept45148/config.py .venv/bin/superset mcp run 
--host 127.0.0.1 --port 15418`. Used a disposable migrated SQLite metadata DB, 
real Admin user via `MCP_DEV_USERNAME`, and real DAO reads (no mocked 
tool/DAO). A `fastmcp.Client('http://127.0.0.1:15418/mcp')` issued `list_tools` 
and `call_tool('get_catalog', {'request': ...})` over HTTP. Fixtures contained 
20 rows/type initially, then 99/100/101/250, with overlong descriptions and 
names to trigger field and byte bounds.
   
   | Criterion | Result | Commands / key evidence |
   |---|---|---|
   | Complete results must not be flagged truncated, including fewer than 
requested and exactly at cap | PASS | `.venv/bin/python 
/tmp/accept45148/client.py complete`: all four asset types, page sizes 
10/20/50/100. Reported dataset case: `page_size=50`, 20 items, 
`next_cursor=null`, `truncated=false`, `fields_shortened=true`. Page size 10: 
IDs 1–10 then 11–20; shortening flag true then false. |
   | Held-back rows always have usable continuation; requesting above the DAO 
cap must not lose rows | PASS | `client.py lowcap` with 
`SQLALCHEMY_DAO_MAX_PAGE_SIZE=20`: `page_size=50` returned IDs 1–19 with 
cursor, then ID 20 with no cursor; both `truncated=false`. `client.py wide 
99/100/101/250` with default DAO cap: database page counts respectively `[99]`, 
`[100]`, `[100,1]`, `[100,100,50]`. Every traversal asserted exact expected ID 
sequence (no gaps/duplicates). |
   | Byte-bound truncation must resume immediately after the last returned row 
| PASS | `client.py wide 250`: datasets returned IDs 
`1–48,49–81,82–114,115–147,148–180,181–213,214–246,247–250`. All seven byte-cut 
pages had `truncated=true` and a cursor; the final page had `truncated=false`, 
no cursor. Charts/dashboards also traversed all 250 IDs. |
   | Do not loosen page, byte, or field bounds | PASS | Every live page 
asserted ≤100 items, compact JSON ≤32768 bytes, names ≤256 chars, descriptions 
≤500 chars, URLs ≤2048 chars. Largest measured live page: 32613 bytes. 
`check_bounds.py`: `page_size=101` rejected with `request.page_size: Must be at 
most the allowed maximum`. |
   | Regression coverage for exactly-at-cap, fewer-than-page-size, 
more-than-cap, and byte-bound cases | PASS | 
`SUPERSET_CONFIG_PATH=/tmp/accept45148/test_config.py .venv/bin/pytest -q 
tests/unit_tests/mcp_service/catalog`: **84 passed in 30.41s**. Live boundary 
runs above additionally covered all four asset types. Search/cursor traversal 
returned IDs 10–19 in pages `[3,3,3,1]`. |
   
   **Scope limitation:** The external gateway's 
`get_workspace_catalog`/`provenance.complete` mapping was not tested against 
this head: this worktree contains the Superset producer, not that separately 
deployed gateway. The producer output was verified live; no claim of 
gateway-side regression coverage or production rollout is made. 
Permission-hidden rows and oversized-URL omission have focused unit-test 
evidence, not separate live fixtures.
   
   `pre-commit run --files` on the four PR-changed files passed. No source 
changes, commits, or pushes; worktree remains clean. Screenshots: n/a (MCP 
service only).
   
   Teardown complete: MCP process stopped, disposable DB/config removed, and 
`curl http://127.0.0.1:15418/health` fails with connection refused (exit 7). No 
containers started.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to