github.com/nilium/gitlab-runner@v12.5.0+incompatible/helpers/prometheus/failures_collector_test.go (about)

     1  package prometheus
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/prometheus/client_golang/prometheus"
     7  	prometheus_go "github.com/prometheus/client_model/go"
     8  	"github.com/stretchr/testify/assert"
     9  
    10  	"gitlab.com/gitlab-org/gitlab-runner/common"
    11  )
    12  
    13  func TestFailuresCollector_Collect_GroupingReasons(t *testing.T) {
    14  	ch := make(chan prometheus.Metric, 50)
    15  
    16  	fc := NewFailuresCollector()
    17  	fc.RecordFailure(common.ScriptFailure, "a1b2c3d4")
    18  	fc.RecordFailure(common.RunnerSystemFailure, "e5f67890")
    19  
    20  	fc.Collect(ch)
    21  	assert.Len(t, ch, 2)
    22  }
    23  
    24  func TestFailuresCollector_Collect_MetricsValues(t *testing.T) {
    25  	ch := make(chan prometheus.Metric, 50)
    26  
    27  	fc := NewFailuresCollector()
    28  	fc.RecordFailure(common.ScriptFailure, "a1b2c3d4")
    29  	fc.RecordFailure(common.ScriptFailure, "a1b2c3d4")
    30  
    31  	fc.Collect(ch)
    32  
    33  	metric := &prometheus_go.Metric{}
    34  	m := <-ch
    35  	m.Write(metric)
    36  
    37  	labels := make(map[string]string)
    38  	for _, labelPair := range metric.Label {
    39  		labels[*labelPair.Name] = *labelPair.Value
    40  	}
    41  
    42  	assert.Equal(t, float64(2), *metric.Counter.Value)
    43  	assert.Equal(t, string(common.ScriptFailure), labels["failure_reason"])
    44  	assert.Equal(t, "a1b2c3d4", labels["runner"])
    45  }