github.com/kiali/kiali@v1.84.0/business/metrics_labels_builder_test.go (about)

     1  package business
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/kiali/kiali/config"
     9  )
    10  
    11  func TestMetricsLabelsBuilderInboundHttp(t *testing.T) {
    12  	assert := assert.New(t)
    13  
    14  	lb := NewMetricsLabelsBuilder("inbound")
    15  	lb.App("test", "ns")
    16  	lb.Reporter("source")
    17  	lb.Protocol("http")
    18  	assert.Equal(`{destination_workload_namespace="ns",destination_canonical_service="test",reporter="source",request_protocol="http"}`, lb.Build())
    19  
    20  	errs := lb.BuildForErrors()
    21  	assert.Len(errs, 1)
    22  	assert.Equal(`{destination_workload_namespace="ns",destination_canonical_service="test",reporter="source",request_protocol="http",response_code=~"^0$|^[4-5]\\d\\d$"}`, errs[0])
    23  }
    24  
    25  func TestMetricsLabelsBuilderOutboundGrpc(t *testing.T) {
    26  	assert := assert.New(t)
    27  
    28  	lb := NewMetricsLabelsBuilder("outbound")
    29  	lb.Workload("test", "ns")
    30  	lb.Reporter("destination")
    31  	lb.Protocol("grpc")
    32  	assert.Equal(`{source_workload_namespace="ns",source_workload="test",reporter="destination",request_protocol="grpc"}`, lb.Build())
    33  
    34  	errs := lb.BuildForErrors()
    35  	assert.Len(errs, 2)
    36  	assert.Equal(`{source_workload_namespace="ns",source_workload="test",reporter="destination",request_protocol="grpc",response_code=~"^0$|^[4-5]\\d\\d$"}`, errs[0])
    37  	assert.Equal(`{source_workload_namespace="ns",source_workload="test",reporter="destination",request_protocol="grpc",grpc_response_status=~"^[1-9]$|^1[0-6]$",response_code!~"^0$|^[4-5]\\d\\d$"}`, errs[1])
    38  }
    39  
    40  func TestMetricsLabelsBuilderInboundPeerLabels(t *testing.T) {
    41  	assert := assert.New(t)
    42  
    43  	lb := NewMetricsLabelsBuilder("inbound")
    44  	lb.Service("test", "ns")
    45  	lb.PeerApp("peer", "ns2")
    46  	assert.Equal(`{destination_service_name="test",destination_service_namespace="ns",source_workload_namespace="ns2",source_canonical_service="peer"}`, lb.Build())
    47  }
    48  
    49  func TestMetricsLabelsBuilderOutboundPeerLabels(t *testing.T) {
    50  	assert := assert.New(t)
    51  
    52  	lb := NewMetricsLabelsBuilder("outbound")
    53  	lb.Workload("test", "ns")
    54  	lb.PeerService("peer", "ns2")
    55  	assert.Equal(`{source_workload_namespace="ns",source_workload="test",destination_service_name="peer",destination_service_namespace="ns2"}`, lb.Build())
    56  }
    57  
    58  func TestMetricsLabelsBuilderQueryScope(t *testing.T) {
    59  	testConfig := config.NewConfig()
    60  	testConfig.ExternalServices.Prometheus.QueryScope = map[string]string{"mesh_id": "mesh1"}
    61  	config.Set(testConfig)
    62  
    63  	assert := assert.New(t)
    64  
    65  	lb := NewMetricsLabelsBuilder("outbound")
    66  	lb.QueryScope()
    67  	lb.Workload("test", "ns")
    68  	lb.PeerService("peer", "ns2")
    69  	assert.Equal(`{mesh_id="mesh1",source_workload_namespace="ns",source_workload="test",destination_service_name="peer",destination_service_namespace="ns2"}`, lb.Build())
    70  }