package metric_agent

import (
	"testing"

	"gopkg.in/yaml.v2"
)

func TestPromConfig(t *testing.T) {
	config := `
global:
  scrape_interval: 15s
  evaluation_interval: 15s
  external_labels:
    prometheus_replica: $(NAMESPACE)_$(POD_NAME)
scrape_configs:
- job_name: tidb1379661944580644069-db-pd
  honor_labels: true
  scrape_interval: 15s
  scheme: https
  kubernetes_sd_configs:
  - api_server: null
    role: pod
    namespaces:
      names:
      - tidb1379661944580644069
  tls_config:
    ca_file: /var/lib/cluster-assets-tls/secret_tidb1379661944580644069_db-cluster-client-secret_ca.crt
    cert_file: /var/lib/cluster-assets-tls/secret_tidb1379661944580644069_db-cluster-client-secret_tls.crt
    key_file: /var/lib/cluster-assets-tls/secret_tidb1379661944580644069_db-cluster-client-secret_tls.key
    insecure_skip_verify: false
  relabel_configs:
  - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance]
    regex: db
    action: keep
  - source_labels: [__meta_kubernetes_namespace]
    regex: tidb1379661944580644069
    action: keep
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape]
    regex: "true"
    action: keep
  - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component]
    regex: pd
    action: keep
  - source_labels: [__meta_kubernetes_pod_name, __meta_kubernetes_pod_label_app_kubernetes_io_instance, __meta_kubernetes_namespace, __meta_kubernetes_pod_annotation_prometheus_io_port]
    regex: (.+);(.+);(.+);(.+)
    target_label: __address__
    replacement: $1.$2-pd-peer.$3:$4
    action: replace
  - source_labels: [__meta_kubernetes_namespace]
    target_label: kubernetes_namespace
    action: replace
  - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_instance]
    target_label: cluster
    action: replace
  - source_labels: [__meta_kubernetes_pod_name]
    target_label: instance
    action: replace
  - source_labels: [__meta_kubernetes_pod_label_app_kubernetes_io_component]
    target_label: component
    action: replace
  - source_labels: [__meta_kubernetes_namespace, __meta_kubernetes_pod_label_app_kubernetes_io_instance]
    separator: '-'
    target_label: tidb_cluster
  - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_path]
    regex: (.+)
    target_label: __metrics_path__
    action: replace
  - source_labels: [__address__]
    modulus: 1
    target_label: __tmp_hash
    action: hashmod
  - source_labels: [__tmp_hash]
    regex: $(SHARD)
    action: keep
`

	c, err := UnmarshalAndEnrichPromConfig(config, "shoot--prod--xxxxxx", "tidb1379661944580644069")
	if err != nil {
		t.Error("unmarshalAndEnrichPromConfig error:", err)
	}

	out, err := yaml.Marshal(c)
	if err != nil {
		t.Error("yaml marshal error:", err)
	}

	t.Log(string(out))
}
