Skip to content
This repository was archived by the owner on Apr 25, 2025. It is now read-only.

Commit fbae5b7

Browse files
author
Firas Qutishat
committed
[FAB-9312] Resolve metalinter warnings
- fix client pkg Change-Id: If486b91ad181c10f6a9b6b9c3d7bfc1046bbb2ad Signed-off-by: Firas Qutishat <firas.qutishat@securekey.com>
1 parent 5e8a2a1 commit fbae5b7

File tree

16 files changed

+424
-266
lines changed

16 files changed

+424
-266
lines changed

pkg/client/channel/api.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,12 @@ type Request struct {
4040

4141
//Response contains response parameters for query and execute an invocation transaction
4242
type Response struct {
43-
Payload []byte
43+
Proposal *fab.TransactionProposal
44+
Responses []*fab.TransactionProposalResponse
4445
TransactionID fab.TransactionID
4546
TxValidationCode pb.TxValidationCode
46-
Proposal *fab.TransactionProposal
47-
// ChaincodeStatus is the status returned by Chaincode
48-
ChaincodeStatus int32
49-
Responses []*fab.TransactionProposalResponse
47+
ChaincodeStatus int32
48+
Payload []byte
5049
}
5150

5251
//WithTargets encapsulates ProposalProcessors to Option

pkg/client/channel/chclient.go

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,12 @@ import (
1515
"github.com/hyperledger/fabric-sdk-go/pkg/client/common/discovery/greylist"
1616
"github.com/hyperledger/fabric-sdk-go/pkg/common/errors/retry"
1717
"github.com/hyperledger/fabric-sdk-go/pkg/common/errors/status"
18-
"github.com/hyperledger/fabric-sdk-go/pkg/common/logging"
1918
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/context"
2019
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab"
2120
contextImpl "github.com/hyperledger/fabric-sdk-go/pkg/context"
2221
"github.com/pkg/errors"
2322
)
2423

25-
var logger = logging.NewLogger("fabsdk/client")
26-
2724
// Client enables access to a channel on a Fabric network.
2825
//
2926
// A channel client instance provides a handler to interact with peers on specified channel.
@@ -133,7 +130,7 @@ func (cc *Client) InvokeHandler(handler invoke.Handler, request Request, options
133130

134131
complete := make(chan bool)
135132
go func() {
136-
invoker.Invoke(
133+
_, _ = invoker.Invoke(
137134
func() (interface{}, error) {
138135
handler.Handle(requestContext, clientContext)
139136
return nil, requestContext.Error

pkg/client/channel/invoke/api.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,12 @@ type Request struct {
3737

3838
//Response contains response parameters for query and execute transaction
3939
type Response struct {
40-
Payload []byte
40+
Proposal *fab.TransactionProposal
41+
Responses []*fab.TransactionProposalResponse
4142
TransactionID fab.TransactionID
4243
TxValidationCode pb.TxValidationCode
43-
Proposal *fab.TransactionProposal
44-
// ChaincodeStatus is the status returned by Chaincode
45-
ChaincodeStatus int32
46-
Responses []*fab.TransactionProposalResponse
44+
ChaincodeStatus int32
45+
Payload []byte
4746
}
4847

4948
//Handler for chaining transaction executions

pkg/client/channel/invoke/txnhandler_test.go

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -188,7 +188,7 @@ func TestResponseValidation(t *testing.T) {
188188
assert.EqualValues(t, int32(status.EndorsementMismatch), s.Code, "expected endorsement mismatch")
189189
}
190190

191-
func TestProposalProcessorHandler(t *testing.T) {
191+
func TestProposalProcessorHandlerError(t *testing.T) {
192192
peer1 := fcmocks.NewMockPeer("p1", "peer1:7051")
193193
peer2 := fcmocks.NewMockPeer("p2", "peer2:7051")
194194
discoveryPeers := []fab.Peer{peer1, peer2}
@@ -204,29 +204,47 @@ func TestProposalProcessorHandler(t *testing.T) {
204204
if requestContext.Error == nil || !strings.Contains(requestContext.Error.Error(), selectionErr.Error()) {
205205
t.Fatal("Expected error: ", selectionErr, ", Received error:", requestContext.Error)
206206
}
207+
}
208+
209+
func TestProposalProcessorHandlerPassDirectly(t *testing.T) {
210+
peer1 := fcmocks.NewMockPeer("p1", "peer1:7051")
211+
peer2 := fcmocks.NewMockPeer("p2", "peer2:7051")
212+
discoveryPeers := []fab.Peer{peer1, peer2}
213+
214+
//Get query handler
215+
handler := NewProposalProcessorHandler()
207216

208-
requestContext = prepareRequestContext(request, Opts{}, t)
217+
request := Request{ChaincodeID: "testCC", Fcn: "invoke", Args: [][]byte{[]byte("query"), []byte("b")}}
218+
// Directly pass in the proposal processors. In this case it should use those directly
219+
requestContext := prepareRequestContext(request, Opts{Targets: []fab.Peer{peer2}}, t)
209220
handler.Handle(requestContext, setupChannelClientContext(nil, nil, discoveryPeers, t))
210221
if requestContext.Error != nil {
211222
t.Fatalf("Got error: %s", requestContext.Error)
212223
}
213-
if len(requestContext.Opts.Targets) != len(discoveryPeers) {
214-
t.Fatalf("Expecting %d proposal processors but got %d", len(discoveryPeers), len(requestContext.Opts.Targets))
224+
if len(requestContext.Opts.Targets) != 1 {
225+
t.Fatalf("Expecting 1 proposal processor but got %d", len(requestContext.Opts.Targets))
215226
}
216-
if requestContext.Opts.Targets[0] != peer1 || requestContext.Opts.Targets[1] != peer2 {
227+
if requestContext.Opts.Targets[0] != peer2 {
217228
t.Fatalf("Didn't get expected peers")
218229
}
230+
}
219231

220-
// Directly pass in the proposal processors. In this case it should use those directly
221-
requestContext = prepareRequestContext(request, Opts{Targets: []fab.Peer{peer2}}, t)
232+
func TestProposalProcessorHandler(t *testing.T) {
233+
peer1 := fcmocks.NewMockPeer("p1", "peer1:7051")
234+
peer2 := fcmocks.NewMockPeer("p2", "peer2:7051")
235+
discoveryPeers := []fab.Peer{peer1, peer2}
236+
237+
handler := NewProposalProcessorHandler()
238+
request := Request{ChaincodeID: "testCC", Fcn: "invoke", Args: [][]byte{[]byte("query"), []byte("b")}}
239+
requestContext := prepareRequestContext(request, Opts{}, t)
222240
handler.Handle(requestContext, setupChannelClientContext(nil, nil, discoveryPeers, t))
223241
if requestContext.Error != nil {
224242
t.Fatalf("Got error: %s", requestContext.Error)
225243
}
226-
if len(requestContext.Opts.Targets) != 1 {
227-
t.Fatalf("Expecting 1 proposal processor but got %d", len(requestContext.Opts.Targets))
244+
if len(requestContext.Opts.Targets) != len(discoveryPeers) {
245+
t.Fatalf("Expecting %d proposal processors but got %d", len(discoveryPeers), len(requestContext.Opts.Targets))
228246
}
229-
if requestContext.Opts.Targets[0] != peer2 {
247+
if requestContext.Opts.Targets[0] != peer1 || requestContext.Opts.Targets[1] != peer2 {
230248
t.Fatalf("Didn't get expected peers")
231249
}
232250

pkg/client/common/discovery/discoveryfilter_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ func TestDiscoveryFilter(t *testing.T) {
3232
t.Fatalf(err.Error())
3333
}
3434

35-
_, config, _, err := config.FromBackend(configBackend)()
35+
_, config1, _, err := config.FromBackend(configBackend)()
3636
if err != nil {
3737
t.Fatalf(err.Error())
3838
}
3939

40-
peerCreator := defPeerCreator{config: config}
41-
discoveryProvider, err := staticdiscovery.New(config, &peerCreator)
40+
peerCreator := defPeerCreator{defPeerConfig: config1}
41+
discoveryProvider, err := staticdiscovery.New(config1, &peerCreator)
4242
if err != nil {
4343
t.Fatalf("Failed to setup discovery provider: %s", err)
4444
}
@@ -70,9 +70,9 @@ func TestDiscoveryFilter(t *testing.T) {
7070
}
7171

7272
type defPeerCreator struct {
73-
config fab.EndpointConfig
73+
defPeerConfig fab.EndpointConfig
7474
}
7575

7676
func (pc *defPeerCreator) CreatePeerFromConfig(peerCfg *fab.NetworkPeer) (fab.Peer, error) {
77-
return peer.New(pc.config, peer.FromPeerConfig(peerCfg))
77+
return peer.New(pc.defPeerConfig, peer.FromPeerConfig(peerCfg))
7878
}

pkg/client/common/discovery/staticdiscovery/staticdiscovery_test.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@ func TestStaticDiscovery(t *testing.T) {
2121
t.Fatalf(err.Error())
2222
}
2323

24-
_, config, _, err := config.FromBackend(configBackend)()
24+
_, config1, _, err := config.FromBackend(configBackend)()
2525
if err != nil {
2626
t.Fatalf(err.Error())
2727
}
2828

29-
peerCreator := defPeerCreator{config: config}
30-
discoveryProvider, err := New(config, &peerCreator)
29+
peerCreator := defPeerCreator{config: config1}
30+
discoveryProvider, err := New(config1, &peerCreator)
3131
if err != nil {
3232
t.Fatalf("Failed to setup discovery provider: %s", err)
3333
}
@@ -53,23 +53,37 @@ func TestStaticDiscovery(t *testing.T) {
5353
t.Fatalf("Expecting %d, got %d peers", expectedNumOfPeeers, len(peers))
5454
}
5555

56+
}
57+
58+
func TestStaticDiscoveryWhenChannelIsEmpty(t *testing.T) {
59+
configBackend, err := config.FromFile("../../../../../test/fixtures/config/config_test.yaml")()
60+
if err != nil {
61+
t.Fatalf(err.Error())
62+
}
63+
64+
_, config1, _, err := config.FromBackend(configBackend)()
65+
if err != nil {
66+
t.Fatalf(err.Error())
67+
}
68+
69+
peerCreator := defPeerCreator{config: config1}
70+
discoveryProvider, _ := New(config1, &peerCreator)
5671
// If channel is empty discovery service will return all configured network peers
57-
discoveryService, err = discoveryProvider.CreateDiscoveryService("")
72+
discoveryService, err := discoveryProvider.CreateDiscoveryService("")
5873
if err != nil {
5974
t.Fatalf("Failed to setup discovery service: %s", err)
6075
}
6176

62-
peers, err = discoveryService.GetPeers()
77+
peers, err := discoveryService.GetPeers()
6378
if err != nil {
6479
t.Fatalf("Failed to get peers from discovery service: %s", err)
6580
}
6681

6782
// Two peers are configured at network level
68-
expectedNumOfPeeers = 2
83+
expectedNumOfPeeers := 2
6984
if len(peers) != expectedNumOfPeeers {
7085
t.Fatalf("Expecting %d, got %d peers", expectedNumOfPeeers, len(peers))
7186
}
72-
7387
}
7488

7589
type defPeerCreator struct {

pkg/client/common/selection/dynamicselection/ccpolicyprovider_test.go

Lines changed: 34 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,40 @@ func TestCCPolicyProvider(t *testing.T) {
2929
t.Fatal("Failed to create context")
3030
}
3131

32+
// All good
33+
ccPolicyProvider, err := newCCPolicyProvider(context, "mychannel", "User1", "Org1")
34+
if err != nil {
35+
t.Fatalf("Failed to setup cc policy provider: %s", err)
36+
}
37+
38+
// Empty chaincode ID
39+
_, err = ccPolicyProvider.GetChaincodePolicy("")
40+
if err == nil {
41+
t.Fatalf("Should have failed to retrieve chaincode policy for empty chaincode id")
42+
}
43+
44+
// Non-existent chaincode ID
45+
_, err = ccPolicyProvider.GetChaincodePolicy("abc")
46+
if err == nil {
47+
t.Fatalf("Should have failed to retrieve non-existent cc policy")
48+
}
49+
50+
}
51+
52+
func TestCCPolicyProviderNegative(t *testing.T) {
53+
// Create SDK setup for channel client with dynamic selection
54+
sdk, err := fabsdk.New(config.FromFile("../../../../../test/fixtures/config/config_test.yaml"))
55+
if err != nil {
56+
t.Fatalf("Failed to create new SDK: %s", err)
57+
}
58+
defer sdk.Close()
59+
60+
clientContext := sdk.Context(fabsdk.WithUser("User1"), fabsdk.WithOrg("Org1"))
61+
62+
context, err := clientContext()
63+
if err != nil {
64+
t.Fatal("Failed to create context")
65+
}
3266
// Nil sdk
3367
_, err = newCCPolicyProvider(nil, "mychannel", "User1", "Org1")
3468
if err == nil {
@@ -59,23 +93,6 @@ func TestCCPolicyProvider(t *testing.T) {
5993
t.Fatalf("Should have failed for invalid channel name")
6094
}
6195

62-
// All good
63-
ccPolicyProvider, err := newCCPolicyProvider(context, "mychannel", "User1", "Org1")
64-
if err != nil {
65-
t.Fatalf("Failed to setup cc policy provider: %s", err)
66-
}
67-
68-
// Empty chaincode ID
69-
_, err = ccPolicyProvider.GetChaincodePolicy("")
70-
if err == nil {
71-
t.Fatalf("Should have failed to retrieve chaincode policy for empty chaincode id")
72-
}
73-
74-
// Non-existent chaincode ID
75-
_, err = ccPolicyProvider.GetChaincodePolicy("abc")
76-
if err == nil {
77-
t.Fatalf("Should have failed to retrieve non-existent cc policy")
78-
}
7996
}
8097

8198
func TestBadClient(t *testing.T) {

pkg/client/common/selection/dynamicselection/pgresolver/pgresolverimpl.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -189,14 +189,7 @@ func (c *signaturePolicyCompiler) compile(sigPolicy *common.SignaturePolicy, ide
189189

190190
switch t := sigPolicy.Type.(type) {
191191
case *common.SignaturePolicy_SignedBy:
192-
return func(peerRetriever MSPPeerRetriever) (GroupOfGroups, error) {
193-
mspID, err := mspPrincipalToString(identities[t.SignedBy])
194-
if err != nil {
195-
return nil, errors.WithMessage(err, "error getting MSP ID from MSP principal")
196-
}
197-
return NewGroupOfGroups([]Group{NewMSPPeerGroup(mspID, peerRetriever)}), nil
198-
}, nil
199-
192+
return signaturePolicySignedBy(t, identities)
200193
case *common.SignaturePolicy_NOutOf_:
201194
nOutOfPolicy := t.NOutOf
202195
var pfuncs []GroupRetriever
@@ -231,6 +224,16 @@ func (c *signaturePolicyCompiler) compile(sigPolicy *common.SignaturePolicy, ide
231224
}
232225
}
233226

227+
func signaturePolicySignedBy(t *common.SignaturePolicy_SignedBy, identities []*mb.MSPPrincipal) (GroupRetriever, error) {
228+
return func(peerRetriever MSPPeerRetriever) (GroupOfGroups, error) {
229+
mspID, err := mspPrincipalToString(identities[t.SignedBy])
230+
if err != nil {
231+
return nil, errors.WithMessage(err, "error getting MSP ID from MSP principal")
232+
}
233+
return NewGroupOfGroups([]Group{NewMSPPeerGroup(mspID, peerRetriever)}), nil
234+
}, nil
235+
}
236+
234237
func mspPrincipalToString(principal *mb.MSPPrincipal) (string, error) {
235238
switch principal.PrincipalClassification {
236239
case mb.MSPPrincipal_ROLE:

pkg/client/common/selection/staticselection/staticselection_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ func TestStaticSelection(t *testing.T) {
2929
t.Fatalf(err.Error())
3030
}
3131

32-
_, config, _, err := config.FromBackend(configBackend)()
32+
configProv := config.FromBackend(configBackend)
33+
34+
_, config, _, err := configProv()
3335
if err != nil {
3436
t.Fatalf(err.Error())
3537
}

pkg/client/event/event.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,12 @@ SPDX-License-Identifier: Apache-2.0
1515
package event
1616

1717
import (
18-
"github.com/hyperledger/fabric-sdk-go/pkg/common/logging"
1918
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/context"
2019
"github.com/hyperledger/fabric-sdk-go/pkg/common/providers/fab"
2120
"github.com/hyperledger/fabric-sdk-go/pkg/fab/events/client"
2221
"github.com/pkg/errors"
2322
)
2423

25-
var logger = logging.NewLogger("fabsdk/client")
26-
2724
// Client enables access to a channel events on a Fabric network.
2825
type Client struct {
2926
eventService fab.EventService
@@ -42,8 +39,8 @@ func New(channelProvider context.ChannelProvider, opts ...ClientOption) (*Client
4239
eventClient := Client{}
4340

4441
for _, param := range opts {
45-
err := param(&eventClient)
46-
if err != nil {
42+
err1 := param(&eventClient)
43+
if err1 != nil {
4744
return nil, errors.WithMessage(err, "option failed")
4845
}
4946
}

0 commit comments

Comments
 (0)