@@ -16,7 +16,8 @@ import (
1616
1717 "github.com/hyperledger/fabric-sdk-go/pkg/client/channel/invoke"
1818 txnmocks "github.com/hyperledger/fabric-sdk-go/pkg/client/common/mocks"
19- "github.com/hyperledger/fabric-sdk-go/pkg/context"
19+ "github.com/hyperledger/fabric-sdk-go/pkg/common/context"
20+ contextImpl "github.com/hyperledger/fabric-sdk-go/pkg/context"
2021 "github.com/hyperledger/fabric-sdk-go/pkg/context/api/core"
2122 "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab"
2223 "github.com/hyperledger/fabric-sdk-go/pkg/errors/retry"
@@ -30,6 +31,7 @@ import (
3031
3132const (
3233 testAddress = "127.0.0.1:47882"
34+ channelID = "testChannel"
3335)
3436
3537func TestTxProposalResponseFilter (t * testing.T ) {
@@ -449,29 +451,21 @@ func TestMultiErrorPropogation(t *testing.T) {
449451}
450452
451453func TestDiscoveryGreylist (t * testing.T ) {
454+
452455 testPeer1 := fcmocks .NewMockPeer ("Peer1" , "http://peer1.com" )
453456 testPeer1 .Error = status .New (status .EndorserClientStatus ,
454457 status .ConnectionFailed .ToInt32 (), "test" , []interface {}{testPeer1 .URL ()})
455458
456- fabCtx := setupTestContext ()
457-
458- orderer := fcmocks .NewMockOrderer ("" , nil )
459- testChannelSvc , err := setupTestChannelService (fabCtx , []fab.Orderer {orderer })
459+ selectionService , err := setupTestSelection (nil , nil )
460460 assert .Nil (t , err , "Got error %s" , err )
461+ selectionService .SelectAll = true
461462
462463 discoveryService , err := setupTestDiscovery (nil , []fab.Peer {testPeer1 })
463464 assert .Nil (t , err , "Got error %s" , err )
464465
465- selectionService , err := setupTestSelection (nil , nil )
466- assert .Nil (t , err , "Got error %s" , err )
467- selectionService .SelectAll = true
466+ fabCtx := setupCustomTestContext (t , selectionService , discoveryService , nil )
467+ ctx := contextImpl .NewChannel (fabCtx , channelID )
468468
469- ctx := Context {
470- Providers : fabCtx ,
471- DiscoveryService : discoveryService ,
472- SelectionService : selectionService ,
473- ChannelService : testChannelSvc ,
474- }
475469 chClient , err := New (ctx )
476470 assert .Nil (t , err , "Got error %s" , err )
477471
@@ -491,7 +485,7 @@ func TestDiscoveryGreylist(t *testing.T) {
491485 assert .EqualValues (t , status .NoPeersFound .ToInt32 (), s .Code , "expected No Peers Found status on greylist" )
492486 assert .Equal (t , 1 , testPeer1 .ProcessProposalCalls , "expected peer 1 to be greylisted" )
493487 // Wait for greylist expiry
494- time .Sleep (ctx .Config ().TimeoutOrDefault (core .DiscoveryGreylistExpiry ))
488+ time .Sleep (ctx .Providers (). Config ().TimeoutOrDefault (core .DiscoveryGreylistExpiry ))
495489 testPeer1 .ProcessProposalCalls = 0
496490 testPeer1 .Error = status .New (status .EndorserServerStatus , int32 (common .Status_SERVICE_UNAVAILABLE ), "test" , nil )
497491 // Try again
@@ -506,20 +500,19 @@ func TestDiscoveryGreylist(t *testing.T) {
506500}
507501
508502func setupTestChannelService (ctx context.Client , orderers []fab.Orderer ) (fab.ChannelService , error ) {
509- const channelName = "testChannel"
510503 chProvider , err := fcmocks .NewMockChannelProvider (ctx )
511504 if err != nil {
512505 return nil , errors .WithMessage (err , "mock channel provider creation failed" )
513506 }
514507
515- chService , err := chProvider .ChannelService (ctx , channelName )
508+ chService , err := chProvider .ChannelService (ctx , channelID )
516509 if err != nil {
517510 return nil , errors .WithMessage (err , "mock channel service creation failed" )
518511 }
519512
520513 transactor := txnmocks.MockTransactor {
521514 Ctx : ctx ,
522- ChannelID : channelName ,
515+ ChannelID : channelID ,
523516 Orderers : orderers ,
524517 }
525518 chService .(* fcmocks.MockChannelService ).SetTransactor (& transactor )
@@ -533,6 +526,31 @@ func setupTestContext() context.Client {
533526 return ctx
534527}
535528
529+ func setupCustomTestContext (t * testing.T , selectionService fab.SelectionService , discoveryService fab.DiscoveryService , orderers []fab.Orderer ) context.Client {
530+ user := fcmocks .NewMockUser ("test" )
531+ ctx := fcmocks .NewMockContext (user )
532+
533+ if orderers == nil {
534+ orderer := fcmocks .NewMockOrderer ("" , nil )
535+ orderers = []fab.Orderer {orderer }
536+ }
537+
538+ testChannelSvc , err := setupTestChannelService (ctx , orderers )
539+ assert .Nil (t , err , "Got error %s" , err )
540+
541+ //Modify for custom mocks to test scenarios
542+ selectionProvider := ctx .MockProviderContext .SelectionProvider ()
543+ selectionProvider .(* fcmocks.MockSelectionProvider ).SetCustomSelectionService (selectionService )
544+
545+ channelProvider := ctx .MockProviderContext .ChannelProvider ()
546+ channelProvider .(* fcmocks.MockChannelProvider ).SetCustomChannelService (testChannelSvc )
547+
548+ discoveryProvider := ctx .MockProviderContext .DiscoveryProvider ()
549+ discoveryProvider .(* fcmocks.MockStaticDiscoveryProvider ).SetCustomDiscoveryService (discoveryService )
550+
551+ return ctx
552+ }
553+
536554func setupTestDiscovery (discErr error , peers []fab.Peer ) (fab.DiscoveryService , error ) {
537555
538556 mockDiscovery , err := txnmocks .NewMockDiscoveryProvider (discErr , peers )
@@ -560,11 +578,6 @@ func setupChannelClient(peers []fab.Peer, t *testing.T) *Client {
560578
561579func setupChannelClientWithError (discErr error , selectionErr error , peers []fab.Peer , t * testing.T ) * Client {
562580
563- fabCtx := setupTestContext ()
564- orderer := fcmocks .NewMockOrderer ("" , nil )
565- testChannelSvc , err := setupTestChannelService (fabCtx , []fab.Orderer {orderer })
566- assert .Nil (t , err , "Got error %s" , err )
567-
568581 discoveryService , err := setupTestDiscovery (discErr , nil )
569582 if err != nil {
570583 t .Fatalf ("Failed to setup discovery service: %s" , err )
@@ -575,12 +588,10 @@ func setupChannelClientWithError(discErr error, selectionErr error, peers []fab.
575588 t .Fatalf ("Failed to setup discovery service: %s" , err )
576589 }
577590
578- ctx := Context {
579- Providers : fabCtx ,
580- DiscoveryService : discoveryService ,
581- SelectionService : selectionService ,
582- ChannelService : testChannelSvc ,
583- }
591+ fabCtx := setupCustomTestContext (t , selectionService , discoveryService , nil )
592+
593+ ctx := contextImpl .NewChannel (fabCtx , channelID )
594+
584595 ch , err := New (ctx )
585596 if err != nil {
586597 t .Fatalf ("Failed to create new channel client: %s" , err )
@@ -592,22 +603,16 @@ func setupChannelClientWithError(discErr error, selectionErr error, peers []fab.
592603func setupChannelClientWithNodes (peers []fab.Peer ,
593604 orderers []fab.Orderer , t * testing.T ) * Client {
594605
595- fabCtx := setupTestContext ()
596- testChannelSvc , err := setupTestChannelService (fabCtx , orderers )
597- assert .Nil (t , err , "Got error %s" , err )
598-
599606 discoveryService , err := setupTestDiscovery (nil , nil )
600607 assert .Nil (t , err , "Failed to setup discovery service" )
601608
602609 selectionService , err := setupTestSelection (nil , peers )
603610 assert .Nil (t , err , "Failed to setup discovery service" )
604611
605- ctx := Context {
606- Providers : fabCtx ,
607- DiscoveryService : discoveryService ,
608- SelectionService : selectionService ,
609- ChannelService : testChannelSvc ,
610- }
612+ fabCtx := setupCustomTestContext (t , selectionService , discoveryService , orderers )
613+
614+ ctx := contextImpl .NewChannel (fabCtx , channelID )
615+
611616 ch , err := New (ctx )
612617 assert .Nil (t , err , "Failed to create new channel client" )
613618
0 commit comments