Skip to content

Wait until the test corpus is loaded before testing - #402

Merged
cmil merged 1 commit into
ubuntu-26.04from
wait-for-test-corpus
Oct 18, 2026
Merged

cmil merged 1 commit into
ubuntu-26.04from
wait-for-test-corpus

Conversation

@cmil

@cmil cmil commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

In the run that prompted this, loading didn't finish at all, and the tests started with an empty corpus anyway. Why loading failed there can't be told, as the container logs weren't collected; with this change they would be: https://github.com/dracor-org/dracor-api/actions/runs/39131574060/attempts/1

🤖 Generated with Claude Code

@cmil
cmil added this pull request to stack #393 October 18, 2026 13:56
@cmil
cmil marked this pull request as ready for review October 18, 2026 13:56
@github-actions

github-actions Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

Merging this PR will leave 2 of 36 operations untested. Please review.

❌ 2 untested
🟡 1 partial
✅ 33 tested

Operations  ███████████████████░    34/36    94%
Parameters  ██████████████████░░    68/75    91%
Keywords    ██████████████████░░   90/100    90%
Responses   ██████████████████░░    75/84    89%
Examples    ██████████████████░░  289/317    91%

❌ Untested (2)

Method Path Parameters Keywords Responses Examples
❌ POST /exist/restxq/v1/webhook/github 0/5 0/7 0/1 0/0
❌ GET /exist/restxq/v1/wikidata/author/{id} 0/1 0/1 0/2 0/0

🟡 Tested (34)

Method Path Parameters Keywords Responses Examples
🟡 POST /exist/restxq/v1/corpora 1/2 8/10 4/5 0/0
🟢 GET /exist/restxq/v1/character/{id} 1/1 2/2 2/3 0/0
🟢 GET /exist/restxq/v1/corpora 1/1 2/2 2/2 0/0
🟢 DELETE /exist/restxq/v1/corpora/{corpusname} 1/1 1/1 2/3 0/7
🟢 GET /exist/restxq/v1/corpora/{corpusname} 1/1 1/1 2/2 7/7
🟢 POST /exist/restxq/v1/corpora/{corpusname} 2/2 6/6 5/6 0/7
🟢 GET /exist/restxq/v1/corpora/{corpusname}/metadata 1/1 1/1 2/2 7/7
🟢 GET /exist/restxq/v1/corpora/{corpusname}/metadata/csv 1/1 1/1 2/2 7/7
🟢 DELETE /exist/restxq/v1/corpora/{corpusname}/plays/{playname} 2/2 2/2 3/3 7/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname} 2/2 2/2 2/2 14/14
24 more
Method Path Parameters Keywords Responses Examples
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/characters 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/characters/csv 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/metrics 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/networkdata/csv 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/networkdata/gexf 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/networkdata/graphml 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/relations/csv 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/relations/gexf 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/relations/graphml 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/spoken-text 7/7 8/8 3/3 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/spoken-text-by-character 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/stage-directions 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/stage-directions-with-speakers 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/tei 2/2 2/2 2/2 14/14
🟢 PUT /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/tei 3/3 4/4 3/5 0/7
🟢 GET /exist/restxq/v1/corpora/{corpusname}/plays/{playname}/txt 2/2 2/2 2/2 14/14
🟢 GET /exist/restxq/v1/dts/collection 3/3 5/5 3/3 14/14
🟢 GET /exist/restxq/v1/dts/document 6/6 8/8 3/3 10/10
🟢 GET /exist/restxq/v1/dts/navigation 7/7 10/10 3/3 13/13
🟢 GET /exist/restxq/v1/id/{id} 1/1 1/1 2/2 0/0
🟢 GET /exist/restxq/v1/characters 0/0 0/0 1/1 0/0
🟢 GET /exist/restxq/v1/dts 0/0 0/0 1/1 0/0
🟢 GET /exist/restxq/v1/info 0/0 0/0 1/1 0/0
🟢 GET /exist/restxq/v1/wikidata/mixnmatch 0/0 0/0 1/1 0/0

Powered by TraceCov v0.25.3

schemathesis 4.31.1 | http://localhost:8081/exist/restxq/v1/openapi.yaml

Download full HTML report

@cmil
cmil force-pushed the wait-for-test-corpus branch from 2a723a1 to 3b1eb10 Compare October 18, 2026 14:22
The loadtest container waited for `"plays":[{`, which never matches the
indented JSON of the API, so it always gave up after 60 s while the
corpus was still loading, and nothing checked its exit code: `docker
compose up --wait` doesn't wait for it to finish. The tests therefore
always started while the corpus was loading, which went unnoticed as
long as loading finished early in the first test run. When loading
didn't finish at all, as in a run on the Ubuntu 26.04 runner, this only
showed minutes later as an error in the DTS validator.

The container now waits up to 5 minutes for the commit of the corpus,
which the load job records after loading all plays, and the workflow
fails right after starting the stack, with the logs of loadtest and
api, if loading doesn't succeed.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cmil
cmil force-pushed the wait-for-test-corpus branch from 3b1eb10 to 393e09c Compare October 18, 2026 14:24
@cmil
cmil merged commit ba74b4b into main Oct 18, 2026
1 check passed
@cmil
cmil deleted the wait-for-test-corpus branch October 18, 2026 14:47
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