github.com/blend/go-sdk@v1.20220411.3/stats/redisstats/listeners_test.go (about) 1 /* 2 3 Copyright (c) 2022 - Present. Blend Labs, Inc. All rights reserved 4 Use of this source code is governed by a MIT license that can be found in the LICENSE file. 5 6 */ 7 8 package redisstats 9 10 import ( 11 "context" 12 "io" 13 "testing" 14 "time" 15 16 "github.com/blend/go-sdk/assert" 17 "github.com/blend/go-sdk/logger" 18 "github.com/blend/go-sdk/redis" 19 "github.com/blend/go-sdk/stats" 20 ) 21 22 func TestAddListeners(t *testing.T) { 23 assert := assert.New(t) 24 25 log := logger.None() 26 AddListeners(nil, nil) 27 assert.False(log.HasListener(redis.Flag, stats.ListenerNameStats)) 28 AddListeners(log, stats.NewMockCollector(32)) 29 assert.True(log.HasListener(redis.Flag, stats.ListenerNameStats)) 30 } 31 32 func TestAddListenersStats(t *testing.T) { 33 assert := assert.New(t) 34 35 log := logger.All(logger.OptOutput(io.Discard)) 36 defer log.Close() 37 collector := stats.NewMockCollector(32) 38 39 AddListeners(log, collector) 40 41 log.TriggerContext(context.Background(), redis.NewEvent("GET", []string{"foo"}, 250*time.Millisecond, 42 redis.OptEventNetwork(redis.DefaultNetwork), 43 redis.OptEventAddr(redis.DefaultAddr), 44 redis.OptEventAuthUser("system"), 45 )) 46 47 m := <-collector.Metrics 48 assert.Equal(MetricName, m.Name) 49 assert.Equal(1, m.Count) 50 assert.NotEmpty(m.Tags) 51 52 m = <-collector.Metrics 53 assert.Equal(MetricNameElapsedLast, m.Name) 54 assert.Equal(250, m.Gauge) 55 assert.NotEmpty(m.Tags) 56 57 m = <-collector.Metrics 58 assert.Equal(MetricNameElapsed, m.Name) 59 assert.Equal(250, m.Histogram) 60 assert.NotEmpty(m.Tags) 61 }