package yandexcloud import ( "testing" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discoveryutils" "github.com/VictoriaMetrics/VictoriaMetrics/lib/promutils" ) func Test_addInstanceLabels(t *testing.T) { type args struct { instances []instance } tests := []struct { name string args args want []*promutils.Labels }{ { name: "empty_response", args: args{}, }, { name: "one_server", args: args{ instances: []instance{ { Name: "server-1", ID: "test", FQDN: "server-1.ru-central1.internal", FolderID: "test", Status: "RUNNING", PlatformID: "s2.micro", Resources: resources{ Cores: "2", CoreFraction: "20", Memory: "4", }, NetworkInterfaces: []networkInterface{ { Index: "0", PrimaryV4Address: primaryV4Address{ Address: "192.168.1.1", }, }, }, }, }, }, want: []*promutils.Labels{ promutils.NewLabelsFromMap(map[string]string{ "__address__": "server-1.ru-central1.internal", "__meta_yandexcloud_instance_name": "server-1", "__meta_yandexcloud_instance_fqdn": "server-1.ru-central1.internal", "__meta_yandexcloud_instance_id": "test", "__meta_yandexcloud_instance_status": "RUNNING", "__meta_yandexcloud_instance_platform_id": "s2.micro", "__meta_yandexcloud_instance_resources_cores": "2", "__meta_yandexcloud_instance_resources_core_fraction": "20", "__meta_yandexcloud_instance_resources_memory": "4", "__meta_yandexcloud_folder_id": "test", "__meta_yandexcloud_instance_private_ip_0": "192.168.1.1", }), }, }, { name: "with_public_ip", args: args{ instances: []instance{ { Name: "server-1", ID: "test", FQDN: "server-1.ru-central1.internal", FolderID: "test", Status: "RUNNING", PlatformID: "s2.micro", Resources: resources{ Cores: "2", CoreFraction: "20", Memory: "4", }, NetworkInterfaces: []networkInterface{ { Index: "0", PrimaryV4Address: primaryV4Address{ Address: "192.168.1.1", OneToOneNat: oneToOneNat{ Address: "1.1.1.1", }, }, }, }, }, }, }, want: []*promutils.Labels{ promutils.NewLabelsFromMap(map[string]string{ "__address__": "server-1.ru-central1.internal", "__meta_yandexcloud_instance_fqdn": "server-1.ru-central1.internal", "__meta_yandexcloud_instance_name": "server-1", "__meta_yandexcloud_instance_id": "test", "__meta_yandexcloud_instance_status": "RUNNING", "__meta_yandexcloud_instance_platform_id": "s2.micro", "__meta_yandexcloud_instance_resources_cores": "2", "__meta_yandexcloud_instance_resources_core_fraction": "20", "__meta_yandexcloud_instance_resources_memory": "4", "__meta_yandexcloud_folder_id": "test", "__meta_yandexcloud_instance_private_ip_0": "192.168.1.1", "__meta_yandexcloud_instance_public_ip_0": "1.1.1.1", }), }, }, { name: "with_dns_record", args: args{ instances: []instance{ { Name: "server-1", ID: "test", FQDN: "server-1.ru-central1.internal", FolderID: "test", Status: "RUNNING", PlatformID: "s2.micro", Resources: resources{ Cores: "2", CoreFraction: "20", Memory: "4", }, NetworkInterfaces: []networkInterface{ { Index: "0", PrimaryV4Address: primaryV4Address{ Address: "192.168.1.1", OneToOneNat: oneToOneNat{ Address: "1.1.1.1", DNSRecords: []dnsRecord{ {FQDN: "server-1.example.com"}, }, }, DNSRecords: []dnsRecord{ {FQDN: "server-1.example.local"}, }, }, }, }, }, }, }, want: []*promutils.Labels{ promutils.NewLabelsFromMap(map[string]string{ "__address__": "server-1.ru-central1.internal", "__meta_yandexcloud_instance_name": "server-1", "__meta_yandexcloud_instance_fqdn": "server-1.ru-central1.internal", "__meta_yandexcloud_instance_id": "test", "__meta_yandexcloud_instance_status": "RUNNING", "__meta_yandexcloud_instance_platform_id": "s2.micro", "__meta_yandexcloud_instance_resources_cores": "2", "__meta_yandexcloud_instance_resources_core_fraction": "20", "__meta_yandexcloud_instance_resources_memory": "4", "__meta_yandexcloud_folder_id": "test", "__meta_yandexcloud_instance_private_ip_0": "192.168.1.1", "__meta_yandexcloud_instance_public_ip_0": "1.1.1.1", "__meta_yandexcloud_instance_private_dns_0": "server-1.example.local", "__meta_yandexcloud_instance_public_dns_0": "server-1.example.com", }), }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { got := addInstanceLabels(tt.args.instances) discoveryutils.TestEqualLabelss(t, got, tt.want) }) } }