github.com/verrazzano/verrazzano@v1.7.1/application-operator/internal/metrics/service_monitor_test.go (about)

     1  // Copyright (c) 2022, 2023, Oracle and/or its affiliates.
     2  // Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl.
     3  
     4  package metrics
     5  
     6  import (
     7  	"testing"
     8  
     9  	promoperapi "github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring/v1"
    10  	asserts "github.com/stretchr/testify/assert"
    11  	"github.com/verrazzano/verrazzano/pkg/log/vzlog"
    12  	corev1 "k8s.io/api/core/v1"
    13  )
    14  
    15  func TestPopulateServiceMonitor(t *testing.T) {
    16  	trueVal := true
    17  	falseVal := false
    18  
    19  	tests := []struct {
    20  		name        string
    21  		info        ScrapeInfo
    22  		expectError bool
    23  	}{
    24  		{
    25  			name:        "empty info",
    26  			info:        ScrapeInfo{},
    27  			expectError: false,
    28  		},
    29  		{
    30  			name: "true value test",
    31  			info: ScrapeInfo{
    32  				Ports:              5,
    33  				BasicAuthSecret:    &corev1.Secret{},
    34  				IstioEnabled:       &trueVal,
    35  				VZPrometheusLabels: &trueVal,
    36  				KeepLabels:         map[string]string{"test": "label"},
    37  				ClusterName:        "local1",
    38  			},
    39  			expectError: false,
    40  		},
    41  		{
    42  			name: "false value test",
    43  			info: ScrapeInfo{
    44  				Ports:              3,
    45  				BasicAuthSecret:    &corev1.Secret{},
    46  				IstioEnabled:       &falseVal,
    47  				VZPrometheusLabels: &falseVal,
    48  				KeepLabels:         map[string]string{"test": "label"},
    49  				ClusterName:        "local2",
    50  			},
    51  			expectError: false,
    52  		},
    53  	}
    54  	for _, tt := range tests {
    55  		t.Run(tt.name, func(t *testing.T) {
    56  			serviceMonitor := &promoperapi.ServiceMonitor{}
    57  			err := PopulateServiceMonitor(tt.info, serviceMonitor, vzlog.DefaultLogger())
    58  			if tt.expectError {
    59  				asserts.Error(t, err)
    60  			} else {
    61  				asserts.NoError(t, err)
    62  				asserts.Equal(t, tt.info.Ports, len(serviceMonitor.Spec.Endpoints))
    63  				if len(serviceMonitor.Spec.Endpoints) == 0 {
    64  					return
    65  				}
    66  				asserts.Equal(t, serviceMonitor.Spec.Endpoints[0].RelabelConfigs[0].Replacement, tt.info.ClusterName)
    67  				asserts.Equal(t, 10, len(serviceMonitor.Spec.Endpoints[0].RelabelConfigs))
    68  				if tt.info.BasicAuthSecret != nil {
    69  					asserts.NotNil(t, serviceMonitor.Spec.Endpoints[0].BasicAuth)
    70  				}
    71  				if tt.info.IstioEnabled == nil || tt.info.IstioEnabled == &falseVal {
    72  					asserts.Equal(t, "http", serviceMonitor.Spec.Endpoints[0].Scheme)
    73  				} else {
    74  					asserts.Equal(t, "https", serviceMonitor.Spec.Endpoints[0].Scheme)
    75  				}
    76  				if tt.info.VZPrometheusLabels == nil || tt.info.VZPrometheusLabels == &falseVal {
    77  					asserts.Contains(t, serviceMonitor.Spec.Endpoints[0].RelabelConfigs[1].SourceLabels,
    78  						promoperapi.LabelName("__meta_kubernetes_pod_annotation_prometheus_io_scrape"))
    79  					asserts.Contains(t, serviceMonitor.Spec.Endpoints[0].RelabelConfigs[1].SourceLabels,
    80  						promoperapi.LabelName("test"))
    81  				} else {
    82  					asserts.Contains(t, serviceMonitor.Spec.Endpoints[0].RelabelConfigs[1].SourceLabels,
    83  						promoperapi.LabelName("__meta_kubernetes_pod_annotation_verrazzano_io_metricsEnabled"))
    84  					if len(serviceMonitor.Spec.Endpoints) >= 1 {
    85  						asserts.Contains(t, serviceMonitor.Spec.Endpoints[1].RelabelConfigs[1].SourceLabels,
    86  							promoperapi.LabelName("__meta_kubernetes_pod_annotation_verrazzano_io_metricsEnabled1"))
    87  					}
    88  					asserts.Contains(t, serviceMonitor.Spec.Endpoints[0].RelabelConfigs[1].SourceLabels,
    89  						promoperapi.LabelName("test"))
    90  				}
    91  			}
    92  		})
    93  	}
    94  }