117 lines
3.9 KiB
Go
117 lines
3.9 KiB
Go
/*
|
|
Copyright IBM Corp. All Rights Reserved.
|
|
|
|
SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
package etcdraft_test
|
|
|
|
import (
|
|
"github.com/hyperledger/fabric/common/metrics/metricsfakes"
|
|
"github.com/hyperledger/fabric/orderer/consensus/etcdraft"
|
|
. "github.com/onsi/ginkgo/v2"
|
|
. "github.com/onsi/gomega"
|
|
)
|
|
|
|
var _ = Describe("Metrics", func() {
|
|
Context("NewMetrics", func() {
|
|
var (
|
|
fakeProvider *metricsfakes.Provider
|
|
fakeGauge *metricsfakes.Gauge
|
|
fakeCounter *metricsfakes.Counter
|
|
fakeHistogram *metricsfakes.Histogram
|
|
)
|
|
|
|
BeforeEach(func() {
|
|
fakeProvider = &metricsfakes.Provider{}
|
|
fakeGauge = &metricsfakes.Gauge{}
|
|
fakeCounter = &metricsfakes.Counter{}
|
|
fakeHistogram = &metricsfakes.Histogram{}
|
|
|
|
fakeProvider.NewGaugeReturns(fakeGauge)
|
|
fakeProvider.NewCounterReturns(fakeCounter)
|
|
fakeProvider.NewHistogramReturns(fakeHistogram)
|
|
})
|
|
|
|
It("uses the provider to initialize a new Metrics object", func() {
|
|
metrics := etcdraft.NewMetrics(fakeProvider)
|
|
|
|
Expect(metrics).NotTo(BeNil())
|
|
Expect(fakeProvider.NewGaugeCallCount()).To(Equal(5))
|
|
Expect(fakeProvider.NewCounterCallCount()).To(Equal(4))
|
|
Expect(fakeProvider.NewHistogramCallCount()).To(Equal(1))
|
|
|
|
Expect(metrics.ClusterSize).To(Equal(fakeGauge))
|
|
Expect(metrics.IsLeader).To(Equal(fakeGauge))
|
|
Expect(metrics.CommittedBlockNumber).To(Equal(fakeGauge))
|
|
Expect(metrics.SnapshotBlockNumber).To(Equal(fakeGauge))
|
|
Expect(metrics.LeaderChanges).To(Equal(fakeCounter))
|
|
Expect(metrics.ProposalFailures).To(Equal(fakeCounter))
|
|
Expect(metrics.DataPersistDuration).To(Equal(fakeHistogram))
|
|
Expect(metrics.NormalProposalsReceived).To(Equal(fakeCounter))
|
|
Expect(metrics.ConfigProposalsReceived).To(Equal(fakeCounter))
|
|
})
|
|
})
|
|
})
|
|
|
|
func newFakeMetrics(fakeFields *fakeMetricsFields) *etcdraft.Metrics {
|
|
return &etcdraft.Metrics{
|
|
ClusterSize: fakeFields.fakeClusterSize,
|
|
IsLeader: fakeFields.fakeIsLeader,
|
|
ActiveNodes: fakeFields.fakeActiveNodes,
|
|
CommittedBlockNumber: fakeFields.fakeCommittedBlockNumber,
|
|
SnapshotBlockNumber: fakeFields.fakeSnapshotBlockNumber,
|
|
LeaderChanges: fakeFields.fakeLeaderChanges,
|
|
ProposalFailures: fakeFields.fakeProposalFailures,
|
|
DataPersistDuration: fakeFields.fakeDataPersistDuration,
|
|
NormalProposalsReceived: fakeFields.fakeNormalProposalsReceived,
|
|
ConfigProposalsReceived: fakeFields.fakeConfigProposalsReceived,
|
|
}
|
|
}
|
|
|
|
type fakeMetricsFields struct {
|
|
fakeClusterSize *metricsfakes.Gauge
|
|
fakeIsLeader *metricsfakes.Gauge
|
|
fakeActiveNodes *metricsfakes.Gauge
|
|
fakeCommittedBlockNumber *metricsfakes.Gauge
|
|
fakeSnapshotBlockNumber *metricsfakes.Gauge
|
|
fakeLeaderChanges *metricsfakes.Counter
|
|
fakeProposalFailures *metricsfakes.Counter
|
|
fakeDataPersistDuration *metricsfakes.Histogram
|
|
fakeNormalProposalsReceived *metricsfakes.Counter
|
|
fakeConfigProposalsReceived *metricsfakes.Counter
|
|
}
|
|
|
|
func newFakeMetricsFields() *fakeMetricsFields {
|
|
return &fakeMetricsFields{
|
|
fakeClusterSize: newFakeGauge(),
|
|
fakeIsLeader: newFakeGauge(),
|
|
fakeActiveNodes: newFakeGauge(),
|
|
fakeCommittedBlockNumber: newFakeGauge(),
|
|
fakeSnapshotBlockNumber: newFakeGauge(),
|
|
fakeLeaderChanges: newFakeCounter(),
|
|
fakeProposalFailures: newFakeCounter(),
|
|
fakeDataPersistDuration: newFakeHistogram(),
|
|
fakeNormalProposalsReceived: newFakeCounter(),
|
|
fakeConfigProposalsReceived: newFakeCounter(),
|
|
}
|
|
}
|
|
|
|
func newFakeGauge() *metricsfakes.Gauge {
|
|
fakeGauge := &metricsfakes.Gauge{}
|
|
fakeGauge.WithReturns(fakeGauge)
|
|
return fakeGauge
|
|
}
|
|
|
|
func newFakeCounter() *metricsfakes.Counter {
|
|
fakeCounter := &metricsfakes.Counter{}
|
|
fakeCounter.WithReturns(fakeCounter)
|
|
return fakeCounter
|
|
}
|
|
|
|
func newFakeHistogram() *metricsfakes.Histogram {
|
|
fakeHistogram := &metricsfakes.Histogram{}
|
|
fakeHistogram.WithReturns(fakeHistogram)
|
|
return fakeHistogram
|
|
}
|