sql_test_data.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package sqlstore
  2. import (
  3. "math/rand"
  4. "time"
  5. "github.com/grafana/grafana/pkg/bus"
  6. m "github.com/grafana/grafana/pkg/models"
  7. )
  8. func init() {
  9. bus.AddHandler("sql", InsertSqlTestData)
  10. }
  11. func sqlRandomWalk(m1 string, m2 string, intWalker int64, floatWalker float64, sess *session) error {
  12. timeWalker := time.Now().Add(time.Hour * -1)
  13. now := time.Now()
  14. step := time.Minute
  15. row := &m.SqlTestData{
  16. Metric1: m1,
  17. Metric2: m2,
  18. TimeEpoch: timeWalker.Unix(),
  19. TimeDateTime: timeWalker,
  20. }
  21. for timeWalker.Unix() < now.Unix() {
  22. timeWalker = timeWalker.Add(step)
  23. row.Id = 0
  24. row.ValueBigInt += rand.Int63n(100) - 100
  25. row.ValueDouble += rand.Float64() - 0.5
  26. row.ValueFloat += rand.Float32() - 0.5
  27. row.TimeEpoch = timeWalker.Unix()
  28. row.TimeDateTime = timeWalker
  29. sqlog.Info("Writing SQL test data row")
  30. if _, err := sess.Table("test_data").Insert(row); err != nil {
  31. return err
  32. }
  33. }
  34. return nil
  35. }
  36. func InsertSqlTestData(cmd *m.InsertSqlTestDataCommand) error {
  37. return inTransaction2(func(sess *session) error {
  38. var err error
  39. sqlog.Info("SQL TestData: Clearing previous test data")
  40. res, err := sess.Exec("TRUNCATE test_data")
  41. if err != nil {
  42. return err
  43. }
  44. rows, _ := res.RowsAffected()
  45. sqlog.Info("SQL TestData: Truncate done", "rows", rows)
  46. sqlRandomWalk("server1", "frontend", 100, 1.123, sess)
  47. return err
  48. })
  49. }