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 }