mirror of
https://github.com/genuinetools/reg.git
synced 2024-08-21 14:20:23 -04:00
136 lines
3.3 KiB
Go
136 lines
3.3 KiB
Go
/*
|
|
*
|
|
* 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()
|
|
}
|