github.com/true-sqn/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  }