...

Source file src/github.com/cybertec-postgresql/pgwatch/v6/internal/metrics/default_test.go

Documentation: github.com/cybertec-postgresql/pgwatch/v6/internal/metrics

     1  package metrics_test
     2  
     3  import (
     4  	"context"
     5  	"errors"
     6  	"testing"
     7  
     8  	"github.com/cybertec-postgresql/pgwatch/v6/internal/metrics"
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestGetDefaultBuiltInMetrics(t *testing.T) {
    13  	expectedMetrics := []string{"sproc_changes", "table_changes", "index_changes", "privilege_changes", "object_changes", "configuration_changes"}
    14  	metrics := metrics.GetDefaultBuiltInMetrics()
    15  	assert.Equal(t, expectedMetrics, metrics, "The default built-in metrics should match the expected list")
    16  }
    17  
    18  func TestNewDefaultMetricReader(t *testing.T) {
    19  	reader, err := metrics.NewDefaultMetricReader(context.Background())
    20  	assert.NoError(t, err, "Creating a new default metric reader should not produce an error")
    21  	assert.NotNil(t, reader, "The metric reader should not be nil")
    22  }
    23  
    24  func TestDefaultMetricReaderUnsupportedOperations(t *testing.T) {
    25  	reader, _ := metrics.NewDefaultMetricReader(context.Background())
    26  	err := reader.WriteMetrics(nil)
    27  	assert.Equal(t, errors.ErrUnsupported, err, "WriteMetrics should return ErrUnsupported")
    28  
    29  	err = reader.DeleteMetric("")
    30  	assert.Equal(t, errors.ErrUnsupported, err, "DeleteMetric should return ErrUnsupported")
    31  
    32  	err = reader.UpdateMetric("", metrics.Metric{})
    33  	assert.Equal(t, errors.ErrUnsupported, err, "UpdateMetric should return ErrUnsupported")
    34  
    35  	err = reader.DeletePreset("")
    36  	assert.Equal(t, errors.ErrUnsupported, err, "DeletePreset should return ErrUnsupported")
    37  
    38  	err = reader.UpdatePreset("", metrics.Preset{})
    39  	assert.Equal(t, errors.ErrUnsupported, err, "UpdatePreset should return ErrUnsupported")
    40  
    41  	metrics, err := reader.GetMetrics()
    42  	assert.NotNil(t, metrics, "The metrics object should not be nil")
    43  	assert.NoError(t, err, "GetMetrics should return default metrics")
    44  }
    45  
    46  // T047: preset postgres-exporter-basic is resolvable and contains the required metric families.
    47  func TestDefaultMetrics_PostgresExporterBasicPreset(t *testing.T) {
    48  	m := metrics.GetDefaultMetrics()
    49  	if !assert.NotNil(t, m, "GetDefaultMetrics must not return nil") {
    50  		return
    51  	}
    52  
    53  	preset, ok := m.PresetDefs["postgres-exporter-basic"]
    54  	if !assert.True(t, ok, "preset 'postgres-exporter-basic' must exist in default metrics") {
    55  		return
    56  	}
    57  
    58  	requiredFamilies := []string{
    59  		"pg_stat_activity_count",
    60  		"pg_stat_bgwriter_checkpoints_timed",
    61  		"pg_stat_replication_pg_wal_lsn_diff",
    62  	}
    63  	for _, family := range requiredFamilies {
    64  		assert.Contains(t, preset.Metrics, family,
    65  			"preset 'postgres-exporter-basic' must include metric family %q", family)
    66  	}
    67  }
    68