Skip to content

Commit 7896a4e

Browse files
committed
Introduce support for MSP load generation
Signed-off-by: Liran Funaro <[email protected]>
1 parent 8dc504d commit 7896a4e

29 files changed

+381
-294
lines changed

cmd/config/app_config_test.go

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -379,20 +379,20 @@ func TestReadConfigLoadGen(t *testing.T) {
379379
Block: workload.BlockProfile{Size: 500},
380380
Transaction: workload.TransactionProfile{
381381
ReadWriteCount: workload.NewConstantDistribution(2),
382-
Policy: &workload.PolicyProfile{
383-
ChannelID: "mychannel",
384-
NamespacePolicies: map[string]*workload.Policy{
385-
workload.DefaultGeneratedNamespaceID: {
386-
Scheme: signature.Ecdsa, Seed: 10,
387-
},
388-
committerpb.MetaNamespaceID: {
389-
Scheme: signature.Ecdsa, Seed: 11,
390-
},
382+
},
383+
Policy: workload.PolicyProfile{
384+
ChannelID: "mychannel",
385+
NamespacePolicies: map[string]*workload.Policy{
386+
workload.DefaultGeneratedNamespaceID: {
387+
Scheme: signature.Ecdsa, Seed: 10,
391388
},
392-
OrdererEndpoints: []*commontypes.OrdererEndpoint{
393-
newOrdererEndpoint("org", "orderer"),
389+
committerpb.MetaNamespaceID: {
390+
Scheme: signature.Ecdsa, Seed: 11,
394391
},
395392
},
393+
OrdererEndpoints: []*commontypes.OrdererEndpoint{
394+
newOrdererEndpoint("org", "orderer"),
395+
},
396396
},
397397
Conflicts: workload.ConflictProfile{
398398
InvalidSignatures: 0.1,

cmd/config/samples/loadgen.yaml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,17 +48,17 @@ load-profile:
4848
transaction:
4949
read-write-count:
5050
const: 2
51-
policy:
52-
channel-id: mychannel
53-
namespace-policies:
54-
0:
55-
scheme: ECDSA
56-
seed: 10
57-
_meta:
58-
scheme: ECDSA
59-
seed: 11
60-
orderer-endpoints:
61-
- id=0,msp-id=org,broadcast,deliver,orderer:7050
51+
policy:
52+
channel-id: mychannel
53+
namespace-policies:
54+
0:
55+
scheme: ECDSA
56+
seed: 10
57+
_meta:
58+
scheme: ECDSA
59+
seed: 11
60+
orderer-endpoints:
61+
- id=0,msp-id=org,broadcast,deliver,orderer:7050
6262
conflicts:
6363
invalid-signatures: 0.1
6464
seed: 12345

cmd/config/templates/loadgen_common.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,15 +38,15 @@ load-profile:
3838
read-only-count:
3939
read-write-count:
4040
const: 2
41-
policy:
42-
channel-id: {{ .Policy.ChannelID }}
43-
namespace-policies:
44-
{{ range $nsID, $element := .Policy.NamespacePolicies }}
45-
{{ $nsID }}:
46-
scheme: {{ $element.Scheme }}
47-
seed: {{ $element.Seed }}
48-
{{ end }}
49-
config-block-path: {{ .ConfigBlockPath }}
41+
policy:
42+
channel-id: {{ .Policy.ChannelID }}
43+
namespace-policies:
44+
{{ range $nsID, $element := .Policy.NamespacePolicies }}
45+
{{ $nsID }}:
46+
scheme: {{ $element.Scheme }}
47+
seed: {{ $element.Seed }}
48+
{{ end }}
49+
config-block-path: {{ .ConfigBlockPath }}
5050
query:
5151
query-size:
5252
min-invalid-keys-portion:

cmd/loadgen/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func loadGenGenesisBlock() *cobra.Command {
100100
}
101101
cmd.SilenceUsage = true
102102

103-
block, err := workload.CreateConfigBlock(conf.LoadProfile.Transaction.Policy)
103+
block, err := workload.CreateConfigBlock(&conf.LoadProfile.Policy)
104104
if err != nil {
105105
return err
106106
}

docker/test/container_release_image_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ func TestCommitterReleaseImagesWithTLS(t *testing.T) {
8383
v := config.NewViperWithLoadGenDefaults()
8484
c, err := config.ReadLoadGenYamlAndSetupLogging(v, filepath.Join(localConfigPath, "loadgen.yaml"))
8585
require.NoError(t, err)
86-
configBlock, err := workload.CreateConfigBlock(c.LoadProfile.Transaction.Policy)
86+
c.LoadProfile.Policy.CryptoMaterialPath = t.TempDir()
87+
configBlock, err := workload.CreateConfigBlock(&c.LoadProfile.Policy)
8788
require.NoError(t, err)
8889
require.NoError(t, configtxgen.WriteOutputBlock(configBlock, configBlockPath))
8990

integration/runner/runtime.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,9 @@ func NewRuntime(t *testing.T, conf *Config) *CommitterRuntime {
135135
LoadGenBlockLimit: conf.LoadgenBlockLimit,
136136
LoadGenWorkers: 1,
137137
Policy: &workload.PolicyProfile{
138-
ChannelID: TestChannelName,
139-
NamespacePolicies: make(map[string]*workload.Policy),
138+
ChannelID: TestChannelName,
139+
NamespacePolicies: make(map[string]*workload.Policy),
140+
CryptoMaterialPath: t.TempDir(),
140141
},
141142
Logging: &logging.DefaultConfig,
142143
},

integration/test/config_update_test.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,8 @@ func TestConfigUpdate(t *testing.T) {
8686
lgMetaTx := c.TxBuilder.MakeTx(metaTx)
8787

8888
c.AddOrUpdateNamespaces(t, committerpb.MetaNamespaceID)
89-
metaPolicy := c.TxBuilder.TxEndorser.Policy(committerpb.MetaNamespaceID).VerificationPolicy()
89+
verPolicies := c.TxBuilder.TxEndorser.VerificationPolicies()
90+
metaPolicy := verPolicies[committerpb.MetaNamespaceID]
9091
submitConfigBlock := func(endpoints []*commontypes.OrdererEndpoint) {
9192
ordererEnv.SubmitConfigBlock(t, &workload.ConfigBlock{
9293
ChannelID: c.SystemConfig.Policy.ChannelID,

integration/test/namespace_lifecycle_test.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,9 +29,10 @@ func TestCreateUpdateNamespace(t *testing.T) {
2929
})
3030
c.Start(t, runner.FullTxPath)
3131

32-
policyBytesNs1, err := proto.Marshal(c.TxBuilder.TxEndorser.Policy("1").VerificationPolicy())
32+
verPolicies := c.TxBuilder.TxEndorser.VerificationPolicies()
33+
policyBytesNs1, err := proto.Marshal(verPolicies["1"])
3334
require.NoError(t, err)
34-
policyBytesNs2, err := proto.Marshal(c.TxBuilder.TxEndorser.Policy("2").VerificationPolicy())
35+
policyBytesNs2, err := proto.Marshal(verPolicies["2"])
3536
require.NoError(t, err)
3637

3738
tests := []struct {

loadgen/adapters/common.go

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@ import (
1212

1313
"github.com/cockroachdb/errors"
1414

15+
"github.com/hyperledger/fabric-protos-go-apiv2/common"
16+
1517
"github.com/hyperledger/fabric-x-committer/api/servicepb"
1618
"github.com/hyperledger/fabric-x-committer/loadgen/metrics"
1719
"github.com/hyperledger/fabric-x-committer/loadgen/workload"
@@ -23,10 +25,11 @@ import (
2325
type (
2426
// ClientResources holds client's pre-generated resources to be used by the adapters.
2527
ClientResources struct {
26-
Metrics *metrics.PerfMetrics
27-
Profile *workload.Profile
28-
Stream *workload.StreamOptions
29-
Limit *GenerateLimit
28+
Metrics *metrics.PerfMetrics
29+
Profile *workload.Profile
30+
Stream *workload.StreamOptions
31+
ConfigBlock *common.Block
32+
Limit *GenerateLimit
3033
}
3134

3235
// Phases specify the generation phases to enable.

loadgen/adapters/sidecar.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -28,11 +28,20 @@ type (
2828
)
2929

3030
// NewSidecarAdapter instantiate SidecarAdapter.
31-
func NewSidecarAdapter(config *SidecarClientConfig, res *ClientResources) *SidecarAdapter {
31+
func NewSidecarAdapter(config *SidecarClientConfig, res *ClientResources) (*SidecarAdapter, error) {
32+
// The sidecar adapter overwrite the orderer endpoints with its own.
33+
// We first pre-allocate the ports.
34+
for _, s := range config.OrdererServers {
35+
_, err := s.PreAllocateListener()
36+
if err != nil {
37+
return nil, err
38+
}
39+
}
40+
res.Profile.Policy.OrdererEndpoints = ordererconn.NewEndpoints(0, "msp", config.OrdererServers...)
3241
return &SidecarAdapter{
3342
commonAdapter: commonAdapter{res: res},
3443
config: config,
35-
}
44+
}, nil
3645
}
3746

3847
// RunWorkload applies load on the sidecar.
@@ -56,13 +65,7 @@ func (c *SidecarAdapter) RunWorkload(ctx context.Context, txStream *workload.Str
5665
})
5766

5867
// The sidecar adapter submits a config block manually.
59-
policy := *c.res.Profile.Transaction.Policy
60-
policy.OrdererEndpoints = ordererconn.NewEndpoints(0, "msp", c.config.OrdererServers...)
61-
configBlock, err := workload.CreateConfigBlock(&policy)
62-
if err != nil {
63-
return err
64-
}
65-
if err = orderer.SubmitBlock(ctx, configBlock); err != nil {
68+
if err = orderer.SubmitBlock(ctx, c.res.ConfigBlock); err != nil {
6669
return err
6770
}
6871
c.nextBlockNum.Add(1)

0 commit comments

Comments
 (0)