model_parser_test.go 2.8 KB

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