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 }