github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/integration/lifecycle/ccenv14_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package lifecycle
     8  
     9  import (
    10  	"io/ioutil"
    11  	"os"
    12  	"path/filepath"
    13  	"runtime"
    14  	"syscall"
    15  
    16  	docker "github.com/fsouza/go-dockerclient"
    17  	"github.com/hechain20/hechain/integration/nwo"
    18  	. "github.com/onsi/ginkgo"
    19  	. "github.com/onsi/gomega"
    20  	"github.com/tedsuo/ifrit"
    21  )
    22  
    23  var _ = Describe("solo network using ccenv-1.4", func() {
    24  	var (
    25  		client  *docker.Client
    26  		testDir string
    27  		network *nwo.Network
    28  		process ifrit.Process
    29  	)
    30  
    31  	BeforeEach(func() {
    32  		if runtime.GOARCH != "amd64" {
    33  			Skip("ccenv-1.4 image may not be available for this platform")
    34  		}
    35  		var err error
    36  		testDir, err = ioutil.TempDir("", "lifecycle")
    37  		Expect(err).NotTo(HaveOccurred())
    38  
    39  		client, err = docker.NewClientFromEnv()
    40  		Expect(err).NotTo(HaveOccurred())
    41  
    42  		network = nwo.New(nwo.BasicSolo(), testDir, client, StartPort(), components)
    43  		network.GenerateConfigTree()
    44  		for _, peer := range network.PeersWithChannel("testchannel") {
    45  			core := network.ReadPeerConfig(peer)
    46  			core.Chaincode.Builder = "$(DOCKER_NS)/fabric-ccenv:1.4"
    47  			network.WritePeerConfig(peer, core)
    48  		}
    49  		network.Bootstrap()
    50  
    51  		networkRunner := network.NetworkGroupRunner()
    52  		process = ifrit.Invoke(networkRunner)
    53  		Eventually(process.Ready(), network.EventuallyTimeout).Should(BeClosed())
    54  	})
    55  
    56  	AfterEach(func() {
    57  		// Shutdown processes and cleanup
    58  		process.Signal(syscall.SIGTERM)
    59  		Eventually(process.Wait(), network.EventuallyTimeout).Should(Receive())
    60  		network.Cleanup()
    61  
    62  		os.RemoveAll(testDir)
    63  	})
    64  
    65  	It("deploys and executes chaincode (simple)", func() {
    66  		By("deploying the chaincode using LSCC on a channel with V1_4 application capabilities")
    67  		orderer := network.Orderer("orderer")
    68  		endorsers := []*nwo.Peer{
    69  			network.Peer("Org1", "peer0"),
    70  			network.Peer("Org2", "peer0"),
    71  		}
    72  
    73  		cwd, err := os.Getwd()
    74  		Expect(err).NotTo(HaveOccurred())
    75  
    76  		// The chaincode in the CDS file for this test was packaged using
    77  		// the cli container created via the docker-compose.yaml in this directory.
    78  		// At the time of packaging, hyperledger/fabric-tools:1.4 had
    79  		// image id '18ed4db0cd57'.
    80  		//
    81  		// It was packaged using the following command:
    82  		// peer chaincode package --name mycc --version 0.0 --lang golang --path github.com/chaincode/simple-v14 mycc-0_0-v14.cds
    83  		chaincode := nwo.Chaincode{
    84  			Name:        "mycc",
    85  			Version:     "0.0",
    86  			PackageFile: filepath.Join(cwd, "testdata/mycc-0_0-v14.cds"),
    87  			Ctor:        `{"Args":["init","a","100","b","200"]}`,
    88  			Policy:      `AND ('Org1MSP.member','Org2MSP.member')`,
    89  		}
    90  
    91  		network.CreateAndJoinChannels(orderer)
    92  		nwo.DeployChaincodeLegacy(network, "testchannel", orderer, chaincode)
    93  		RunQueryInvokeQuery(network, orderer, "mycc", 100, endorsers...)
    94  	})
    95  })