@@ -48,6 +48,7 @@ const (
4848 org1User = "User1"
4949 org2User = "User1"
5050 channelID = "orgchannel"
51+ ccPath = "github.com/example_cc"
5152)
5253
5354var (
@@ -195,7 +196,7 @@ func testWithOrg1(t *testing.T, sdk *fabsdk.FabricSDK, mc *multiorgContext) int
195196 org1ChannelClientContext := sdk .ChannelContext (channelID , fabsdk .WithUser (org1User ), fabsdk .WithOrg (org1 ))
196197 org2ChannelClientContext := sdk .ChannelContext (channelID , fabsdk .WithUser (org2User ), fabsdk .WithOrg (org2 ))
197198
198- ccPkg , err := packager .NewCCPackage ("github.com/example_cc" , integration .GetDeployPath ())
199+ ccPkg , err := packager .NewCCPackage (ccPath , integration .GetDeployPath ())
199200 if err != nil {
200201 t .Fatal (err )
201202 }
@@ -230,7 +231,7 @@ func testWithOrg1(t *testing.T, sdk *fabsdk.FabricSDK, mc *multiorgContext) int
230231 checkLedgerInfo (ledgerClient , t , ledgerInfoBefore , transactionID )
231232
232233 // Start chaincode upgrade process (install and instantiate new version of exampleCC)
233- upgradeCC (ccPkg , mc . org1ResMgmt , t , mc . org2ResMgmt , mc .ccName , "1" )
234+ upgradeCC (t , mc , ccPkg , mc .ccName , "1" )
234235
235236 // Org2 user moves funds on org2 peer (cc policy fails since both Org1 and Org2 peers should participate)
236237 testCCPolicy (chClientOrg2User , t , mc .ccName )
@@ -340,22 +341,37 @@ func testCCPolicy(chClientOrg2User *channel.Client, t *testing.T, ccName string)
340341 }
341342}
342343
343- func upgradeCC (ccPkg * resource.CCPackage , org1ResMgmt * resmgmt.Client , t * testing.T , org2ResMgmt * resmgmt.Client , ccName , ccVersion string ) {
344- installCCReq := resmgmt.InstallCCRequest {Name : ccName , Path : "github.com/example_cc" , Version : ccVersion , Package : ccPkg }
344+ func upgradeCC (t * testing.T , mc * multiorgContext , ccPkg * resource.CCPackage , ccName , ccVersion string ) {
345+ installCCReq := resmgmt.InstallCCRequest {Name : ccName , Path : ccPath , Version : ccVersion , Package : ccPkg }
346+
347+ // Ensure that Gossip has propagated it's view of local peers before invoking
348+ // install since some peers may be missed if we call InstallCC too early
349+ org1Peers , err := integration .DiscoverLocalPeers (mc .org1AdminClientContext , 2 )
350+ require .NoError (t , err )
351+ org2Peers , err := integration .DiscoverLocalPeers (mc .org2AdminClientContext , 1 )
352+ require .NoError (t , err )
353+
345354 // Install example cc version '1' to Org1 peers
346- _ , err := org1ResMgmt .InstallCC (installCCReq , resmgmt .WithRetry (retry .DefaultResMgmtOpts ))
355+ _ , err = mc . org1ResMgmt .InstallCC (installCCReq , resmgmt .WithRetry (retry .DefaultResMgmtOpts ))
347356 require .Nil (t , err , "error should be nil for InstallCC version '1' or Org1 peers" )
348357
349358 // Install example cc version '1' to Org2 peers
350- _ , err = org2ResMgmt .InstallCC (installCCReq , resmgmt .WithRetry (retry .DefaultResMgmtOpts ))
359+ _ , err = mc . org2ResMgmt .InstallCC (installCCReq , resmgmt .WithRetry (retry .DefaultResMgmtOpts ))
351360 require .Nil (t , err , "error should be nil for InstallCC version '1' or Org2 peers" )
352361
362+ // Ensure the CC is installed on all peers in both orgs
363+ installed := queryInstalledCC (t , "Org1" , mc .org1ResMgmt , ccName , ccVersion , org1Peers )
364+ require .Truef (t , installed , "Expecting chaincode [%s:%s] to be installed on all peers in Org1" )
365+
366+ installed = queryInstalledCC (t , "Org2" , mc .org2ResMgmt , ccName , ccVersion , org2Peers )
367+ require .Truef (t , installed , "Expecting chaincode [%s:%s] to be installed on all peers in Org2" )
368+
353369 // New chaincode policy (both orgs have to approve)
354370 org1Andorg2Policy , err := cauthdsl .FromString ("AND ('Org1MSP.member','Org2MSP.member')" )
355371 require .Nil (t , err , "error should be nil for getting cc policy with both orgs to approve" )
356372
357373 // Org1 resource manager will instantiate 'example_cc' version 1 on 'orgchannel'
358- upgradeResp , err := org1ResMgmt .UpgradeCC (channelID , resmgmt.UpgradeCCRequest {Name : ccName , Path : "github.com/example_cc" , Version : ccVersion , Args : integration .ExampleCCUpgradeArgs (), Policy : org1Andorg2Policy })
374+ upgradeResp , err := mc . org1ResMgmt .UpgradeCC (channelID , resmgmt.UpgradeCCRequest {Name : ccName , Path : ccPath , Version : ccVersion , Args : integration .ExampleCCUpgradeArgs (), Policy : org1Andorg2Policy })
359375 require .Nil (t , err , "error should be nil for UpgradeCC version '1' on 'orgchannel'" )
360376 require .NotEmpty (t , upgradeResp , "transaction response should be populated" )
361377}
@@ -515,7 +531,7 @@ func isCCInstantiated(t *testing.T, resMgmt *resmgmt.Client, channelID, ccName,
515531}
516532
517533func createCC (t * testing.T , mc * multiorgContext , ccPkg * resource.CCPackage , ccName , ccVersion string ) {
518- installCCReq := resmgmt.InstallCCRequest {Name : ccName , Path : "github.com/example_cc" , Version : ccVersion , Package : ccPkg }
534+ installCCReq := resmgmt.InstallCCRequest {Name : ccName , Path : ccPath , Version : ccVersion , Package : ccPkg }
519535
520536 // Ensure that Gossip has propagated it's view of local peers before invoking
521537 // install since some peers may be missed if we call InstallCC too early
0 commit comments