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

Commit 1ed507f

Browse files
committed
[FAB-11229] Check for chaincode installed in orgs test
Change-Id: I5ab001cb5be9d6de1340e80f97b25beda3a395b4 Signed-off-by: Troy Ronda <troy@troyronda.com>
1 parent eebf851 commit 1ed507f

File tree

2 files changed

+27
-10
lines changed

2 files changed

+27
-10
lines changed

test/integration/e2e/orgs/multiple_orgs_minconfig_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,13 @@ import (
2020
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk/factory/defsvc"
2121
"github.com/hyperledger/fabric-sdk-go/pkg/fabsdk/provider/chpvdr"
2222
"github.com/hyperledger/fabric-sdk-go/test/integration"
23+
"github.com/hyperledger/fabric-sdk-go/test/metadata"
2324
"github.com/stretchr/testify/assert"
2425
"github.com/stretchr/testify/require"
2526
)
2627

2728
const (
28-
bootStrapCC = "btspExampleCC"
29+
bootStrapCC = "example_cc_btsp"
2930
configFilename = "config_e2e_multiorg_bootstrap.yaml"
3031
localOrderersPeersCAConfigFilename = "local_orderers_peers_ca_bootstrap.yaml"
3132
entityMatchersConfigFilename = "local_entity_matchers_bootstrap.yaml"
@@ -56,7 +57,7 @@ func TestOrgsEndToEndWithBootstrapConfigs(t *testing.T) {
5657
ordererClientContext: sdk.Context(fabsdk.WithUser(ordererAdminUser), fabsdk.WithOrg(ordererOrgName)),
5758
org1AdminClientContext: sdk.Context(fabsdk.WithUser(org1AdminUser), fabsdk.WithOrg(org1)),
5859
org2AdminClientContext: sdk.Context(fabsdk.WithUser(org2AdminUser), fabsdk.WithOrg(org2)),
59-
ccName: bootStrapCC,
60+
ccName: bootStrapCC + metadata.TestRunID,
6061
ccVersion: "0",
6162
}
6263

test/integration/e2e/orgs/multiple_orgs_test.go

Lines changed: 24 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ const (
4848
org1User = "User1"
4949
org2User = "User1"
5050
channelID = "orgchannel"
51+
ccPath = "github.com/example_cc"
5152
)
5253

5354
var (
@@ -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

517533
func 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

Comments
 (0)