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 }