test(job-array-one-based-index): apiserver handler test seams and fixture (task 5.4)
CreateJob's ID generation and submission and both control dispatch sites now go through package variables (generateJobID, generateArrayJobID, submitJob, controlJob) that default to the real backend/services functions, so production behaviour is unchanged. A new non-cgo handler test file provides a reusable fixture: it saves and restores every global it touches, sets up auth/RBAC, seeds jobs and their queues, and records each dispatched job. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
46f57095c1
commit
3a7e3890e2
3 changed files with 490 additions and 5 deletions
|
|
@ -114,7 +114,7 @@
|
|||
- _Requirements: 5.2, 5.11_
|
||||
- _Boundary: store query pipeline_
|
||||
|
||||
- [ ] 5.4 Add handler test seams and the non-cgo handler test fixture
|
||||
- [x] 5.4 Add handler test seams and the non-cgo handler test fixture
|
||||
- Route ID generation, array ID generation, job submission and control dispatch through replaceable package variables
|
||||
- Create the non-cgo handler test file with a fixture that saves the stores, sets up auth/RBAC, then seeds jobs (controllable status) and their queues and the array-size config, and restores everything on cleanup; the dispatch replacement records each dispatched job
|
||||
- Done when a smoke handler test in the new file submits an ordinary job and controls one seeded job through the seams with the dispatch recorded, and the existing apiserver tests still pass
|
||||
|
|
@ -244,3 +244,4 @@
|
|||
- 4.1: after `jobsub -a N`, `$jobid` is the array identity, so `expect-job $jobid` currently reports not found; 4.3 must make it behave per 4.7/4.9 (not-found hint naming `<array-id>[k]`, or exact-ID match). Nit for 4.3: the `refused` early return in `cmd_jobsub` sits between the bug-786 ack comment and the code it describes — move it above the comment.
|
||||
- 4.3: the controller acks `setpend` (`do_set_preason`, job.c ~3869-3880) and `jobrun` (`handle_jobdispatch`, job.c ~2246-2258) with status 0 before doing the work, so those two harness commands can never report not-found; 4.7/5.13 for them depend on a controller change outside this spec's boundary. `jobinfo`'s not-found is `rc == 0` with no row (`do_reply_joblist`), not -ENOENT.
|
||||
- 5.1: Go helpers: `ParseHumanJobIDStrict(s) (uint64, error)` returns sentinel `ErrJobIDSyntax` / `ErrJobIDWidth` (callers trim and split `[...]` first; no whitespace accepted); `MakeElementID(key uint64, k int) uint64`; `IsArrayCapableKey(key)`; `GenerateArrayJobID(c, a, n)` (non-cgo stub returns errNoCGO).
|
||||
- 5.4: handler fixture in `controllers/jobs_handler_test.go` (`newHandlerFixture`, `seedJob`/`seedOrdinaryJob`/`seedArrayElements`/`seedQueue`, `submit`, `controlByID`, `controlByFilter`, `dispatchedIDs`, `submissions`); submit bodies must be client-style JSON maps (marshalled `models.JobSubmitRequest` breaks on zero CustomTime). Handlers are registered without `RequirePermission`; in-handler RBAC/queue/status checks still run.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue