github.com/lzy4123/fabric@v2.1.1+incompatible/orderer/consensus/etcdraft/metrics_test.go (about) 1 /* 2 Copyright IBM Corp. All Rights Reserved. 3 4 SPDX-License-Identifier: Apache-2.0 5 */ 6 7 package etcdraft_test 8 9 import ( 10 "github.com/hyperledger/fabric/common/metrics/metricsfakes" 11 "github.com/hyperledger/fabric/orderer/consensus/etcdraft" 12 . "github.com/onsi/ginkgo" 13 . "github.com/onsi/gomega" 14 ) 15 16 var _ = Describe("Metrics", func() { 17 Context("NewMetrics", func() { 18 var ( 19 fakeProvider *metricsfakes.Provider 20 fakeGauge *metricsfakes.Gauge 21 fakeCounter *metricsfakes.Counter 22 fakeHistogram *metricsfakes.Histogram 23 ) 24 25 BeforeEach(func() { 26 fakeProvider = &metricsfakes.Provider{} 27 fakeGauge = &metricsfakes.Gauge{} 28 fakeCounter = &metricsfakes.Counter{} 29 fakeHistogram = &metricsfakes.Histogram{} 30 31 fakeProvider.NewGaugeReturns(fakeGauge) 32 fakeProvider.NewCounterReturns(fakeCounter) 33 fakeProvider.NewHistogramReturns(fakeHistogram) 34 }) 35 36 It("uses the provider to initialize a new Metrics object", func() { 37 metrics := etcdraft.NewMetrics(fakeProvider) 38 39 Expect(metrics).NotTo(BeNil()) 40 Expect(fakeProvider.NewGaugeCallCount()).To(Equal(5)) 41 Expect(fakeProvider.NewCounterCallCount()).To(Equal(4)) 42 Expect(fakeProvider.NewHistogramCallCount()).To(Equal(1)) 43 44 Expect(metrics.ClusterSize).To(Equal(fakeGauge)) 45 Expect(metrics.IsLeader).To(Equal(fakeGauge)) 46 Expect(metrics.CommittedBlockNumber).To(Equal(fakeGauge)) 47 Expect(metrics.SnapshotBlockNumber).To(Equal(fakeGauge)) 48 Expect(metrics.LeaderChanges).To(Equal(fakeCounter)) 49 Expect(metrics.ProposalFailures).To(Equal(fakeCounter)) 50 Expect(metrics.DataPersistDuration).To(Equal(fakeHistogram)) 51 Expect(metrics.NormalProposalsReceived).To(Equal(fakeCounter)) 52 Expect(metrics.ConfigProposalsReceived).To(Equal(fakeCounter)) 53 }) 54 }) 55 }) 56 57 func newFakeMetrics(fakeFields *fakeMetricsFields) *etcdraft.Metrics { 58 return &etcdraft.Metrics{ 59 ClusterSize: fakeFields.fakeClusterSize, 60 IsLeader: fakeFields.fakeIsLeader, 61 ActiveNodes: fakeFields.fakeActiveNodes, 62 CommittedBlockNumber: fakeFields.fakeCommittedBlockNumber, 63 SnapshotBlockNumber: fakeFields.fakeSnapshotBlockNumber, 64 LeaderChanges: fakeFields.fakeLeaderChanges, 65 ProposalFailures: fakeFields.fakeProposalFailures, 66 DataPersistDuration: fakeFields.fakeDataPersistDuration, 67 NormalProposalsReceived: fakeFields.fakeNormalProposalsReceived, 68 ConfigProposalsReceived: fakeFields.fakeConfigProposalsReceived, 69 } 70 } 71 72 type fakeMetricsFields struct { 73 fakeClusterSize *metricsfakes.Gauge 74 fakeIsLeader *metricsfakes.Gauge 75 fakeActiveNodes *metricsfakes.Gauge 76 fakeCommittedBlockNumber *metricsfakes.Gauge 77 fakeSnapshotBlockNumber *metricsfakes.Gauge 78 fakeLeaderChanges *metricsfakes.Counter 79 fakeProposalFailures *metricsfakes.Counter 80 fakeDataPersistDuration *metricsfakes.Histogram 81 fakeNormalProposalsReceived *metricsfakes.Counter 82 fakeConfigProposalsReceived *metricsfakes.Counter 83 } 84 85 func newFakeMetricsFields() *fakeMetricsFields { 86 return &fakeMetricsFields{ 87 fakeClusterSize: newFakeGauge(), 88 fakeIsLeader: newFakeGauge(), 89 fakeActiveNodes: newFakeGauge(), 90 fakeCommittedBlockNumber: newFakeGauge(), 91 fakeSnapshotBlockNumber: newFakeGauge(), 92 fakeLeaderChanges: newFakeCounter(), 93 fakeProposalFailures: newFakeCounter(), 94 fakeDataPersistDuration: newFakeHistogram(), 95 fakeNormalProposalsReceived: newFakeCounter(), 96 fakeConfigProposalsReceived: newFakeCounter(), 97 } 98 } 99 100 func newFakeGauge() *metricsfakes.Gauge { 101 fakeGauge := &metricsfakes.Gauge{} 102 fakeGauge.WithReturns(fakeGauge) 103 return fakeGauge 104 } 105 106 func newFakeCounter() *metricsfakes.Counter { 107 fakeCounter := &metricsfakes.Counter{} 108 fakeCounter.WithReturns(fakeCounter) 109 return fakeCounter 110 } 111 112 func newFakeHistogram() *metricsfakes.Histogram { 113 fakeHistogram := &metricsfakes.Histogram{} 114 fakeHistogram.WithReturns(fakeHistogram) 115 return fakeHistogram 116 }