blob: 80dcf66df7dfb2f66379c343625457b53e3c4f9a [file] [log] [blame]
package config
import (
"encoding/json"
"testing"
"github.com/stretchr/testify/require"
)
func TestInstanceConfig_ParseNewQueryConfigFields(t *testing.T) {
jsonBody := `
{
"query_config": {
"default_param_selections": {
"stat": ["value"]
},
"default_url_values": {
"stat": "value"
},
"conditional_defaults": [
{
"trigger": {
"param": "metric",
"values": ["cpu"]
},
"apply": [
{
"param": "stat",
"values": ["avg"],
"select_only_first": false
}
]
}
],
"default_trigger_priority": {
"metric": ["subtest", "bench_type"]
}
}
}
`
var cfg InstanceConfig
err := json.Unmarshal([]byte(jsonBody), &cfg)
require.NoError(t, err)
require.Equal(t, []string{"value"}, cfg.QueryConfig.DefaultParamSelections["stat"])
require.Equal(t, "value", cfg.QueryConfig.DefaultUrlValues["stat"])
// Check conditional defaults
require.Len(t, cfg.QueryConfig.ConditionalDefaults, 1)
rule := cfg.QueryConfig.ConditionalDefaults[0]
require.Equal(t, "metric", rule.Trigger.Param)
require.Equal(t, []string{"cpu"}, rule.Trigger.Values)
require.Len(t, rule.Apply, 1)
apply := rule.Apply[0]
require.Equal(t, "stat", apply.Param)
require.Equal(t, []string{"avg"}, apply.Values)
require.False(t, apply.SelectFirstAvailable)
// Check default trigger priority
require.Equal(t, []string{"subtest", "bench_type"}, cfg.QueryConfig.DefaultTriggerPriority["metric"])
}