github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/confighistory/confighistorytest/confighistory.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package confighistorytest
     8  
     9  import (
    10  	"github.com/hechain20/hechain/core/ledger"
    11  	"github.com/hechain20/hechain/core/ledger/confighistory"
    12  	"github.com/hechain20/hechain/core/ledger/mock"
    13  	"github.com/hyperledger/fabric-protos-go/peer"
    14  )
    15  
    16  type Mgr struct {
    17  	*confighistory.Mgr
    18  	MockCCInfoProvider *mock.DeployedChaincodeInfoProvider
    19  }
    20  
    21  func NewMgr(dbPath string) (*Mgr, error) {
    22  	mockCCInfoProvider := &mock.DeployedChaincodeInfoProvider{}
    23  	configHistory, err := confighistory.NewMgr(dbPath, mockCCInfoProvider)
    24  	if err != nil {
    25  		return nil, err
    26  	}
    27  	return &Mgr{
    28  		Mgr:                configHistory,
    29  		MockCCInfoProvider: mockCCInfoProvider,
    30  	}, nil
    31  }
    32  
    33  func (m *Mgr) Setup(ledgerID, namespace string, configHistory map[uint64][]*peer.StaticCollectionConfig) error {
    34  	for committingBlk, config := range configHistory {
    35  		m.MockCCInfoProvider.UpdatedChaincodesReturns(
    36  			[]*ledger.ChaincodeLifecycleInfo{
    37  				{
    38  					Name: namespace,
    39  				},
    40  			}, nil,
    41  		)
    42  
    43  		m.MockCCInfoProvider.ChaincodeInfoReturns(
    44  			&ledger.DeployedChaincodeInfo{
    45  				Name:                        namespace,
    46  				ExplicitCollectionConfigPkg: BuildCollConfigPkg(config),
    47  			},
    48  			nil,
    49  		)
    50  
    51  		err := m.HandleStateUpdates(
    52  			&ledger.StateUpdateTrigger{
    53  				LedgerID:           ledgerID,
    54  				CommittingBlockNum: committingBlk,
    55  			},
    56  		)
    57  		defer m.StateCommitDone(ledgerID)
    58  		if err != nil {
    59  			return err
    60  		}
    61  	}
    62  	return nil
    63  }
    64  
    65  func (m *Mgr) Close() {
    66  	m.Mgr.Close()
    67  }
    68  
    69  func BuildCollConfigPkg(staticCollectionConfigs []*peer.StaticCollectionConfig) *peer.CollectionConfigPackage {
    70  	if len(staticCollectionConfigs) == 0 {
    71  		return nil
    72  	}
    73  	pkg := &peer.CollectionConfigPackage{
    74  		Config: []*peer.CollectionConfig{},
    75  	}
    76  	for _, c := range staticCollectionConfigs {
    77  		pkg.Config = append(pkg.Config,
    78  			&peer.CollectionConfig{
    79  				Payload: &peer.CollectionConfig_StaticCollectionConfig{
    80  					StaticCollectionConfig: c,
    81  				},
    82  			},
    83  		)
    84  	}
    85  	return pkg
    86  }