Skip to content

Commit ee5ff49

Browse files
author
Jason Yellick
committed
[FAB-1944] Part 2: Remove unused utils methods
https://jira.hyperledger.org/browse/FAB-1944 This is part of an ongoing series intended to remove cruft from the protos/utils package. This one in particular removes functions which were largely not being used, or only had one user and were too generic. More to be slashed from this package in the future. Change-Id: I6d1dd38b055cb33ea5c817c0dc9a7a68f39f56a6 Signed-off-by: Jason Yellick <[email protected]>
1 parent fda7f99 commit ee5ff49

File tree

5 files changed

+17
-238
lines changed

5 files changed

+17
-238
lines changed

core/peer/peer.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -154,7 +154,7 @@ func getCurrConfigBlockFromLedger(ledger ledger.PeerLedger) (*common.Block, erro
154154
// createChain creates a new chain object and insert it into the chains
155155
func createChain(cid string, ledger ledger.PeerLedger, cb *common.Block) error {
156156

157-
configEnvelope, _, err := utils.BreakOutBlockToConfigurationEnvelope(cb)
157+
configEnvelope, err := utils.BreakOutBlockToConfigurationEnvelope(cb)
158158
if err != nil {
159159
return err
160160
}

protos/utils/blockutils.go

+8-49
Original file line numberDiff line numberDiff line change
@@ -119,38 +119,7 @@ func InitBlockMetadata(block *cb.Block) {
119119
}
120120
}
121121

122-
const (
123-
AnchorPeerConfItemKey = "AnchorPeers"
124-
epoch = uint64(0)
125-
messageVersion = int32(1)
126-
lastModified = uint64(0)
127-
mspKey = "MSP"
128-
xxxDefaultModificationPolicyID = "DefaultModificationPolicy" // Break an import cycle during work to remove the below configtx construction methods
129-
)
130-
131-
func createConfigItem(chainID string,
132-
configItemKey string,
133-
configItemValue []byte,
134-
modPolicy string, configItemType cb.ConfigurationItem_ConfigurationType) *cb.ConfigurationItem {
135-
136-
ciChainHeader := MakeChainHeader(cb.HeaderType_CONFIGURATION_ITEM,
137-
messageVersion, chainID, epoch)
138-
configItem := MakeConfigurationItem(ciChainHeader,
139-
configItemType, lastModified, modPolicy,
140-
configItemKey, configItemValue)
141-
142-
return configItem
143-
}
144-
145-
func createSignedConfigItem(chainID string,
146-
configItemKey string,
147-
configItemValue []byte,
148-
modPolicy string, configItemType cb.ConfigurationItem_ConfigurationType) *cb.SignedConfigurationItem {
149-
configItem := createConfigItem(chainID, configItemKey, configItemValue, modPolicy, configItemType)
150-
return &cb.SignedConfigurationItem{
151-
ConfigurationItem: MarshalOrPanic(configItem),
152-
Signatures: nil}
153-
}
122+
const xxxDefaultModificationPolicyID = "DefaultModificationPolicy" // Break an import cycle during work to remove the below configtx construction methods
154123

155124
// GetTESTMSPConfigPath This function is needed to locate the MSP test configuration when running
156125
// in CI build env or local with "make unit-test". A better way to manage this
@@ -171,25 +140,15 @@ func EncodeMSPUnsigned(chainID string) *cb.ConfigurationItem {
171140
if err != nil {
172141
panic(fmt.Sprintf("GetLocalMspConfig failed, err %s", err))
173142
}
174-
// TODO: once https://gerrit.hyperledger.org/r/#/c/3941 is merged, change this to MSP
175-
// Right now we don't have an MSP type there
176-
return createConfigItem(chainID,
177-
mspKey,
178-
MarshalOrPanic(conf),
179-
xxxDefaultModificationPolicyID, cb.ConfigurationItem_MSP)
143+
return &cb.ConfigurationItem{
144+
Type: cb.ConfigurationItem_MSP,
145+
Key: "DEFAULT", // XXX this should really be computed dynamically, but it's better than the old wrong "MSP"
146+
Value: MarshalOrPanic(conf),
147+
ModificationPolicy: xxxDefaultModificationPolicyID,
148+
}
180149
}
181150

182151
// EncodeMSP gets the signed configuration item with the default MSP
183152
func EncodeMSP(chainID string) *cb.SignedConfigurationItem {
184-
cfgPath := GetTESTMSPConfigPath()
185-
conf, err := msp.GetLocalMspConfig(cfgPath)
186-
if err != nil {
187-
panic(fmt.Sprintf("GetLocalMspConfig failed, err %s", err))
188-
}
189-
// TODO: once https://gerrit.hyperledger.org/r/#/c/3941 is merged, change this to MSP
190-
// Right now we don't have an MSP type there
191-
return createSignedConfigItem(chainID,
192-
mspKey,
193-
MarshalOrPanic(conf),
194-
xxxDefaultModificationPolicyID, cb.ConfigurationItem_MSP)
153+
return &cb.SignedConfigurationItem{ConfigurationItem: MarshalOrPanic(EncodeMSPUnsigned(chainID))}
195154
}

protos/utils/configtxutils.go

+6-57
Original file line numberDiff line numberDiff line change
@@ -24,12 +24,6 @@ import (
2424
"github.com/golang/protobuf/proto"
2525
)
2626

27-
// no need to break out block header as none of its parts are serialized
28-
29-
// no need to break out block metadata as it's just a byte slice
30-
31-
// no need to break Block into constituents. Nothing to unmarshall
32-
3327
// BreakOutBlockDataOrPanic executes BreakOutBlockData() but panics on error
3428
func BreakOutBlockDataOrPanic(blockData *pb.BlockData) ([]*pb.Payload, [][]byte) {
3529
payloads, envelopeSignatures, err := BreakOutBlockData(blockData)
@@ -92,68 +86,23 @@ func BreakOutPayloadDataToConfigurationEnvelope(payloadData []byte) (*pb.Configu
9286
return configEnvelope, nil
9387
} //BreakOutPayloadToConfigurationEnvelope
9488

95-
// BreakOutConfigEnvelopeToConfigItemsOrPanic calls BreakOutConfigEnvelopeToConfigItems() but panics on error
96-
func BreakOutConfigEnvelopeToConfigItemsOrPanic(configEnvelope *pb.ConfigurationEnvelope) ([]*pb.ConfigurationItem, [][]*pb.ConfigurationSignature) {
97-
configItems, configSignatures, err := BreakOutConfigEnvelopeToConfigItems(configEnvelope)
98-
if err != nil {
99-
panic(err)
100-
}
101-
return configItems, configSignatures
102-
} // BreakOutConfigEnvelopeToConfigItemsOrPanic
103-
104-
// BreakOutConfigEnvelopeToConfigItems decomposes a ConfigurationEnvelope to its constituent ConfigurationItems and ConfigurationSignatures
105-
// Note that a ConfigurationItem can have multiple signatures so each element in the returned ConfigurationItems slice is associated with a slice of ConfigurationSignatures
106-
func BreakOutConfigEnvelopeToConfigItems(configEnvelope *pb.ConfigurationEnvelope) ([]*pb.ConfigurationItem, [][]*pb.ConfigurationSignature, error) {
107-
if configEnvelope == nil {
108-
return nil, nil, fmt.Errorf("BreakOutConfigEnvelopeToConfigItems received null input\n")
109-
}
110-
111-
var configItems []*pb.ConfigurationItem
112-
var configSignatures [][]*pb.ConfigurationSignature
113-
114-
var err error
115-
var configItem *pb.ConfigurationItem
116-
for i, signedConfigItem := range configEnvelope.Items {
117-
configItem = &pb.ConfigurationItem{}
118-
err = proto.Unmarshal(signedConfigItem.ConfigurationItem, configItem)
119-
if err != nil {
120-
return nil, nil, fmt.Errorf("BreakOutConfigEnvelopToConfigItems cannot unmarshall signedConfigurationItem: %v\n", err)
121-
}
122-
configItems = append(configItems, configItem)
123-
for _, signedConfigItemSignature := range signedConfigItem.Signatures {
124-
configSignatures[i] = append(configSignatures[i], signedConfigItemSignature)
125-
}
126-
}
127-
128-
return configItems, configSignatures, nil
129-
} // BreakOutConfigEnvelopeToConfigItems
130-
131-
// BreakOutBlockToConfigurationEnvelopeOrPanic calls BreakOutBlockToConfigurationEnvelope() but panics on error
132-
func BreakOutBlockToConfigurationEnvelopeOrPanic(block *pb.Block) (*pb.ConfigurationEnvelope, []byte) {
133-
configEnvelope, envelopeSignature, err := BreakOutBlockToConfigurationEnvelope(block)
134-
if err != nil {
135-
panic(err)
136-
}
137-
return configEnvelope, envelopeSignature
138-
} // BreakOutBlockToConfigurationEnvelopeOrPanic
139-
14089
// BreakOutBlockToConfigurationEnvelope decomposes a configuration transaction Block to its ConfigurationEnvelope
141-
func BreakOutBlockToConfigurationEnvelope(block *pb.Block) (*pb.ConfigurationEnvelope, []byte, error) {
90+
func BreakOutBlockToConfigurationEnvelope(block *pb.Block) (*pb.ConfigurationEnvelope, error) {
14291
if block == nil || block.Data == nil || len(block.Data.Data) > 1 {
143-
return nil, nil, fmt.Errorf("Block.BlockData is not an array of 1. This is not a configuration transaction\n")
92+
return nil, fmt.Errorf("Block.BlockData is not an array of 1. This is not a configuration transaction\n")
14493
}
14594

146-
payloads, envelopeSignatures, _ := BreakOutBlockData(block.Data)
95+
payloads, _, _ := BreakOutBlockData(block.Data)
14796

14897
if payloads[0].Header.ChainHeader.Type != int32(pb.HeaderType_CONFIGURATION_TRANSACTION) {
149-
return nil, nil, fmt.Errorf("Payload Header type is not configuration_transaction. This is not a configuration transaction\n")
98+
return nil, fmt.Errorf("Payload Header type is not configuration_transaction. This is not a configuration transaction\n")
15099
}
151100
configEnvelope, err := BreakOutPayloadDataToConfigurationEnvelope(payloads[0].Data)
152101
if err != nil {
153-
return nil, nil, fmt.Errorf("Error breaking out configurationEnvelope: %v\n", err)
102+
return nil, fmt.Errorf("Error breaking out configurationEnvelope: %v\n", err)
154103
}
155104

156-
return configEnvelope, envelopeSignatures[0], nil
105+
return configEnvelope, nil
157106
} // BreakOutPayloadToConfigurationEnvelope
158107

159108
// UnmarshalConfigurationItemOrPanic unmarshals bytes to a ConfigurationItem or panics on error

protos/utils/configtxutils_test.go

+2-63
Original file line numberDiff line numberDiff line change
@@ -76,52 +76,16 @@ func TestBreakOutPayloadDataToConfigurationEnvelope(t *testing.T) {
7676
}
7777
} // TestBreakOutPayloadDataToConfigurationEnvelope
7878

79-
func TestBreakOutConfigEnvelopeToConfigItemsPanic(t *testing.T) {
80-
defer func() {
81-
if r := recover(); r == nil {
82-
t.Errorf("TestBreakOutConfigEnvelopeToConfigItemsPanic should have panicked")
83-
}
84-
}()
85-
_, _ = BreakOutConfigEnvelopeToConfigItemsOrPanic(nil)
86-
} // TestBreakOutConfigEnvelopeToConfigItemsPanic
87-
88-
func TestBreakOutConfigEnvelopeToConfigItemsBadData(t *testing.T) {
89-
_, _, err := BreakOutConfigEnvelopeToConfigItems(nil)
90-
if err == nil {
91-
t.Errorf("TestBreakOutConfigEnvelopeToConfigItemsBadData not handling nil input\n")
92-
}
93-
} // TestBreakOutConfigEnvelopeToConfigItemsBadData
94-
95-
func TestBreakOutConfigEnvelopeToConfigItems(t *testing.T) {
96-
configEnv := testConfigurationEnvelope()
97-
configItems, _, _ := BreakOutConfigEnvelopeToConfigItems(configEnv) // TODO: test signatures
98-
if len(configItems) != 1 {
99-
t.Errorf("TestBreakOutPayloadDataToConfigurationEnvelope did not return array of 1 config item\n")
100-
}
101-
if configItems[0].Type != pb.ConfigurationItem_Orderer || configItems[0].Key != "abc" || !bytes.Equal(configItems[0].Value, []byte("test")) {
102-
t.Errorf("TestBreakOutConfigEnvelopeToConfigItems configItem type,Key,Value do not match original %+v\n. Expected orderer, 'abc', 'test'", configItems[0])
103-
}
104-
} // TestBreakOutConfigEnvelopeToConfigItems
105-
106-
func TestBreakOutBlockToConfigurationEnvelopePanic(t *testing.T) {
107-
defer func() {
108-
if r := recover(); r == nil {
109-
t.Errorf("TestBreakOutBlockToConfigurationEnvelopePanic should have panicked")
110-
}
111-
}()
112-
_, _ = BreakOutBlockToConfigurationEnvelopeOrPanic(nil)
113-
} // TestBreakOutBlockToConfigurationEnvelopePanic
114-
11579
func TestBreakOutBlockToConfigurationEnvelopeBadData(t *testing.T) {
116-
_, _, err := BreakOutBlockToConfigurationEnvelope(nil)
80+
_, err := BreakOutBlockToConfigurationEnvelope(nil)
11781
if err == nil {
11882
t.Errorf("TestBreakOutBlockToConfigurationEnvelopeBadData should have rejected null input\n")
11983
}
12084
} // TestBreakOutBlockToConfigurationEnvelopeBadData
12185

12286
func TestBreakOutBlockToConfigurationEnvelope(t *testing.T) {
12387
block := testConfigurationBlock()
124-
configEnvelope, _, _ := BreakOutBlockToConfigurationEnvelope(block) // TODO: test envelope signature
88+
configEnvelope, _ := BreakOutBlockToConfigurationEnvelope(block) // TODO: test envelope signature
12589
if len(configEnvelope.Items) != 1 {
12690
t.Errorf("TestBreakOutBlockToConfigurationEnvelope should have an array of 1 signedConfigurationItems\n")
12791
}
@@ -147,31 +111,6 @@ func testPayloadHeader() *pb.Header {
147111
}
148112
}
149113

150-
/*
151-
func testPayload() *pb.Payload {
152-
return &pb.Payload{
153-
Header: testPayloadHeader(),
154-
Data: []byte("test"),
155-
}
156-
}
157-
158-
func testEnvelope() *pb.Envelope {
159-
// No need to set the signature
160-
payloadBytes, _ := proto.Marshal(testPayload())
161-
return &pb.Envelope{Payload: payloadBytes}
162-
}
163-
164-
func testBlock() *pb.Block {
165-
// No need to set the block's Header, or Metadata
166-
envelopeBytes, _ := proto.Marshal(testEnvelope())
167-
return &pb.Block{
168-
Data: &pb.BlockData{
169-
Data: [][]byte{envelopeBytes},
170-
},
171-
}
172-
}
173-
*/
174-
175114
func testPayloadConfigEnvelope() *pb.Payload {
176115
data, _ := proto.Marshal(testConfigurationEnvelope())
177116
return &pb.Payload{

protos/utils/configurationutils.go

-68
This file was deleted.

0 commit comments

Comments
 (0)