model_parser_test.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package mqe
  2. import (
  3. "testing"
  4. "github.com/grafana/grafana/pkg/components/simplejson"
  5. "github.com/grafana/grafana/pkg/models"
  6. "github.com/grafana/grafana/pkg/tsdb"
  7. . "github.com/smartystreets/goconvey/convey"
  8. )
  9. func TestMQEQueryParser(t *testing.T) {
  10. Convey("MQE query parser", t, func() {
  11. parser := &QueryParser{}
  12. dsInfo := &models.DataSource{JsonData: simplejson.New()}
  13. queryContext := &tsdb.QueryContext{}
  14. Convey("can parse simple mqe model", func() {
  15. json := `
  16. {
  17. "cluster": [],
  18. "hosts": [
  19. "staples-lab-1"
  20. ],
  21. "metrics": [
  22. {
  23. "metric": "os.cpu.all*"
  24. }
  25. ],
  26. "rawQuery": "",
  27. "refId": "A"
  28. }
  29. `
  30. modelJson, err := simplejson.NewJson([]byte(json))
  31. So(err, ShouldBeNil)
  32. query, err := parser.Parse(modelJson, dsInfo, queryContext)
  33. So(err, ShouldBeNil)
  34. So(query.UseRawQuery, ShouldBeFalse)
  35. So(len(query.Cluster), ShouldEqual, 0)
  36. So(query.Hosts[0], ShouldEqual, "staples-lab-1")
  37. So(query.Metrics[0].Metric, ShouldEqual, "os.cpu.all*")
  38. })
  39. Convey("can parse multi serie mqe model", func() {
  40. json := `
  41. {
  42. "cluster": [
  43. "demoapp"
  44. ],
  45. "hosts": [
  46. "staples-lab-1"
  47. ],
  48. "metrics": [
  49. {
  50. "metric": "os.cpu.all.active_percentage"
  51. },
  52. {
  53. "metric": "os.disk.sda.io_time"
  54. }
  55. ],
  56. "rawQuery": "",
  57. "refId": "A",
  58. "addClusterToAlias": true,
  59. "addHostToAlias": true
  60. }
  61. `
  62. modelJson, err := simplejson.NewJson([]byte(json))
  63. So(err, ShouldBeNil)
  64. query, err := parser.Parse(modelJson, dsInfo, queryContext)
  65. So(err, ShouldBeNil)
  66. So(query.UseRawQuery, ShouldBeFalse)
  67. So(query.Cluster[0], ShouldEqual, "demoapp")
  68. So(query.Metrics[0].Metric, ShouldEqual, "os.cpu.all.active_percentage")
  69. So(query.Metrics[1].Metric, ShouldEqual, "os.disk.sda.io_time")
  70. })
  71. Convey("can parse raw query", func() {
  72. json := `
  73. {
  74. "addClusterToAlias": true,
  75. "addHostToAlias": true,
  76. "cluster": [],
  77. "hosts": [
  78. "staples-lab-1"
  79. ],
  80. "metrics": [
  81. {
  82. "alias": "cpu active",
  83. "metric": "os.cpu.all.active_percentage"
  84. },
  85. {
  86. "alias": "disk sda time",
  87. "metric": "os.disk.sda.io_time"
  88. }
  89. ],
  90. "rawQuery": true,
  91. "query": "raw-query",
  92. "refId": "A"
  93. }
  94. `
  95. modelJson, err := simplejson.NewJson([]byte(json))
  96. So(err, ShouldBeNil)
  97. query, err := parser.Parse(modelJson, dsInfo, queryContext)
  98. So(err, ShouldBeNil)
  99. So(query.UseRawQuery, ShouldBeTrue)
  100. So(query.RawQuery, ShouldEqual, "raw-query")
  101. So(query.AddClusterToAlias, ShouldBeTrue)
  102. So(query.AddHostToAlias, ShouldBeTrue)
  103. })
  104. })
  105. }