mirror of
https://github.com/rclone/rclone.git
synced 2025-04-19 01:59:00 +08:00
add jobs stats
This commit is contained in:
parent
894ef3b375
commit
f0d98448b7
@ -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
|
||||
}
|
||||
|
@ -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)
|
||||
|
Loading…
x
Reference in New Issue
Block a user