mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
FieldType: Add enum type and include it in testdata scenarios (#64059)
This commit is contained in:
@@ -712,15 +712,29 @@ func randomWalkTable(query backend.DataQuery, model *simplejson.Json) *data.Fram
|
||||
walker := model.Get("startValue").MustFloat64(rand.Float64() * 100)
|
||||
spread := 2.5
|
||||
|
||||
stateField := data.NewFieldFromFieldType(data.FieldTypeEnum, 0)
|
||||
stateField.Name = "State"
|
||||
stateField.Config = &data.FieldConfig{
|
||||
TypeConfig: &data.FieldTypeConfig{
|
||||
Enum: &data.EnumFieldConfig{
|
||||
Text: []string{
|
||||
"Unknown", "Up", "Down", // 0,1,2
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
frame := data.NewFrame(query.RefID,
|
||||
data.NewField("Time", nil, []*time.Time{}),
|
||||
data.NewField("Value", nil, []*float64{}),
|
||||
data.NewField("Min", nil, []*float64{}),
|
||||
data.NewField("Max", nil, []*float64{}),
|
||||
data.NewField("Info", nil, []*string{}),
|
||||
stateField,
|
||||
)
|
||||
|
||||
var info strings.Builder
|
||||
state := data.EnumItemIndex(0)
|
||||
|
||||
for i := int64(0); i < query.MaxDataPoints && timeWalkerMs < to; i++ {
|
||||
delta := rand.Float64() - 0.5
|
||||
@@ -729,8 +743,10 @@ func randomWalkTable(query backend.DataQuery, model *simplejson.Json) *data.Fram
|
||||
info.Reset()
|
||||
if delta > 0 {
|
||||
info.WriteString("up")
|
||||
state = 1
|
||||
} else {
|
||||
info.WriteString("down")
|
||||
state = 2
|
||||
}
|
||||
if math.Abs(delta) > .4 {
|
||||
info.WriteString(" fast")
|
||||
@@ -748,11 +764,12 @@ func randomWalkTable(query backend.DataQuery, model *simplejson.Json) *data.Fram
|
||||
for i := range vals {
|
||||
if rand.Float64() > .2 {
|
||||
vals[i] = nil
|
||||
state = 0
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
frame.AppendRow(&t, vals[0], vals[1], vals[2], &infoString)
|
||||
frame.AppendRow(&t, vals[0], vals[1], vals[2], &infoString, state)
|
||||
|
||||
timeWalkerMs += query.Interval.Milliseconds()
|
||||
}
|
||||
|
||||
@@ -96,7 +96,7 @@ func TestTestdataScenarios(t *testing.T) {
|
||||
require.Len(t, dResp.Frames, 1)
|
||||
frame := dResp.Frames[0]
|
||||
require.Greater(t, frame.Rows(), 50)
|
||||
require.Len(t, frame.Fields, 5)
|
||||
require.Len(t, frame.Fields, 6)
|
||||
require.Equal(t, "Time", frame.Fields[0].Name)
|
||||
require.Equal(t, "Value", frame.Fields[1].Name)
|
||||
require.Equal(t, "Min", frame.Fields[2].Name)
|
||||
@@ -152,12 +152,13 @@ func TestTestdataScenarios(t *testing.T) {
|
||||
require.Len(t, dResp.Frames, 1)
|
||||
frame := dResp.Frames[0]
|
||||
require.Greater(t, frame.Rows(), 50)
|
||||
require.Len(t, frame.Fields, 5)
|
||||
require.Len(t, frame.Fields, 6)
|
||||
require.Equal(t, "Time", frame.Fields[0].Name)
|
||||
require.Equal(t, "Value", frame.Fields[1].Name)
|
||||
require.Equal(t, "Min", frame.Fields[2].Name)
|
||||
require.Equal(t, "Max", frame.Fields[3].Name)
|
||||
require.Equal(t, "Info", frame.Fields[4].Name)
|
||||
require.Equal(t, "State", frame.Fields[5].Name)
|
||||
|
||||
valNil := false
|
||||
minNil := false
|
||||
|
||||
Reference in New Issue
Block a user