github.com/kiali/kiali@v1.84.0/graph/telemetry/istio/util/util_test.go (about)

     1  package util
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  
     8  	"github.com/kiali/kiali/config"
     9  )
    10  
    11  func TestAddScopeNoScope(t *testing.T) {
    12  	conf := config.NewConfig()
    13  	conf.ExternalServices.Prometheus.QueryScope = map[string]string{}
    14  	config.Set(conf)
    15  
    16  	query := `sum(rate(istio_requests_total{reporter="destination",destination_workload_namespace="bookinfo"} [600s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,destination_cluster,destination_service_namespace,destination_service,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,request_protocol,response_code,grpc_response_status,response_flags)`
    17  	scopedQuery := AddQueryScope(query)
    18  
    19  	assert.Equal(t, query, scopedQuery)
    20  }
    21  
    22  func TestAddScopeOneLabel(t *testing.T) {
    23  	conf := config.NewConfig()
    24  	conf.ExternalServices.Prometheus.QueryScope = map[string]string{"mesh_id": "mesh1"}
    25  	config.Set(conf)
    26  
    27  	query := `sum(rate(istio_requests_total{reporter="destination",destination_workload_namespace="bookinfo"} [600s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,destination_cluster,destination_service_namespace,destination_service,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,request_protocol,response_code,grpc_response_status,response_flags)`
    28  	scopedQuery := AddQueryScope(query)
    29  	expected := `sum(rate(istio_requests_total{mesh_id="mesh1",reporter="destination",destination_workload_namespace="bookinfo"} [600s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,destination_cluster,destination_service_namespace,destination_service,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,request_protocol,response_code,grpc_response_status,response_flags)`
    30  	assert.Equal(t, expected, scopedQuery)
    31  }
    32  
    33  func TestAddScopeMultiLabel(t *testing.T) {
    34  	conf := config.NewConfig()
    35  	conf.ExternalServices.Prometheus.QueryScope = map[string]string{"mesh_id": "mesh1", "cluster": "cluster1"}
    36  	config.Set(conf)
    37  
    38  	query := `sum(rate(istio_requests_total{reporter="destination",destination_workload_namespace="bookinfo"} [600s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,destination_cluster,destination_service_namespace,destination_service,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,request_protocol,response_code,grpc_response_status,response_flags)`
    39  	scopedQuery := AddQueryScope(query)
    40  	expected := `sum(rate(istio_requests_total{mesh_id="mesh1",cluster="cluster1",reporter="destination",destination_workload_namespace="bookinfo"} [600s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,destination_cluster,destination_service_namespace,destination_service,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,request_protocol,response_code,grpc_response_status,response_flags)`
    41  	if expected != scopedQuery {
    42  		// Maps are unordered so check both permutations that the labels could've been set in.
    43  		expected = `sum(rate(istio_requests_total{cluster="cluster1",mesh_id="mesh1",reporter="destination",destination_workload_namespace="bookinfo"} [600s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,destination_cluster,destination_service_namespace,destination_service,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,request_protocol,response_code,grpc_response_status,response_flags)`
    44  		assert.Equal(t, expected, scopedQuery)
    45  	}
    46  }
    47  
    48  func TestAddScopeMultiSegment(t *testing.T) {
    49  	conf := config.NewConfig()
    50  	conf.ExternalServices.Prometheus.QueryScope = map[string]string{"mesh_id": "mesh1"}
    51  	config.Set(conf)
    52  
    53  	query := `sum(rate(istio_requests_total{reporter="destination",source_workload_namespace!="bookinfo",destination_service_namespace="bookinfo"}[60s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,source_principal,destination_cluster,destination_service_namespace,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,destination_principal,connection_security_policy) > 0) OR (sum(rate(istio_tcp_sent_bytes_total{reporter="destination",source_workload_namespace!="bookinfo",destination_service_namespace="bookinfo"}[60s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,source_principal,destination_cluster,destination_service_namespace,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,destination_principal,connection_security_policy) > 0)`
    54  	scopedQuery := AddQueryScope(query)
    55  	expected := `sum(rate(istio_requests_total{mesh_id="mesh1",reporter="destination",source_workload_namespace!="bookinfo",destination_service_namespace="bookinfo"}[60s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,source_principal,destination_cluster,destination_service_namespace,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,destination_principal,connection_security_policy) > 0) OR (sum(rate(istio_tcp_sent_bytes_total{mesh_id="mesh1",reporter="destination",source_workload_namespace!="bookinfo",destination_service_namespace="bookinfo"}[60s])) by (source_cluster,source_workload_namespace,source_workload,source_canonical_service,source_canonical_revision,source_principal,destination_cluster,destination_service_namespace,destination_service_name,destination_workload_namespace,destination_workload,destination_canonical_service,destination_canonical_revision,destination_principal,connection_security_policy) > 0)`
    56  	assert.Equal(t, expected, scopedQuery)
    57  }