Skip to content
This repository has been archived by the owner on Mar 9, 2022. It is now read-only.

Commit

Permalink
Merge pull request #1384 from jterry75/fix_grpc_err
Browse files Browse the repository at this point in the history
Fix store error serialization to gRPC status codes
  • Loading branch information
mikebrow authored Feb 6, 2020
2 parents c0294eb + a8cc66b commit c955404
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 3 deletions.
12 changes: 9 additions & 3 deletions pkg/store/errors.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,18 @@ limitations under the License.

package store

import "errors"
import "github.com/containerd/containerd/errdefs"

var (
// ErrAlreadyExist is the error returned when data added in the store
// already exists.
ErrAlreadyExist = errors.New("already exists")
//
// This error has been DEPRECATED and will be removed in 1.5. Please switch
// usage directly to `errdefs.ErrAlreadyExists`.
ErrAlreadyExist = errdefs.ErrAlreadyExists
// ErrNotExist is the error returned when data is not in the store.
ErrNotExist = errors.New("does not exist")
//
// This error has been DEPRECATED and will be removed in 1.5. Please switch
// usage directly to `errdefs.ErrNotFound`.
ErrNotExist = errdefs.ErrNotFound
)
48 changes: 48 additions & 0 deletions pkg/store/errors_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
Copyright 2020 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/

package store

import (
"testing"

"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"

"github.com/containerd/containerd/errdefs"
)

func TestStoreErrAlreadyExistGRPCStatus(t *testing.T) {
err := errdefs.ToGRPC(ErrAlreadyExist)
s, ok := status.FromError(err)
if !ok {
t.Fatalf("failed to convert err: %v to status: %d", err, codes.AlreadyExists)
}
if s.Code() != codes.AlreadyExists {
t.Fatalf("expected code: %d got: %d", codes.AlreadyExists, s.Code())
}
}

func TestStoreErrNotExistGRPCStatus(t *testing.T) {
err := errdefs.ToGRPC(ErrNotExist)
s, ok := status.FromError(err)
if !ok {
t.Fatalf("failed to convert err: %v to status: %d", err, codes.NotFound)
}
if s.Code() != codes.NotFound {
t.Fatalf("expected code: %d got: %d", codes.NotFound, s.Code())
}
}

0 comments on commit c955404

Please sign in to comment.