@@ -16,7 +16,8 @@ import (
16
16
17
17
"github.com/hyperledger/fabric-sdk-go/pkg/client/channel/invoke"
18
18
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"
20
21
"github.com/hyperledger/fabric-sdk-go/pkg/context/api/core"
21
22
"github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab"
22
23
"github.com/hyperledger/fabric-sdk-go/pkg/errors/retry"
@@ -30,6 +31,7 @@ import (
30
31
31
32
const (
32
33
testAddress = "127.0.0.1:47882"
34
+ channelID = "testChannel"
33
35
)
34
36
35
37
func TestTxProposalResponseFilter (t * testing.T ) {
@@ -449,29 +451,21 @@ func TestMultiErrorPropogation(t *testing.T) {
449
451
}
450
452
451
453
func TestDiscoveryGreylist (t * testing.T ) {
454
+
452
455
testPeer1 := fcmocks .NewMockPeer ("Peer1" , "http://peer1.com" )
453
456
testPeer1 .Error = status .New (status .EndorserClientStatus ,
454
457
status .ConnectionFailed .ToInt32 (), "test" , []interface {}{testPeer1 .URL ()})
455
458
456
- fabCtx := setupTestContext ()
457
-
458
- orderer := fcmocks .NewMockOrderer ("" , nil )
459
- testChannelSvc , err := setupTestChannelService (fabCtx , []fab.Orderer {orderer })
459
+ selectionService , err := setupTestSelection (nil , nil )
460
460
assert .Nil (t , err , "Got error %s" , err )
461
+ selectionService .SelectAll = true
461
462
462
463
discoveryService , err := setupTestDiscovery (nil , []fab.Peer {testPeer1 })
463
464
assert .Nil (t , err , "Got error %s" , err )
464
465
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 )
468
468
469
- ctx := Context {
470
- Providers : fabCtx ,
471
- DiscoveryService : discoveryService ,
472
- SelectionService : selectionService ,
473
- ChannelService : testChannelSvc ,
474
- }
475
469
chClient , err := New (ctx )
476
470
assert .Nil (t , err , "Got error %s" , err )
477
471
@@ -491,7 +485,7 @@ func TestDiscoveryGreylist(t *testing.T) {
491
485
assert .EqualValues (t , status .NoPeersFound .ToInt32 (), s .Code , "expected No Peers Found status on greylist" )
492
486
assert .Equal (t , 1 , testPeer1 .ProcessProposalCalls , "expected peer 1 to be greylisted" )
493
487
// Wait for greylist expiry
494
- time .Sleep (ctx .Config ().TimeoutOrDefault (core .DiscoveryGreylistExpiry ))
488
+ time .Sleep (ctx .Providers (). Config ().TimeoutOrDefault (core .DiscoveryGreylistExpiry ))
495
489
testPeer1 .ProcessProposalCalls = 0
496
490
testPeer1 .Error = status .New (status .EndorserServerStatus , int32 (common .Status_SERVICE_UNAVAILABLE ), "test" , nil )
497
491
// Try again
@@ -506,20 +500,19 @@ func TestDiscoveryGreylist(t *testing.T) {
506
500
}
507
501
508
502
func setupTestChannelService (ctx context.Client , orderers []fab.Orderer ) (fab.ChannelService , error ) {
509
- const channelName = "testChannel"
510
503
chProvider , err := fcmocks .NewMockChannelProvider (ctx )
511
504
if err != nil {
512
505
return nil , errors .WithMessage (err , "mock channel provider creation failed" )
513
506
}
514
507
515
- chService , err := chProvider .ChannelService (ctx , channelName )
508
+ chService , err := chProvider .ChannelService (ctx , channelID )
516
509
if err != nil {
517
510
return nil , errors .WithMessage (err , "mock channel service creation failed" )
518
511
}
519
512
520
513
transactor := txnmocks.MockTransactor {
521
514
Ctx : ctx ,
522
- ChannelID : channelName ,
515
+ ChannelID : channelID ,
523
516
Orderers : orderers ,
524
517
}
525
518
chService .(* fcmocks.MockChannelService ).SetTransactor (& transactor )
@@ -533,6 +526,31 @@ func setupTestContext() context.Client {
533
526
return ctx
534
527
}
535
528
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
+
536
554
func setupTestDiscovery (discErr error , peers []fab.Peer ) (fab.DiscoveryService , error ) {
537
555
538
556
mockDiscovery , err := txnmocks .NewMockDiscoveryProvider (discErr , peers )
@@ -560,11 +578,6 @@ func setupChannelClient(peers []fab.Peer, t *testing.T) *Client {
560
578
561
579
func setupChannelClientWithError (discErr error , selectionErr error , peers []fab.Peer , t * testing.T ) * Client {
562
580
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
-
568
581
discoveryService , err := setupTestDiscovery (discErr , nil )
569
582
if err != nil {
570
583
t .Fatalf ("Failed to setup discovery service: %s" , err )
@@ -575,12 +588,10 @@ func setupChannelClientWithError(discErr error, selectionErr error, peers []fab.
575
588
t .Fatalf ("Failed to setup discovery service: %s" , err )
576
589
}
577
590
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
+
584
595
ch , err := New (ctx )
585
596
if err != nil {
586
597
t .Fatalf ("Failed to create new channel client: %s" , err )
@@ -592,22 +603,16 @@ func setupChannelClientWithError(discErr error, selectionErr error, peers []fab.
592
603
func setupChannelClientWithNodes (peers []fab.Peer ,
593
604
orderers []fab.Orderer , t * testing.T ) * Client {
594
605
595
- fabCtx := setupTestContext ()
596
- testChannelSvc , err := setupTestChannelService (fabCtx , orderers )
597
- assert .Nil (t , err , "Got error %s" , err )
598
-
599
606
discoveryService , err := setupTestDiscovery (nil , nil )
600
607
assert .Nil (t , err , "Failed to setup discovery service" )
601
608
602
609
selectionService , err := setupTestSelection (nil , peers )
603
610
assert .Nil (t , err , "Failed to setup discovery service" )
604
611
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
+
611
616
ch , err := New (ctx )
612
617
assert .Nil (t , err , "Failed to create new channel client" )
613
618
0 commit comments