From ea9086fd8be24a77ff163ae7b2b078f92d78bbd3 Mon Sep 17 00:00:00 2001 From: Ken Hibino Date: Wed, 19 May 2021 05:59:30 -0700 Subject: [PATCH] Update Inspector.List*Task methods to return ErrQueueNotFound --- inspector.go | 30 ++++++++++++++++++++---------- inspector_test.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+), 10 deletions(-) diff --git a/inspector.go b/inspector.go index 66bc575..2c72bda 100644 --- a/inspector.go +++ b/inspector.go @@ -359,8 +359,10 @@ func (i *Inspector) ListPendingTasks(qname string, opts ...ListOption) ([]*TaskI opt := composeListOptions(opts...) pgn := rdb.Pagination{Size: opt.pageSize, Page: opt.pageNum - 1} msgs, err := i.rdb.ListPending(qname, pgn) - if err != nil { - // TODO: Handle ErrQueueNotFound + switch { + case errors.IsQueueNotFound(err): + return nil, fmt.Errorf("asynq: %w", ErrQueueNotFound) + case err != nil: return nil, fmt.Errorf("asynq: %v", err) } now := time.Now() @@ -385,8 +387,10 @@ func (i *Inspector) ListActiveTasks(qname string, opts ...ListOption) ([]*TaskIn opt := composeListOptions(opts...) pgn := rdb.Pagination{Size: opt.pageSize, Page: opt.pageNum - 1} msgs, err := i.rdb.ListActive(qname, pgn) - if err != nil { - // TODO: Handle QueueNotFound + switch { + case errors.IsQueueNotFound(err): + return nil, fmt.Errorf("asynq: %w", ErrQueueNotFound) + case err != nil: return nil, fmt.Errorf("asynq: %v", err) } var tasks []*TaskInfo @@ -410,8 +414,10 @@ func (i *Inspector) ListScheduledTasks(qname string, opts ...ListOption) ([]*Tas opt := composeListOptions(opts...) pgn := rdb.Pagination{Size: opt.pageSize, Page: opt.pageNum - 1} zs, err := i.rdb.ListScheduled(qname, pgn) - if err != nil { - // TODO: handle ErrQueueNotFound + switch { + case errors.IsQueueNotFound(err): + return nil, fmt.Errorf("asynq: %w", ErrQueueNotFound) + case err != nil: return nil, fmt.Errorf("asynq: %v", err) } var tasks []*TaskInfo @@ -436,8 +442,10 @@ func (i *Inspector) ListRetryTasks(qname string, opts ...ListOption) ([]*TaskInf opt := composeListOptions(opts...) pgn := rdb.Pagination{Size: opt.pageSize, Page: opt.pageNum - 1} zs, err := i.rdb.ListRetry(qname, pgn) - if err != nil { - // TODO: handle ErrQueueNotFound + switch { + case errors.IsQueueNotFound(err): + return nil, fmt.Errorf("asynq: %w", ErrQueueNotFound) + case err != nil: return nil, fmt.Errorf("asynq: %v", err) } var tasks []*TaskInfo @@ -462,8 +470,10 @@ func (i *Inspector) ListArchivedTasks(qname string, opts ...ListOption) ([]*Task opt := composeListOptions(opts...) pgn := rdb.Pagination{Size: opt.pageSize, Page: opt.pageNum - 1} zs, err := i.rdb.ListArchived(qname, pgn) - if err != nil { - // TODO: handle ErrQueueNotFound + switch { + case errors.IsQueueNotFound(err): + return nil, fmt.Errorf("asynq: %w", ErrQueueNotFound) + case err != nil: return nil, fmt.Errorf("asynq: %v", err) } var tasks []*TaskInfo diff --git a/inspector_test.go b/inspector_test.go index 1a02928..3868df7 100644 --- a/inspector_test.go +++ b/inspector_test.go @@ -820,6 +820,43 @@ func TestInspectorListPagination(t *testing.T) { } } +func TestInspectorListTasksQueueNotFoundError(t *testing.T) { + r := setup(t) + defer r.Close() + + inspector := NewInspector(getRedisConnOpt(t)) + + tests := []struct { + qname string + wantErr error + }{ + { + qname: "nonexistent", + wantErr: ErrQueueNotFound, + }, + } + + for _, tc := range tests { + h.FlushDB(t, r) + + if _, err := inspector.ListActiveTasks(tc.qname); !errors.Is(err, tc.wantErr) { + t.Errorf("ListActiveTasks(%q) returned error %v, want %v", tc.qname, err, tc.wantErr) + } + if _, err := inspector.ListPendingTasks(tc.qname); !errors.Is(err, tc.wantErr) { + t.Errorf("ListPendingTasks(%q) returned error %v, want %v", tc.qname, err, tc.wantErr) + } + if _, err := inspector.ListScheduledTasks(tc.qname); !errors.Is(err, tc.wantErr) { + t.Errorf("ListScheduledTasks(%q) returned error %v, want %v", tc.qname, err, tc.wantErr) + } + if _, err := inspector.ListRetryTasks(tc.qname); !errors.Is(err, tc.wantErr) { + t.Errorf("ListRetryTasks(%q) returned error %v, want %v", tc.qname, err, tc.wantErr) + } + if _, err := inspector.ListArchivedTasks(tc.qname); !errors.Is(err, tc.wantErr) { + t.Errorf("ListArchivedTasks(%q) returned error %v, want %v", tc.qname, err, tc.wantErr) + } + } +} + func TestInspectorDeleteAllPendingTasks(t *testing.T) { r := setup(t) defer r.Close()