From cc12848439e9cc18be7e56dbe969d1f1ef1eafa9 Mon Sep 17 00:00:00 2001 From: Troy Ronda Date: Tue, 13 Mar 2018 14:41:46 -0400 Subject: [PATCH] [FAB-8845] Update to usage of WithTargetURLs This change updates integration tests to use WithTargetURLs. QueryChannels and QueryInstalledChaincodes are updated to use functional options to specify target. Change-Id: Ia04318fd6639fe795e17837af556209751bfc91e Signed-off-by: Troy Ronda --- pkg/client/ledger/opts.go | 2 +- pkg/client/resmgmt/opts.go | 2 +- pkg/client/resmgmt/resmgmt.go | 26 +++++++++-- pkg/client/resmgmt/resmgmt_test.go | 8 ++-- test/integration/base_test_setup.go | 14 ++---- test/integration/fab/channel_ledger_test.go | 36 +++++++-------- test/integration/fab/eventclient_test.go | 6 ++- .../integration/fab/install_chaincode_test.go | 17 ++++--- test/integration/fab/resource_queries_test.go | 8 +++- test/integration/fab/transient_data_test.go | 45 ++++++++++++++++++- test/integration/orgs/multiple_orgs_test.go | 19 +++++--- test/integration/sdk/ledger_queries_test.go | 3 +- test/integration/sdk/resmgmt_queries_test.go | 13 +++--- test/integration/utils.go | 36 ++++----------- 14 files changed, 144 insertions(+), 91 deletions(-) diff --git a/pkg/client/ledger/opts.go b/pkg/client/ledger/opts.go index b329665c76..f24fe3d223 100644 --- a/pkg/client/ledger/opts.go +++ b/pkg/client/ledger/opts.go @@ -71,7 +71,7 @@ func WithTargetURLs(urls ...string) RequestOption { peer, err := ctx.InfraProvider().CreatePeerFromConfig(peerCfg) if err != nil { - return errors.WithMessage(err, "creating orderer from config failed") + return errors.WithMessage(err, "creating peer from config failed") } targets = append(targets, peer) diff --git a/pkg/client/resmgmt/opts.go b/pkg/client/resmgmt/opts.go index cd39b09fcb..35201fd82b 100644 --- a/pkg/client/resmgmt/opts.go +++ b/pkg/client/resmgmt/opts.go @@ -40,7 +40,7 @@ func WithTargetURLs(urls ...string) RequestOption { peer, err := ctx.InfraProvider().CreatePeerFromConfig(peerCfg) if err != nil { - return errors.WithMessage(err, "creating orderer from config failed") + return errors.WithMessage(err, "creating peer from config failed") } targets = append(targets, peer) diff --git a/pkg/client/resmgmt/resmgmt.go b/pkg/client/resmgmt/resmgmt.go index 6761ad0632..7fe1c59902 100644 --- a/pkg/client/resmgmt/resmgmt.go +++ b/pkg/client/resmgmt/resmgmt.go @@ -381,8 +381,17 @@ func (rc *Client) UpgradeCC(channelID string, req UpgradeCCRequest, options ...R // QueryInstalledChaincodes queries the installed chaincodes on a peer. // Returns the details of all chaincodes installed on a peer. -func (rc *Client) QueryInstalledChaincodes(proposalProcessor fab.ProposalProcessor) (*pb.ChaincodeQueryResponse, error) { - return resource.QueryInstalledChaincodes(rc.ctx, proposalProcessor) +func (rc *Client) QueryInstalledChaincodes(options ...RequestOption) (*pb.ChaincodeQueryResponse, error) { + opts, err := rc.prepareRequestOpts(options...) + if err != nil { + return nil, err + } + + if len(opts.Targets) != 1 { + return nil, errors.New("only one target is supported") + } + + return resource.QueryInstalledChaincodes(rc.ctx, opts.Targets[0]) } // QueryInstantiatedChaincodes queries the instantiated chaincodes on a peer for specific channel. @@ -429,8 +438,17 @@ func (rc *Client) QueryInstantiatedChaincodes(channelID string, options ...Reque // QueryChannels queries the names of all the channels that a peer has joined. // Returns the details of all channels that peer has joined. -func (rc *Client) QueryChannels(proposalProcessor fab.ProposalProcessor) (*pb.ChannelQueryResponse, error) { - return resource.QueryChannels(rc.ctx, proposalProcessor) +func (rc *Client) QueryChannels(options ...RequestOption) (*pb.ChannelQueryResponse, error) { + opts, err := rc.prepareRequestOpts(options...) + if err != nil { + return nil, err + } + + if len(opts.Targets) != 1 { + return nil, errors.New("only one target is supported") + } + + return resource.QueryChannels(rc.ctx, opts.Targets[0]) } // sendCCProposal sends proposal for type Instantiate, Upgrade diff --git a/pkg/client/resmgmt/resmgmt_test.go b/pkg/client/resmgmt/resmgmt_test.go index d81e2dd9e3..6b632bf44f 100644 --- a/pkg/client/resmgmt/resmgmt_test.go +++ b/pkg/client/resmgmt/resmgmt_test.go @@ -403,7 +403,7 @@ func TestQueryInstalledChaincodes(t *testing.T) { rc := setupDefaultResMgmtClient(t) // Test error - _, err := rc.QueryInstalledChaincodes(nil) + _, err := rc.QueryInstalledChaincodes() if err == nil { t.Fatalf("QueryInstalledChaincodes: peer cannot be nil") } @@ -411,7 +411,7 @@ func TestQueryInstalledChaincodes(t *testing.T) { peer := &fcmocks.MockPeer{MockName: "Peer1", MockURL: "http://peer1.com", MockRoles: []string{}, MockCert: nil, MockMSP: "Org1MSP", Status: http.StatusOK} // Test success (valid peer) - _, err = rc.QueryInstalledChaincodes(peer) + _, err = rc.QueryInstalledChaincodes(WithTargets(peer)) if err != nil { t.Fatal(err) } @@ -434,7 +434,7 @@ func TestQueryChannels(t *testing.T) { } // Test error - _, err = rc.QueryChannels(nil) + _, err = rc.QueryChannels() if err == nil { t.Fatalf("QueryChannels: peer cannot be nil") } @@ -443,7 +443,7 @@ func TestQueryChannels(t *testing.T) { // Test success (valid peer) found := false - response, err = rc.QueryChannels(peer) + response, err = rc.QueryChannels(WithTargets(peer)) if err != nil { t.Fatalf("failed to query channel for peer: %s", err) } diff --git a/test/integration/base_test_setup.go b/test/integration/base_test_setup.go index 8ab0b14ee6..2f3ba07044 100644 --- a/test/integration/base_test_setup.go +++ b/test/integration/base_test_setup.go @@ -12,11 +12,9 @@ import ( "github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/core" - "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/msp" "github.com/hyperledger/fabric-sdk-go/pkg/core/config" packager "github.com/hyperledger/fabric-sdk-go/pkg/fab/ccpackager/gopackager" - "github.com/hyperledger/fabric-sdk-go/pkg/fab/peer" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" "github.com/hyperledger/fabric-sdk-go/third_party/github.com/hyperledger/fabric/common/cauthdsl" "github.com/pkg/errors" @@ -25,7 +23,7 @@ import ( // BaseSetupImpl implementation of BaseTestSetup type BaseSetupImpl struct { Identity msp.Identity - Targets []fab.ProposalProcessor + Targets []string ConfigFile string OrgID string ChannelID string @@ -91,19 +89,15 @@ func (setup *BaseSetupImpl) Initialize(sdk *fabsdk.FabricSDK) error { return nil } -func getOrgTargets(config core.Config, org string) ([]fab.ProposalProcessor, error) { - targets := []fab.ProposalProcessor{} +func getOrgTargets(config core.Config, org string) ([]string, error) { + var targets []string peerConfig, err := config.PeersConfig(org) if err != nil { return nil, errors.WithMessage(err, "reading peer config failed") } for _, p := range peerConfig { - target, err := peer.New(config, peer.FromPeerConfig(&core.NetworkPeer{PeerConfig: p})) - if err != nil { - return nil, errors.WithMessage(err, "NewPeer failed") - } - targets = append(targets, target) + targets = append(targets, p.URL) } return targets, nil } diff --git a/test/integration/fab/channel_ledger_test.go b/test/integration/fab/channel_ledger_test.go index 10875bf0de..5fdbc31031 100644 --- a/test/integration/fab/channel_ledger_test.go +++ b/test/integration/fab/channel_ledger_test.go @@ -29,7 +29,7 @@ const ( orgName = org1Name ) -func initializeLedgerTests(t *testing.T) (*fabsdk.FabricSDK, []fab.Peer) { +func initializeLedgerTests(t *testing.T) (*fabsdk.FabricSDK, []string) { // Using shared SDK instance to increase test speed. sdk := mainSDK @@ -45,14 +45,14 @@ func initializeLedgerTests(t *testing.T) (*fabsdk.FabricSDK, []fab.Peer) { t.Fatalf("failed to load signing identity: %s", err) } - targets, err := integration.CreateProposalProcessors(sdk.Config(), []string{orgName}) + targets, err := integration.OrgTargetPeers(sdk.Config(), []string{orgName}) if err != nil { t.Fatalf("creating peers failed: %v", err) } channelConfig := path.Join("../../../", metadata.ChannelConfigPath, channelConfigFile) req := resmgmt.SaveChannelRequest{ChannelID: channelID, ChannelConfig: channelConfig, SigningIdentities: []msp.Identity{adminIdentity}} - err = integration.InitializeChannel(sdk, orgName, req, integration.ProposalProcessors(targets)) + err = integration.InitializeChannel(sdk, orgName, req, targets) if err != nil { t.Fatalf("failed to ensure channel has been initialized: %s", err) } @@ -81,7 +81,7 @@ func TestLedgerQueries(t *testing.T) { // Test Query Info - retrieve values before transaction testTargets := targets[0:1] - bciBeforeTx, err := ledgerClient.QueryInfo(ledger.WithTargets(testTargets...)) + bciBeforeTx, err := ledgerClient.QueryInfo(ledger.WithTargetURLs(testTargets...)) if err != nil { t.Fatalf("QueryInfo return error: %v", err) } @@ -98,7 +98,7 @@ func TestLedgerQueries(t *testing.T) { } // Test Query Info - retrieve values after transaction - bciAfterTx, err := ledgerClient.QueryInfo(ledger.WithTargets(testTargets...)) + bciAfterTx, err := ledgerClient.QueryInfo(ledger.WithTargetURLs(testTargets...)) if err != nil { t.Fatalf("QueryInfo return error: %v", err) } @@ -158,10 +158,10 @@ func changeBlockState(t *testing.T, client *channel.Client, chaincodeID string) return txID, nil } -func testQueryTransaction(t *testing.T, ledgerClient *ledger.Client, txID fab.TransactionID, targets []fab.Peer) { +func testQueryTransaction(t *testing.T, ledgerClient *ledger.Client, txID fab.TransactionID, targets []string) { // Test Query Transaction -- verify that valid transaction has been processed - processedTransaction, err := ledgerClient.QueryTransaction(txID, ledger.WithTargets(targets...)) + processedTransaction, err := ledgerClient.QueryTransaction(txID, ledger.WithTargetURLs(targets...)) if err != nil { t.Fatalf("QueryTransaction return error: %v", err) } @@ -171,22 +171,22 @@ func testQueryTransaction(t *testing.T, ledgerClient *ledger.Client, txID fab.Tr } // Test Query Transaction -- Retrieve non existing transaction - _, err = ledgerClient.QueryTransaction("123ABC", ledger.WithTargets(targets...)) + _, err = ledgerClient.QueryTransaction("123ABC", ledger.WithTargetURLs(targets...)) if err == nil { t.Fatalf("QueryTransaction non-existing didn't return an error") } } -func testQueryBlock(t *testing.T, ledgerClient *ledger.Client, targets []fab.Peer) { +func testQueryBlock(t *testing.T, ledgerClient *ledger.Client, targets []string) { // Retrieve current blockchain info - bci, err := ledgerClient.QueryInfo(ledger.WithTargets(targets...)) + bci, err := ledgerClient.QueryInfo(ledger.WithTargetURLs(targets...)) if err != nil { t.Fatalf("QueryInfo return error: %v", err) } // Test Query Block by Hash - retrieve current block by hash - block, err := ledgerClient.QueryBlockByHash(bci.BCI.CurrentBlockHash, ledger.WithTargets(targets...)) + block, err := ledgerClient.QueryBlockByHash(bci.BCI.CurrentBlockHash, ledger.WithTargetURLs(targets...)) if err != nil { t.Fatalf("QueryBlockByHash return error: %v", err) } @@ -196,13 +196,13 @@ func testQueryBlock(t *testing.T, ledgerClient *ledger.Client, targets []fab.Pee } // Test Query Block by Hash - retrieve block by non-existent hash - _, err = ledgerClient.QueryBlockByHash([]byte("non-existent"), ledger.WithTargets(targets...)) + _, err = ledgerClient.QueryBlockByHash([]byte("non-existent"), ledger.WithTargetURLs(targets...)) if err == nil { t.Fatalf("QueryBlockByHash non-existent didn't return an error") } // Test Query Block - retrieve block by number - block, err = ledgerClient.QueryBlock(1, ledger.WithTargets(targets...)) + block, err = ledgerClient.QueryBlock(1, ledger.WithTargetURLs(targets...)) if err != nil { t.Fatalf("QueryBlock return error: %v", err) } @@ -211,18 +211,18 @@ func testQueryBlock(t *testing.T, ledgerClient *ledger.Client, targets []fab.Pee } // Test Query Block - retrieve block by non-existent number - _, err = ledgerClient.QueryBlock(2147483647, ledger.WithTargets(targets...)) + _, err = ledgerClient.QueryBlock(2147483647, ledger.WithTargetURLs(targets...)) if err == nil { t.Fatalf("QueryBlock non-existent didn't return an error") } } -func testInstantiatedChaincodes(t *testing.T, ccID string, channelID string, resmgmtClient *resmgmt.Client, targets []fab.Peer) { +func testInstantiatedChaincodes(t *testing.T, ccID string, channelID string, resmgmtClient *resmgmt.Client, targets []string) { found := false // Test Query Instantiated chaincodes - chaincodeQueryResponse, err := resmgmtClient.QueryInstantiatedChaincodes(channelID, resmgmt.WithTargets(targets...)) + chaincodeQueryResponse, err := resmgmtClient.QueryInstantiatedChaincodes(channelID, resmgmt.WithTargetURLs(targets...)) if err != nil { t.Fatalf("QueryInstantiatedChaincodes return error: %v", err) } @@ -259,10 +259,10 @@ func moveFundsAndGetTxID(t *testing.T, client *channel.Client, chaincodeID strin return resp.TransactionID, nil } -func testQueryConfigBlock(t *testing.T, ledgerClient *ledger.Client, targets []fab.Peer) { +func testQueryConfigBlock(t *testing.T, ledgerClient *ledger.Client, targets []string) { // Retrieve current channel configuration - cfgEnvelope, err := ledgerClient.QueryConfig(ledger.WithTargets(targets...)) + cfgEnvelope, err := ledgerClient.QueryConfig(ledger.WithTargetURLs(targets...)) if err != nil { t.Fatalf("QueryConfig return error: %v", err) } diff --git a/test/integration/fab/eventclient_test.go b/test/integration/fab/eventclient_test.go index d2a5ddd588..fb53be553b 100644 --- a/test/integration/fab/eventclient_test.go +++ b/test/integration/fab/eventclient_test.go @@ -20,6 +20,7 @@ import ( "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk/factory/defcore" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk/provider/fabpvdr" "github.com/pkg/errors" + "github.com/stretchr/testify/assert" "github.com/hyperledger/fabric-sdk-go/test/integration" ) @@ -82,12 +83,15 @@ func testEventService(t *testing.T, testSetup *integration.BaseSetupImpl, sdk *f t.Fatalf("Failed to get channel transactor: %s", err) } + peers, err := getProposalProcessors(sdk, "Admin", testSetup.OrgID, testSetup.Targets) + assert.Nil(t, err, "creating peers failed") + tpResponses, prop, err := createAndSendTransactionProposal( transactor, chainCodeID, "invoke", [][]byte{[]byte("move"), []byte("a"), []byte("b"), []byte("10")}, - testSetup.Targets, + peers, nil, ) if err != nil { diff --git a/test/integration/fab/install_chaincode_test.go b/test/integration/fab/install_chaincode_test.go index 9421faba5d..f010b775d7 100644 --- a/test/integration/fab/install_chaincode_test.go +++ b/test/integration/fab/install_chaincode_test.go @@ -20,6 +20,7 @@ import ( "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" "github.com/hyperledger/fabric-sdk-go/test/integration" "github.com/pkg/errors" + "github.com/stretchr/testify/assert" ) const ( @@ -71,11 +72,14 @@ func testChaincodeInstallUsingChaincodePath(t *testing.T, sdk *fabsdk.FabricSDK, t.Fatalf("Failed to get resource: %s", err) } - if err := installCC(client, chainCodeName, chainCodePath, chainCodeVersion, ccPkg, testSetup.Targets); err != nil { + peers, err := getProposalProcessors(sdk, "Admin", testSetup.OrgID, testSetup.Targets) + assert.Nil(t, err, "creating peers failed") + + if err := installCC(client, chainCodeName, chainCodePath, chainCodeVersion, ccPkg, peers); err != nil { t.Fatalf("installCC return error: %v", err) } - chaincodeQueryResponse, err := resource.QueryInstalledChaincodes(client, testSetup.Targets[0]) + chaincodeQueryResponse, err := resource.QueryInstalledChaincodes(client, peers[0]) if err != nil { t.Fatalf("QueryInstalledChaincodes return error: %v", err) } @@ -91,7 +95,7 @@ func testChaincodeInstallUsingChaincodePath(t *testing.T, sdk *fabsdk.FabricSDK, t.Fatalf("Failed to retrieve installed chaincode.") } //Install same chaincode again, should fail - err = installCC(client, chainCodeName, chainCodePath, chainCodeVersion, ccPkg, testSetup.Targets) + err = installCC(client, chainCodeName, chainCodePath, chainCodeVersion, ccPkg, peers) if err == nil { t.Fatalf("install same chaincode didn't return error") } @@ -116,13 +120,16 @@ func testChaincodeInstallUsingChaincodePackage(t *testing.T, sdk *fabsdk.FabricS t.Fatalf("Failed to get resource: %s", err) } - err = installCC(client, "install", "github.com/example_cc_pkg", chainCodeVersion, ccPkg, testSetup.Targets) + peers, err := getProposalProcessors(sdk, "Admin", testSetup.OrgID, testSetup.Targets) + assert.Nil(t, err, "creating peers failed") + + err = installCC(client, "install", "github.com/example_cc_pkg", chainCodeVersion, ccPkg, peers) if err != nil { t.Fatalf("installCC return error: %v", err) } //Install same chaincode again, should fail - err = installCC(client, "install", chainCodePath, chainCodeVersion, ccPkg, testSetup.Targets) + err = installCC(client, "install", chainCodePath, chainCodeVersion, ccPkg, peers) if err == nil { t.Fatalf("install same chaincode didn't return error") } diff --git a/test/integration/fab/resource_queries_test.go b/test/integration/fab/resource_queries_test.go index ff60a5d069..e354c552b7 100644 --- a/test/integration/fab/resource_queries_test.go +++ b/test/integration/fab/resource_queries_test.go @@ -12,6 +12,7 @@ import ( "github.com/hyperledger/fabric-sdk-go/pkg/context" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" "github.com/hyperledger/fabric-sdk-go/pkg/fab/resource" + "github.com/stretchr/testify/assert" ) func TestChannelQueries(t *testing.T) { @@ -28,9 +29,12 @@ func TestChannelQueries(t *testing.T) { t.Fatalf("Failed to get resource: %s", err) } - testQueryChannels(t, client, testSetup.Targets[0]) + peers, err := getProposalProcessors(sdk, "Admin", testSetup.OrgID, testSetup.Targets[:1]) + assert.Nil(t, err, "creating peers failed") - testInstalledChaincodes(t, chaincodeID, client, testSetup.Targets[0]) + testQueryChannels(t, client, peers[0]) + + testInstalledChaincodes(t, chaincodeID, client, peers[0]) } diff --git a/test/integration/fab/transient_data_test.go b/test/integration/fab/transient_data_test.go index 13887ad4e9..d21d77ce5e 100644 --- a/test/integration/fab/transient_data_test.go +++ b/test/integration/fab/transient_data_test.go @@ -9,11 +9,14 @@ package fab import ( "testing" + contextAPI "github.com/hyperledger/fabric-sdk-go/pkg/common/context" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" + "github.com/hyperledger/fabric-sdk-go/pkg/core/config" "github.com/hyperledger/fabric-sdk-go/pkg/fab/txn" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" "github.com/hyperledger/fabric-sdk-go/test/integration" "github.com/pkg/errors" + "github.com/stretchr/testify/assert" ) // TestTransient ... @@ -56,7 +59,10 @@ func TestTransient(t *testing.T) { t.Fatalf("Failed to get channel transactor: %s", err) } - transactionProposalResponse, _, err := createAndSendTransactionProposal(transactor, chaincodeID, fcn, integration.ExampleCCTxArgs(), testSetup.Targets[:1], transientDataMap) + peers, err := getProposalProcessors(sdk, "Admin", testSetup.OrgID, testSetup.Targets[:1]) + assert.Nil(t, err, "creating peers failed") + + transactionProposalResponse, _, err := createAndSendTransactionProposal(transactor, chaincodeID, fcn, integration.ExampleCCTxArgs(), peers, transientDataMap) if err != nil { t.Fatalf("CreateAndSendTransactionProposal return error: %v", err) } @@ -72,7 +78,7 @@ func TestTransient(t *testing.T) { } //transient data null transientDataMap["result"] = []byte{} - transactionProposalResponse, _, err = createAndSendTransactionProposal(transactor, chaincodeID, fcn, integration.ExampleCCTxArgs(), testSetup.Targets[:1], transientDataMap) + transactionProposalResponse, _, err = createAndSendTransactionProposal(transactor, chaincodeID, fcn, integration.ExampleCCTxArgs(), peers, transientDataMap) if err != nil { t.Fatalf("CreateAndSendTransactionProposal with empty transient data return an error: %v", err) } @@ -121,3 +127,38 @@ func getTransactor(sdk *fabsdk.FabricSDK, channelID string, user string, orgName return chService.Transactor() } + +func getProposalProcessors(sdk *fabsdk.FabricSDK, user string, orgName string, targets []string) ([]fab.ProposalProcessor, error) { + ctxProvider := sdk.Context(fabsdk.WithUser(user), fabsdk.WithOrg(orgName)) + + ctx, err := ctxProvider() + if err != nil { + return nil, errors.WithMessage(err, "context creation failed") + } + + var peers []fab.ProposalProcessor + for _, url := range targets { + p, err := getPeer(ctx, url) + if err != nil { + return nil, err + } + peers = append(peers, p) + } + + return peers, nil +} + +func getPeer(ctx contextAPI.Client, url string) (fab.Peer, error) { + + peerCfg, err := config.NetworkPeerConfigFromURL(ctx.Config(), url) + if err != nil { + return nil, err + } + + peer, err := ctx.InfraProvider().CreatePeerFromConfig(peerCfg) + if err != nil { + return nil, errors.WithMessage(err, "creating peer from config failed") + } + + return peer, nil +} diff --git a/test/integration/orgs/multiple_orgs_test.go b/test/integration/orgs/multiple_orgs_test.go index bc25f5a9e9..8b329a7a98 100644 --- a/test/integration/orgs/multiple_orgs_test.go +++ b/test/integration/orgs/multiple_orgs_test.go @@ -14,10 +14,10 @@ import ( "testing" "time" + contextAPI "github.com/hyperledger/fabric-sdk-go/pkg/common/context" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/msp" "github.com/hyperledger/fabric-sdk-go/pkg/core/config" packager "github.com/hyperledger/fabric-sdk-go/pkg/fab/ccpackager/gopackager" - "github.com/hyperledger/fabric-sdk-go/pkg/fab/peer" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" "github.com/hyperledger/fabric-sdk-go/pkg/client/ledger" @@ -158,7 +158,7 @@ func testWithOrg1(t *testing.T, sdk *fabsdk.FabricSDK) int { } // Load specific targets for move funds test - loadOrgPeers(t, sdk) + loadOrgPeers(t, org1AdminClientContext) // Verify that example CC is instantiated on Org1 peer chaincodeQueryResponse, err := org1ResMgmt.QueryInstantiatedChaincodes("orgchannel") @@ -385,24 +385,29 @@ func verifyValue(t *testing.T, chClient *channel.Client, expected int) { } -func loadOrgPeers(t *testing.T, sdk *fabsdk.FabricSDK) { +func loadOrgPeers(t *testing.T, ctxProvider contextAPI.ClientProvider) { - org1Peers, err := sdk.Config().PeersConfig(org1) + ctx, err := ctxProvider() + if err != nil { + t.Fatalf("context creation failed: %s", err) + } + + org1Peers, err := ctx.Config().PeersConfig(org1) if err != nil { t.Fatal(err) } - org2Peers, err := sdk.Config().PeersConfig(org2) + org2Peers, err := ctx.Config().PeersConfig(org2) if err != nil { t.Fatal(err) } - orgTestPeer0, err = peer.New(sdk.Config(), peer.FromPeerConfig(&core.NetworkPeer{PeerConfig: org1Peers[0]})) + orgTestPeer0, err = ctx.InfraProvider().CreatePeerFromConfig(&core.NetworkPeer{PeerConfig: org1Peers[0]}) if err != nil { t.Fatal(err) } - orgTestPeer1, err = peer.New(sdk.Config(), peer.FromPeerConfig(&core.NetworkPeer{PeerConfig: org2Peers[0]})) + orgTestPeer1, err = ctx.InfraProvider().CreatePeerFromConfig(&core.NetworkPeer{PeerConfig: org2Peers[0]}) if err != nil { t.Fatal(err) } diff --git a/test/integration/sdk/ledger_queries_test.go b/test/integration/sdk/ledger_queries_test.go index 0beecd920d..7e7374ede0 100644 --- a/test/integration/sdk/ledger_queries_test.go +++ b/test/integration/sdk/ledger_queries_test.go @@ -12,7 +12,6 @@ import ( "github.com/golang/protobuf/proto" "github.com/hyperledger/fabric-sdk-go/pkg/client/ledger" - "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" ) @@ -65,7 +64,7 @@ func TestLedgerClientQueries(t *testing.T) { // Same query with target target := testSetup.Targets[0] - ledgerInfoFromTarget, err := client.QueryInfo(ledger.WithTargets(target.(fab.Peer))) + ledgerInfoFromTarget, err := client.QueryInfo(ledger.WithTargetURLs(target)) if err != nil { t.Fatalf("QueryInfo return error: %v", err) } diff --git a/test/integration/sdk/resmgmt_queries_test.go b/test/integration/sdk/resmgmt_queries_test.go index 178152820e..0f2f934036 100644 --- a/test/integration/sdk/resmgmt_queries_test.go +++ b/test/integration/sdk/resmgmt_queries_test.go @@ -10,7 +10,6 @@ import ( "testing" "github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt" - "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" ) @@ -66,9 +65,9 @@ func TestResMgmtClientQueries(t *testing.T) { } -func testInstantiatedChaincodes(t *testing.T, channelID string, ccID string, target fab.ProposalProcessor, client *resmgmt.Client) { +func testInstantiatedChaincodes(t *testing.T, channelID string, ccID string, target string, client *resmgmt.Client) { - chaincodeQueryResponse, err := client.QueryInstantiatedChaincodes(channelID, resmgmt.WithTargets(target.(fab.Peer))) + chaincodeQueryResponse, err := client.QueryInstantiatedChaincodes(channelID, resmgmt.WithTargetURLs(target)) if err != nil { t.Fatalf("QueryInstantiatedChaincodes return error: %v", err) } @@ -86,9 +85,9 @@ func testInstantiatedChaincodes(t *testing.T, channelID string, ccID string, tar } } -func testInstalledChaincodes(t *testing.T, ccID string, target fab.ProposalProcessor, client *resmgmt.Client) { +func testInstalledChaincodes(t *testing.T, ccID string, target string, client *resmgmt.Client) { - chaincodeQueryResponse, err := client.QueryInstalledChaincodes(target) + chaincodeQueryResponse, err := client.QueryInstalledChaincodes(resmgmt.WithTargetURLs(target)) if err != nil { t.Fatalf("QueryInstalledChaincodes return error: %v", err) } @@ -106,9 +105,9 @@ func testInstalledChaincodes(t *testing.T, ccID string, target fab.ProposalProce } } -func testQueryChannels(t *testing.T, channelID string, target fab.ProposalProcessor, client *resmgmt.Client) { +func testQueryChannels(t *testing.T, channelID string, target string, client *resmgmt.Client) { - channelQueryResponse, err := client.QueryChannels(target) + channelQueryResponse, err := client.QueryChannels(resmgmt.WithTargetURLs(target)) if err != nil { t.Fatalf("QueryChannels return error: %v", err) } diff --git a/test/integration/utils.go b/test/integration/utils.go index ee3842c048..b409547dce 100644 --- a/test/integration/utils.go +++ b/test/integration/utils.go @@ -12,8 +12,6 @@ import ( "github.com/hyperledger/fabric-sdk-go/pkg/client/resmgmt" "github.com/hyperledger/fabric-sdk-go/pkg/context/api/core" - "github.com/hyperledger/fabric-sdk-go/pkg/context/api/fab" - "github.com/hyperledger/fabric-sdk-go/pkg/fab/peer" "github.com/hyperledger/fabric-sdk-go/pkg/fabsdk" "github.com/pkg/errors" ) @@ -39,7 +37,7 @@ func randomString(strlen int) string { } // InitializeChannel ... -func InitializeChannel(sdk *fabsdk.FabricSDK, orgID string, req resmgmt.SaveChannelRequest, targets []fab.ProposalProcessor) error { +func InitializeChannel(sdk *fabsdk.FabricSDK, orgID string, req resmgmt.SaveChannelRequest, targets []string) error { joinedTargets, err := FilterTargetsJoinedChannel(sdk, orgID, req.ChannelID, targets) if err != nil { @@ -61,8 +59,8 @@ func InitializeChannel(sdk *fabsdk.FabricSDK, orgID string, req resmgmt.SaveChan } // FilterTargetsJoinedChannel filters targets to those that have joined the named channel. -func FilterTargetsJoinedChannel(sdk *fabsdk.FabricSDK, orgID string, channelID string, targets []fab.ProposalProcessor) ([]fab.ProposalProcessor, error) { - joinedTargets := []fab.ProposalProcessor{} +func FilterTargetsJoinedChannel(sdk *fabsdk.FabricSDK, orgID string, channelID string, targets []string) ([]string, error) { + var joinedTargets []string //prepare context clientContext := sdk.Context(fabsdk.WithUser(adminUser), fabsdk.WithOrg(orgID)) @@ -123,23 +121,16 @@ func JoinChannel(sdk *fabsdk.FabricSDK, name, orgID string) (bool, error) { return true, nil } -// CreateProposalProcessors initializes target peers based on config -func CreateProposalProcessors(config core.Config, orgs []string) ([]fab.Peer, error) { - peers := []fab.Peer{} +// OrgTargetPeers determines peer endpoints for orgs +func OrgTargetPeers(config core.Config, orgs []string) ([]string, error) { + var peers []string for _, org := range orgs { peerConfig, err := config.PeersConfig(org) if err != nil { return nil, errors.WithMessage(err, "reading peer config failed") } for _, p := range peerConfig { - endorser, err := peer.New(config, peer.FromPeerConfig(&core.NetworkPeer{PeerConfig: p})) - if err != nil { - return nil, errors.WithMessage(err, "NewPeer failed") - } - peers = append(peers, endorser) - if err != nil { - return nil, errors.WithMessage(err, "adding peer failed") - } + peers = append(peers, p.URL) } } return peers, nil @@ -147,9 +138,9 @@ func CreateProposalProcessors(config core.Config, orgs []string) ([]fab.Peer, er // HasPeerJoinedChannel checks whether the peer has already joined the channel. // It returns true if it has, false otherwise, or an error -func HasPeerJoinedChannel(client *resmgmt.Client, peer fab.ProposalProcessor, channel string) (bool, error) { +func HasPeerJoinedChannel(client *resmgmt.Client, target string, channel string) (bool, error) { foundChannel := false - response, err := client.QueryChannels(peer) + response, err := client.QueryChannels(resmgmt.WithTargetURLs(target)) if err != nil { return false, errors.WithMessage(err, "failed to query channel for peer") } @@ -161,12 +152,3 @@ func HasPeerJoinedChannel(client *resmgmt.Client, peer fab.ProposalProcessor, ch return foundChannel, nil } - -//ProposalProcessors utility to convert []fab.Peer to []fab.ProposalProcessor -func ProposalProcessors(targets []fab.Peer) []fab.ProposalProcessor { - proposalProcessors := []fab.ProposalProcessor{} - for _, peer := range targets { - proposalProcessors = append(proposalProcessors, peer) - } - return proposalProcessors -}