mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
6e5ac32fba
* YC service discovery https://github.com/VictoriaMetrics/VictoriaMetrics/issues/1386 * Fixed linter suggestions * fixed golint errors
182 lines
5.9 KiB
Go
182 lines
5.9 KiB
Go
package yandexcloud
|
|
|
|
import (
|
|
"reflect"
|
|
"testing"
|
|
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/prompbmarshal"
|
|
"github.com/VictoriaMetrics/VictoriaMetrics/lib/promscrape/discoveryutils"
|
|
)
|
|
|
|
func Test_addInstanceLabels(t *testing.T) {
|
|
type args struct {
|
|
instances []instance
|
|
}
|
|
tests := []struct {
|
|
name string
|
|
args args
|
|
want [][]prompbmarshal.Label
|
|
}{
|
|
{
|
|
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: [][]prompbmarshal.Label{
|
|
discoveryutils.GetSortedLabels(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: [][]prompbmarshal.Label{
|
|
discoveryutils.GetSortedLabels(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: [][]prompbmarshal.Label{
|
|
discoveryutils.GetSortedLabels(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)
|
|
var sortedLabelss [][]prompbmarshal.Label
|
|
for _, labels := range got {
|
|
sortedLabelss = append(sortedLabelss, discoveryutils.GetSortedLabels(labels))
|
|
}
|
|
if !reflect.DeepEqual(sortedLabelss, tt.want) {
|
|
t.Errorf("addInstanceLabels() = \n got: %v,\nwant: %v", sortedLabelss, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|