package influx import "testing" func TestFetchQuery(t *testing.T) { f := func(s *Series, timeFilter, resultExpected string) { t.Helper() result := s.fetchQuery(timeFilter) if result != resultExpected { t.Fatalf("unexpected result\ngot\n%s\nwant\n%s", result, resultExpected) } } f(&Series{ Measurement: "cpu", Field: "value", LabelPairs: []LabelPair{ { Name: "foo", Value: "bar", }, }, }, "", `select "value" from "cpu" where "foo"::tag='bar'`) f(&Series{ Measurement: "cpu", Field: "value", LabelPairs: []LabelPair{ { Name: "foo", Value: "bar", }, { Name: "baz", Value: "qux", }, }, }, "", `select "value" from "cpu" where "foo"::tag='bar' and "baz"::tag='qux'`) f(&Series{ Measurement: "cpu", Field: "value", LabelPairs: []LabelPair{ { Name: "foo", Value: "b'ar", }, }, }, "time >= now()", `select "value" from "cpu" where "foo"::tag='b\'ar' and time >= now()`) f(&Series{ Measurement: "cpu", Field: "value", LabelPairs: []LabelPair{ { Name: "name", Value: `dev-mapper-centos\x2dswap.swap`, }, { Name: "state", Value: "dev-mapp'er-c'en'tos", }, }, }, "time >= now()", `select "value" from "cpu" where "name"::tag='dev-mapper-centos\\x2dswap.swap' and "state"::tag='dev-mapp\'er-c\'en\'tos' and time >= now()`) f(&Series{ Measurement: "cpu", Field: "value", }, "time >= now()", `select "value" from "cpu" where time >= now()`) f(&Series{ Measurement: "cpu", Field: "value", }, "", `select "value" from "cpu"`) f(&Series{ Measurement: "cpu", Field: "value1", EmptyTags: []string{"e1", "e2", "e3"}, }, "", `select "value1" from "cpu" where "e1"::tag='' and "e2"::tag='' and "e3"::tag=''`) } func TestTimeFilter(t *testing.T) { f := func(start, end, resultExpected string) { t.Helper() result := timeFilter(start, end) if result != resultExpected { t.Fatalf("unexpected result\ngot\n%v\nwant\n%s", result, resultExpected) } } // no start and end filters f("", "", "") // missing end filter f("2020-01-01T20:07:00Z", "", "time >= '2020-01-01T20:07:00Z'") // missing start filter f("", "2020-01-01T21:07:00Z", "time <= '2020-01-01T21:07:00Z'") // both start and end filters f("2020-01-01T20:07:00Z", "2020-01-01T21:07:00Z", "time >= '2020-01-01T20:07:00Z' and time <= '2020-01-01T21:07:00Z'") }