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  }