package datadogv1 import ( "reflect" "testing" ) func TestRequestUnmarshalMissingHost(t *testing.T) { // This tests https://github.com/VictoriaMetrics/VictoriaMetrics/issues/3432 req := Request{ Series: []Series{{ Host: "prev-host", Device: "prev-device", }}, } data := ` { "series": [ { "metric": "system.load.1", "points": [[ 1575317847, 0.5 ]] } ] }` if err := req.Unmarshal([]byte(data)); err != nil { t.Fatalf("unexpected error: %s", err) } reqExpected := Request{ Series: []Series{{ Metric: "system.load.1", Points: []Point{{ 1575317847, 0.5, }}, }}, } if !reflect.DeepEqual(&req, &reqExpected) { t.Fatalf("unexpected request parsed;\ngot\n%+v\nwant\n%+v", req, reqExpected) } } func TestRequestUnmarshalFailure(t *testing.T) { f := func(s string) { t.Helper() var req Request if err := req.Unmarshal([]byte(s)); err == nil { t.Fatalf("expecting non-nil error for Unmarshal(%q)", s) } } f("") f("foobar") f(`{"series":123`) f(`1234`) f(`[]`) } func TestRequestUnmarshalSuccess(t *testing.T) { f := func(s string, reqExpected *Request) { t.Helper() var req Request if err := req.Unmarshal([]byte(s)); err != nil { t.Fatalf("unexpected error in Unmarshal(%q): %s", s, err) } if !reflect.DeepEqual(&req, reqExpected) { t.Fatalf("unexpected row;\ngot\n%+v\nwant\n%+v", &req, reqExpected) } } f("{}", &Request{}) f(` { "series": [ { "host": "test.example.com", "interval": 20, "metric": "system.load.1", "device": "/dev/sda", "points": [[ 1575317847, 0.5 ]], "tags": [ "environment:test" ], "type": "rate" } ] } `, &Request{ Series: []Series{{ Host: "test.example.com", Metric: "system.load.1", Device: "/dev/sda", Points: []Point{{ 1575317847, 0.5, }}, Tags: []string{ "environment:test", }, }}, }) }