Fix lint issues
Cleanup server test Signed-off-by: Derek McGowan <derek@mcg.dev>
This commit is contained in:
parent
9858689671
commit
f7a2e09ef8
20
.github/workflows/ci.yml
vendored
20
.github/workflows/ci.yml
vendored
@ -6,6 +6,10 @@ on:
|
|||||||
pull_request:
|
pull_request:
|
||||||
branches: [ main ]
|
branches: [ main ]
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
contents: read
|
||||||
|
pull-requests: read
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
#
|
#
|
||||||
# golangci-lint
|
# golangci-lint
|
||||||
@ -18,19 +22,19 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
go-version: [1.17]
|
go-version: [1.17]
|
||||||
os: [ubuntu-18.04, macos-10.15, windows-2019]
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/setup-go@v2
|
|
||||||
with:
|
|
||||||
go-version: ${{ matrix.go-version }}
|
|
||||||
|
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
- uses: golangci/golangci-lint-action@v2
|
- name: golangci-lint
|
||||||
|
uses: golangci/golangci-lint-action@v2
|
||||||
with:
|
with:
|
||||||
version: v1.42.0
|
version: v1.43.0
|
||||||
args: --timeout=5m
|
args: --timeout=5m
|
||||||
skip-go-installation: true
|
only-new-issues: true
|
||||||
|
- name: golangci-lint errors
|
||||||
|
run: golangci-lint run
|
||||||
|
if: ${{ failure() }}
|
||||||
|
|
||||||
#
|
#
|
||||||
# Project checks
|
# Project checks
|
||||||
|
54
.golangci.yml
Normal file
54
.golangci.yml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
linters:
|
||||||
|
enable:
|
||||||
|
- structcheck
|
||||||
|
- varcheck
|
||||||
|
- staticcheck
|
||||||
|
- unconvert
|
||||||
|
- gofmt
|
||||||
|
- goimports
|
||||||
|
- revive
|
||||||
|
- ineffassign
|
||||||
|
- vet
|
||||||
|
- unused
|
||||||
|
- misspell
|
||||||
|
disable:
|
||||||
|
- errcheck
|
||||||
|
|
||||||
|
linters-settings:
|
||||||
|
revive:
|
||||||
|
ignore-generated-headers: true
|
||||||
|
rules:
|
||||||
|
- name: blank-imports
|
||||||
|
- name: context-as-argument
|
||||||
|
- name: context-keys-type
|
||||||
|
- name: dot-imports
|
||||||
|
- name: error-return
|
||||||
|
- name: error-strings
|
||||||
|
- name: error-naming
|
||||||
|
- name: exported
|
||||||
|
- name: if-return
|
||||||
|
- name: increment-decrement
|
||||||
|
- name: var-naming
|
||||||
|
arguments: [["UID", "GID"], []]
|
||||||
|
- name: var-declaration
|
||||||
|
- name: package-comments
|
||||||
|
- name: range
|
||||||
|
- name: receiver-naming
|
||||||
|
- name: time-naming
|
||||||
|
- name: unexported-return
|
||||||
|
- name: indent-error-flow
|
||||||
|
- name: errorf
|
||||||
|
- name: empty-block
|
||||||
|
- name: superfluous-else
|
||||||
|
- name: unused-parameter
|
||||||
|
- name: unreachable-code
|
||||||
|
- name: redefines-builtin-id
|
||||||
|
|
||||||
|
issues:
|
||||||
|
include:
|
||||||
|
- EXC0002
|
||||||
|
|
||||||
|
run:
|
||||||
|
timeout: 8m
|
||||||
|
skip-dirs:
|
||||||
|
- example
|
@ -123,7 +123,7 @@ func (c *Client) Call(ctx context.Context, service, method string, req, resp int
|
|||||||
}
|
}
|
||||||
|
|
||||||
if dl, ok := ctx.Deadline(); ok {
|
if dl, ok := ctx.Deadline(); ok {
|
||||||
creq.TimeoutNano = dl.Sub(time.Now()).Nanoseconds()
|
creq.TimeoutNano = time.Until(dl).Nanoseconds()
|
||||||
}
|
}
|
||||||
|
|
||||||
info := &UnaryClientInfo{
|
info := &UnaryClientInfo{
|
||||||
|
@ -62,7 +62,7 @@ func TestUserOnCloseWait(t *testing.T) {
|
|||||||
t.Fatalf("expected error %v, but got %v", context.DeadlineExceeded, err)
|
t.Fatalf("expected error %v, but got %v", context.DeadlineExceeded, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
_ = <-dataCh
|
<-dataCh
|
||||||
|
|
||||||
if err := client.UserOnCloseWait(ctx); err != nil {
|
if err := client.UserOnCloseWait(ctx); err != nil {
|
||||||
t.Fatalf("expected error nil , but got %v", err)
|
t.Fatalf("expected error nil , but got %v", err)
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
//go:build !linux
|
||||||
// +build !linux
|
// +build !linux
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -45,6 +45,6 @@ func (fn handshakerFunc) Handshake(ctx context.Context, conn net.Conn) (net.Conn
|
|||||||
return fn(ctx, conn)
|
return fn(ctx, conn)
|
||||||
}
|
}
|
||||||
|
|
||||||
func noopHandshake(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error) {
|
func noopHandshake(_ context.Context, conn net.Conn) (net.Conn, interface{}, error) {
|
||||||
return conn, nil, nil
|
return conn, nil, nil
|
||||||
}
|
}
|
||||||
|
@ -41,7 +41,7 @@ type UnaryServerInterceptor func(context.Context, Unmarshaler, *UnaryServerInfo,
|
|||||||
// UnaryClientInterceptor specifies the interceptor function for client request/response
|
// UnaryClientInterceptor specifies the interceptor function for client request/response
|
||||||
type UnaryClientInterceptor func(context.Context, *Request, *Response, *UnaryClientInfo, Invoker) error
|
type UnaryClientInterceptor func(context.Context, *Request, *Response, *UnaryClientInfo, Invoker) error
|
||||||
|
|
||||||
func defaultServerInterceptor(ctx context.Context, unmarshal Unmarshaler, info *UnaryServerInfo, method Method) (interface{}, error) {
|
func defaultServerInterceptor(ctx context.Context, unmarshal Unmarshaler, _ *UnaryServerInfo, method Method) (interface{}, error) {
|
||||||
return method(ctx, unmarshal)
|
return method(ctx, unmarshal)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,16 +123,23 @@ func TestServer(t *testing.T) {
|
|||||||
go server.Serve(ctx, listener)
|
go server.Serve(ctx, listener)
|
||||||
defer server.Shutdown(ctx)
|
defer server.Shutdown(ctx)
|
||||||
|
|
||||||
const calls = 2
|
testCases := []string{"bar", "baz"}
|
||||||
results := make(chan callResult, 2)
|
results := make(chan callResult, len(testCases))
|
||||||
go roundTrip(ctx, t, tclient, "bar", results)
|
for _, tc := range testCases {
|
||||||
go roundTrip(ctx, t, tclient, "baz", results)
|
go func(expected string) {
|
||||||
|
results <- roundTrip(ctx, tclient, expected)
|
||||||
|
}(tc)
|
||||||
|
}
|
||||||
|
|
||||||
for i := 0; i < calls; i++ {
|
for i := 0; i < len(testCases); {
|
||||||
result := <-results
|
result := <-results
|
||||||
if !reflect.DeepEqual(result.received, result.expected) {
|
if result.err != nil {
|
||||||
t.Fatalf("unexpected response: %+#v != %+#v", result.received, result.expected)
|
t.Fatalf("(%s): %v", result.name, result.err)
|
||||||
}
|
}
|
||||||
|
if !reflect.DeepEqual(result.received, result.expected) {
|
||||||
|
t.Fatalf("(%s): unexpected response: %+#v != %+#v", result.name, result.received, result.expected)
|
||||||
|
}
|
||||||
|
i++
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -483,29 +490,34 @@ func checkServerShutdown(t *testing.T, server *Server) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
type callResult struct {
|
type callResult struct {
|
||||||
|
name string
|
||||||
|
err error
|
||||||
input *testPayload
|
input *testPayload
|
||||||
expected *testPayload
|
expected *testPayload
|
||||||
received *testPayload
|
received *testPayload
|
||||||
}
|
}
|
||||||
|
|
||||||
func roundTrip(ctx context.Context, t *testing.T, client *testingClient, value string, results chan callResult) {
|
func roundTrip(ctx context.Context, client *testingClient, name string) callResult {
|
||||||
t.Helper()
|
|
||||||
var (
|
var (
|
||||||
tp = &testPayload{
|
tp = &testPayload{
|
||||||
Foo: "bar",
|
Foo: name,
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
ctx = WithMetadata(ctx, MD{"foo": []string{"bar"}})
|
ctx = WithMetadata(ctx, MD{"foo": []string{name}})
|
||||||
|
|
||||||
resp, err := client.Test(ctx, tp)
|
resp, err := client.Test(ctx, tp)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
return callResult{
|
||||||
|
name: name,
|
||||||
|
err: err,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
results <- callResult{
|
return callResult{
|
||||||
|
name: name,
|
||||||
input: tp,
|
input: tp,
|
||||||
expected: &testPayload{Foo: strings.Repeat(tp.Foo, 2), Metadata: "bar"},
|
expected: &testPayload{Foo: strings.Repeat(tp.Foo, 2), Metadata: name},
|
||||||
received: resp,
|
received: resp,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
2
types.go
2
types.go
@ -51,8 +51,6 @@ func (r *StringList) Reset() { *r = StringList{} }
|
|||||||
func (r *StringList) String() string { return fmt.Sprintf("%+#v", r) }
|
func (r *StringList) String() string { return fmt.Sprintf("%+#v", r) }
|
||||||
func (r *StringList) ProtoMessage() {}
|
func (r *StringList) ProtoMessage() {}
|
||||||
|
|
||||||
func makeStringList(item ...string) StringList { return StringList{List: item} }
|
|
||||||
|
|
||||||
type KeyValue struct {
|
type KeyValue struct {
|
||||||
Key string `protobuf:"bytes,1,opt,name=key,proto3"`
|
Key string `protobuf:"bytes,1,opt,name=key,proto3"`
|
||||||
Value string `protobuf:"bytes,2,opt,name=value,proto3"`
|
Value string `protobuf:"bytes,2,opt,name=value,proto3"`
|
||||||
|
@ -29,7 +29,7 @@ import (
|
|||||||
|
|
||||||
type UnixCredentialsFunc func(*unix.Ucred) error
|
type UnixCredentialsFunc func(*unix.Ucred) error
|
||||||
|
|
||||||
func (fn UnixCredentialsFunc) Handshake(ctx context.Context, conn net.Conn) (net.Conn, interface{}, error) {
|
func (fn UnixCredentialsFunc) Handshake(_ context.Context, conn net.Conn) (net.Conn, interface{}, error) {
|
||||||
uc, err := requireUnixSocket(conn)
|
uc, err := requireUnixSocket(conn)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: require unix socket: %w", err)
|
return nil, nil, fmt.Errorf("ttrpc.UnixCredentialsFunc: require unix socket: %w", err)
|
||||||
@ -88,10 +88,6 @@ func UnixSocketRequireSameUser() UnixCredentialsFunc {
|
|||||||
return UnixSocketRequireUidGid(euid, egid)
|
return UnixSocketRequireUidGid(euid, egid)
|
||||||
}
|
}
|
||||||
|
|
||||||
func requireRoot(ucred *unix.Ucred) error {
|
|
||||||
return requireUidGid(ucred, 0, 0)
|
|
||||||
}
|
|
||||||
|
|
||||||
func requireUidGid(ucred *unix.Ucred, uid, gid int) error {
|
func requireUidGid(ucred *unix.Ucred, uid, gid int) error {
|
||||||
if (uid != -1 && uint32(uid) != ucred.Uid) || (gid != -1 && uint32(gid) != ucred.Gid) {
|
if (uid != -1 && uint32(uid) != ucred.Uid) || (gid != -1 && uint32(gid) != ucred.Gid) {
|
||||||
return fmt.Errorf("ttrpc: invalid credentials: %v", syscall.EPERM)
|
return fmt.Errorf("ttrpc: invalid credentials: %v", syscall.EPERM)
|
||||||
|
Loading…
Reference in New Issue
Block a user