Skip to content

Commit 3dac045

Browse files
wlahtisykesm
authored andcommitted
Return InvalidArgument grpc code on err setting level
FAB-12650 #done Change-Id: I5889cfdf62d889f4a3829c48305db65892bc0d21 Signed-off-by: Will Lahti <wtlahti@us.ibm.com>
1 parent 808bac5 commit 3dac045

File tree

2 files changed

+48
-11
lines changed

2 files changed

+48
-11
lines changed

core/admin/admin.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import (
1616
"github.com/hyperledger/fabric/protos/common"
1717
pb "github.com/hyperledger/fabric/protos/peer"
1818
"github.com/pkg/errors"
19+
"google.golang.org/grpc/codes"
20+
"google.golang.org/grpc/status"
1921
)
2022

2123
var logger = flogging.MustGetLogger("server")
@@ -95,11 +97,12 @@ func (s *ServerAdmin) SetModuleLogLevel(ctx context.Context, env *common.Envelop
9597
spec := fmt.Sprintf("%s:%s=%s", flogging.Global.Spec(), request.LogModule, request.LogLevel)
9698
err = flogging.Global.ActivateSpec(spec)
9799
if err != nil {
100+
err = status.Errorf(codes.InvalidArgument, "error setting log spec to '%s': %s", spec, err.Error())
98101
return nil, err
99102
}
100103

101104
logResponse := &pb.LogLevelResponse{LogModule: request.LogModule, LogLevel: strings.ToUpper(request.LogLevel)}
102-
return logResponse, err
105+
return logResponse, nil
103106
}
104107

105108
func (s *ServerAdmin) RevertLogLevels(ctx context.Context, env *common.Envelope) (*empty.Empty, error) {

core/admin/admin_test.go

Lines changed: 44 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ package admin
88

99
import (
1010
"context"
11+
"strings"
1112
"testing"
1213

1314
"github.com/hyperledger/fabric/common/flogging"
@@ -121,16 +122,47 @@ func TestLoggingCalls(t *testing.T) {
121122
assert.Nil(t, err, "Error should have been nil")
122123
}
123124

124-
for _, llr := range []*pb.LogLevelRequest{{LogModule: "test", LogLevel: "debug"}, nil} {
125-
mv.On("validate").Return(wrapLogLevelRequest(llr), nil).Once()
125+
type levelTestCase struct {
126+
req *pb.LogLevelRequest
127+
expectedErr string
128+
}
129+
130+
levelTests := []levelTestCase{
131+
{
132+
req: &pb.LogLevelRequest{
133+
LogModule: "test",
134+
LogLevel: "borken",
135+
},
136+
expectedErr: "rpc error: code = InvalidArgument desc = error setting log spec to 'info:test=borken': invalid logging specification 'info:test=borken': bad segment 'test=borken'",
137+
},
138+
{
139+
req: &pb.LogLevelRequest{
140+
LogModule: "test",
141+
LogLevel: "debug",
142+
},
143+
},
144+
{
145+
req: nil,
146+
},
147+
}
148+
149+
for _, tc := range levelTests {
150+
mv.On("validate").Return(wrapLogLevelRequest(tc.req), nil).Once()
126151
logResponse, err := adminServer.SetModuleLogLevel(context.Background(), nil)
127-
if llr == nil {
152+
153+
if tc.req == nil {
128154
assert.Nil(t, logResponse)
129155
assert.Equal(t, "request is nil", err.Error())
130156
continue
131157
}
158+
159+
if tc.expectedErr != "" {
160+
assert.Equal(t, tc.expectedErr, err.Error())
161+
continue
162+
}
163+
132164
assert.NotNil(t, logResponse, "logResponse should have been set")
133-
assert.Equal(t, "DEBUG", logResponse.LogLevel, "logger level should have been set to debug")
165+
assert.Equal(t, tc.req.LogLevel, strings.ToLower(logResponse.LogLevel))
134166
assert.Nil(t, err, "Error should have been nil")
135167
}
136168

@@ -148,32 +180,34 @@ func TestLoggingCalls(t *testing.T) {
148180
_, err = adminServer.GetLogSpec(context.Background(), nil)
149181
assert.Nil(t, err, "Error should have been nil")
150182

151-
type testCase struct {
183+
type specTestCase struct {
152184
req *pb.LogSpecRequest
153185
expectedErr string
154186
}
155187

156-
testCases := []testCase{
188+
specTests := []specTestCase{
189+
{
190+
req: nil,
191+
},
157192
{
158193
req: &pb.LogSpecRequest{LogSpec: "info"},
159194
},
160195
{
161196
req: &pb.LogSpecRequest{LogSpec: "borken"},
162197
expectedErr: "invalid logging specification 'borken': bad segment 'borken'",
163198
},
164-
{
165-
req: nil,
166-
},
167199
}
168200

169-
for _, tc := range testCases {
201+
for _, tc := range specTests {
170202
mv.On("validate").Return(wrapLogSpecRequest(tc.req), nil).Once()
171203
resp, err := adminServer.SetLogSpec(context.Background(), nil)
204+
172205
if tc.req == nil {
173206
assert.Nil(t, resp)
174207
assert.Equal(t, "request is nil", err.Error())
175208
continue
176209
}
210+
177211
assert.Nil(t, err, "Error should have been nil")
178212
assert.Equal(t, tc.expectedErr, resp.Error)
179213

0 commit comments

Comments
 (0)