| /* |
| * |
| * Copyright 2017 gRPC 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 primitives_test |
| |
| import ( |
| "strconv" |
| "testing" |
| |
| "google.golang.org/grpc/codes" |
| ) |
| |
| type codeBench uint32 |
| |
| const ( |
| OK codeBench = iota |
| Canceled |
| Unknown |
| InvalidArgument |
| DeadlineExceeded |
| NotFound |
| AlreadyExists |
| PermissionDenied |
| ResourceExhausted |
| FailedPrecondition |
| Aborted |
| OutOfRange |
| Unimplemented |
| Internal |
| Unavailable |
| DataLoss |
| Unauthenticated |
| ) |
| |
| // The following String() function was generated by stringer. |
| const _Code_name = "OKCanceledUnknownInvalidArgumentDeadlineExceededNotFoundAlreadyExistsPermissionDeniedResourceExhaustedFailedPreconditionAbortedOutOfRangeUnimplementedInternalUnavailableDataLossUnauthenticated" |
| |
| var _Code_index = [...]uint8{0, 2, 10, 17, 32, 48, 56, 69, 85, 102, 120, 127, 137, 150, 158, 169, 177, 192} |
| |
| func (i codeBench) String() string { |
| if i >= codeBench(len(_Code_index)-1) { |
| return "Code(" + strconv.FormatInt(int64(i), 10) + ")" |
| } |
| return _Code_name[_Code_index[i]:_Code_index[i+1]] |
| } |
| |
| var nameMap = map[codeBench]string{ |
| OK: "OK", |
| Canceled: "Canceled", |
| Unknown: "Unknown", |
| InvalidArgument: "InvalidArgument", |
| DeadlineExceeded: "DeadlineExceeded", |
| NotFound: "NotFound", |
| AlreadyExists: "AlreadyExists", |
| PermissionDenied: "PermissionDenied", |
| ResourceExhausted: "ResourceExhausted", |
| FailedPrecondition: "FailedPrecondition", |
| Aborted: "Aborted", |
| OutOfRange: "OutOfRange", |
| Unimplemented: "Unimplemented", |
| Internal: "Internal", |
| Unavailable: "Unavailable", |
| DataLoss: "DataLoss", |
| Unauthenticated: "Unauthenticated", |
| } |
| |
| func (i codeBench) StringUsingMap() string { |
| if s, ok := nameMap[i]; ok { |
| return s |
| } |
| return "Code(" + strconv.FormatInt(int64(i), 10) + ")" |
| } |
| |
| func BenchmarkCodeStringStringer(b *testing.B) { |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| c := codeBench(uint32(i % 17)) |
| _ = c.String() |
| } |
| b.StopTimer() |
| } |
| |
| func BenchmarkCodeStringMap(b *testing.B) { |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| c := codeBench(uint32(i % 17)) |
| _ = c.StringUsingMap() |
| } |
| b.StopTimer() |
| } |
| |
| // codes.Code.String() does a switch. |
| func BenchmarkCodeStringSwitch(b *testing.B) { |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| c := codes.Code(uint32(i % 17)) |
| _ = c.String() |
| } |
| b.StopTimer() |
| } |
| |
| // Testing all codes (0<=c<=16) and also one overflow (17). |
| func BenchmarkCodeStringStringerWithOverflow(b *testing.B) { |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| c := codeBench(uint32(i % 18)) |
| _ = c.String() |
| } |
| b.StopTimer() |
| } |
| |
| // Testing all codes (0<=c<=16) and also one overflow (17). |
| func BenchmarkCodeStringSwitchWithOverflow(b *testing.B) { |
| b.ResetTimer() |
| for i := 0; i < b.N; i++ { |
| c := codes.Code(uint32(i % 18)) |
| _ = c.String() |
| } |
| b.StopTimer() |
| } |