add jobs stats

This commit is contained in:
n4n5 2025-04-10 23:11:25 +02:00
parent 894ef3b375
commit f0d98448b7
No known key found for this signature in database
GPG Key ID: 79414EADC6D4B457
2 changed files with 20 additions and 0 deletions

View File

@ -184,6 +184,21 @@ func (jobs *Jobs) IDs() (IDs []int64) {
return IDs
}
func (jobs *Jobs) Stats() (running []int64, finished []int64) {
jobs.mu.RLock()
defer jobs.mu.RUnlock()
running = []int64{}
finished = []int64{}
for job_id := range jobs.jobs {
if jobs.jobs[job_id].Finished {
finished = append(finished, job_id)
} else {
running = append(running, job_id)
}
}
return running, finished
}
// Get a job with a given ID or nil if it doesn't exist
func (jobs *Jobs) Get(ID int64) *Job {
jobs.mu.RLock()
@ -412,6 +427,9 @@ Results:
func rcJobList(ctx context.Context, in rc.Params) (out rc.Params, err error) {
out = make(rc.Params)
out["jobids"] = running.IDs()
current, finished := running.Stats()
out["running"] = current
out["finished"] = finished
out["executeId"] = executeID
return out, nil
}

View File

@ -377,6 +377,8 @@ func TestRcJobList(t *testing.T) {
require.NoError(t, err)
require.NotNil(t, out1)
assert.Equal(t, []int64{1}, out1["jobids"], "should have job listed")
assert.Equal(t, 1, out1["running"], "should have running job")
assert.Equal(t, 0, out1["finished"], "should not have finished job")
_, _, err = NewJob(ctx, longFn, rc.Params{"_async": true})
assert.NoError(t, err)