response_parser_test.go 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. package influxdb
  2. import (
  3. "encoding/json"
  4. "testing"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. func TestInfluxdbResponseParser(t *testing.T) {
  8. Convey("Influxdb response parser", t, func() {
  9. parser := &ResponseParser{}
  10. response := &Response{
  11. Results: []Result{
  12. Result{
  13. Series: []Row{
  14. {
  15. Name: "cpu",
  16. Columns: []string{"time", "mean", "sum"},
  17. Tags: map[string]string{"datacenter": "America"},
  18. Values: [][]interface{}{
  19. {json.Number("111"), json.Number("222"), json.Number("333")},
  20. {json.Number("111"), json.Number("222"), json.Number("333")},
  21. {json.Number("111"), json.Number("null"), json.Number("333")},
  22. },
  23. },
  24. },
  25. },
  26. },
  27. }
  28. result := parser.Parse(response)
  29. Convey("can parse all series", func() {
  30. So(len(result.Series), ShouldEqual, 2)
  31. })
  32. Convey("can parse all points", func() {
  33. So(len(result.Series[0].Points), ShouldEqual, 3)
  34. So(len(result.Series[1].Points), ShouldEqual, 3)
  35. })
  36. Convey("can parse multi row result", func() {
  37. So(result.Series[0].Points[1][0].Float64, ShouldEqual, float64(222))
  38. So(result.Series[1].Points[1][0].Float64, ShouldEqual, float64(333))
  39. })
  40. Convey("can parse null points", func() {
  41. So(result.Series[0].Points[2][0].Valid, ShouldBeFalse)
  42. })
  43. Convey("can format serie names", func() {
  44. So(result.Series[0].Name, ShouldEqual, "cpu.mean { datacenter: America }")
  45. So(result.Series[1].Name, ShouldEqual, "cpu.sum { datacenter: America }")
  46. })
  47. })
  48. }