github.com/hechain20/hechain@v0.0.0-20220316014945-b544036ba106/core/ledger/kvledger/txmgmt/statedb/statecouchdb/metrics_test.go (about)

     1  /*
     2  Copyright hechain. All Rights Reserved.
     3  
     4  SPDX-License-Identifier: Apache-2.0
     5  */
     6  
     7  package statecouchdb
     8  
     9  import (
    10  	"context"
    11  	"net/http"
    12  	"net/url"
    13  	"testing"
    14  
    15  	"github.com/hechain20/hechain/common/metrics/disabled"
    16  	"github.com/hechain20/hechain/common/metrics/metricsfakes"
    17  	. "github.com/onsi/gomega"
    18  )
    19  
    20  func TestAPIProcessTimeMetric(t *testing.T) {
    21  	gt := NewGomegaWithT(t)
    22  	fakeHistogram := &metricsfakes.Histogram{}
    23  	fakeHistogram.WithReturns(fakeHistogram)
    24  
    25  	// create a new couch instance
    26  	config := testConfig()
    27  	couchDBEnv.startCouchDB(t)
    28  	config.Address = couchDBEnv.couchAddress
    29  	defer couchDBEnv.cleanup(config)
    30  	defaultMaxRetries := config.MaxRetries
    31  	config.MaxRetries = 0
    32  	couchInstance, err := createCouchInstance(config, &disabled.Provider{})
    33  	gt.Expect(err).NotTo(HaveOccurred(), "Error when trying to create couch instance")
    34  
    35  	couchInstance.stats = &stats{
    36  		apiProcessingTime: fakeHistogram,
    37  	}
    38  
    39  	url, err := url.Parse("http://locahost:0")
    40  	gt.Expect(err).NotTo(HaveOccurred(), "Error when trying to parse URL")
    41  
    42  	couchInstance.handleRequest(context.Background(), http.MethodGet, "db_name", "function_name", url, nil, "", "", 0, true, nil)
    43  	gt.Expect(fakeHistogram.ObserveCallCount()).To(Equal(1))
    44  	gt.Expect(fakeHistogram.ObserveArgsForCall(0)).NotTo(BeZero())
    45  	gt.Expect(fakeHistogram.WithArgsForCall(0)).To(Equal([]string{
    46  		"database", "db_name",
    47  		"function_name", "function_name",
    48  		"result", "0",
    49  	}))
    50  	config.MaxRetries = defaultMaxRetries
    51  }