1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68
|
package integration
import (
"context"
"testing"
"github.com/linode/linodego"
"github.com/stretchr/testify/require"
)
func TestMonitorMetricDefinitions_Get_smoke(t *testing.T) {
client, teardown := createTestClient(t, "fixtures/TestMonitorMetricDefinitions_Get")
defer teardown()
// Get the metric-definitions by serviceType
monitorMetricDefinitionsClientList, listErr := client.ListMonitorMetricsDefinitionByServiceType(context.Background(), "dbaas", nil)
if listErr != nil {
t.Errorf("Error listing monitor metrics:%s", listErr)
}
for _, metrics_def := range monitorMetricDefinitionsClientList {
validateMetricDefinitions(t, metrics_def)
}
// Get the metric-definitions by serviceType for the filter "is_alertable":false
monitorMetricDefinitionsClientListFilter, listErr := client.ListMonitorMetricsDefinitionByServiceType(
context.Background(),
"dbaas",
linodego.NewListOptions(0, "{\"is_alertable\":false}"),
)
if listErr != nil {
t.Errorf("Error listing monitor metrics:%s", listErr)
}
for _, metrics_def := range monitorMetricDefinitionsClientListFilter {
validateMetricDefinitionsFilters(t, metrics_def)
}
}
func validateMetricDefinitions(
t *testing.T,
metrics_def linodego.MonitorMetricsDefinition,
) {
require.NotEmpty(t, metrics_def.AvailableAggregateFunctions)
require.NotEmpty(t, metrics_def.Dimensions)
require.NotEmpty(t, metrics_def.Label)
require.NotEmpty(t, metrics_def.Metric)
require.NotEmpty(t, metrics_def.MetricType)
require.NotEmpty(t, metrics_def.ScrapeInterval)
require.NotEmpty(t, metrics_def.Unit)
require.True(t, metrics_def.IsAlertable || !metrics_def.IsAlertable, "IsAlertable should be true or false")
}
// Validation function for filter "is_alertable":false
func validateMetricDefinitionsFilters(
t *testing.T,
metrics_def linodego.MonitorMetricsDefinition,
) {
require.NotEmpty(t, metrics_def.AvailableAggregateFunctions)
require.NotEmpty(t, metrics_def.Dimensions)
require.NotEmpty(t, metrics_def.Label)
require.NotEmpty(t, metrics_def.Metric)
require.NotEmpty(t, metrics_def.MetricType)
require.NotEmpty(t, metrics_def.ScrapeInterval)
require.NotEmpty(t, metrics_def.Unit)
require.False(t, metrics_def.IsAlertable, "IsAlertable should be false for the given filter")
}
|