sql_test_data.go 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 *DBSession) error {
  12. timeWalker := time.Now().UTC().Add(time.Hour * -200)
  13. now := time.Now().UTC()
  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(200) - 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 inTransaction(func(sess *DBSession) 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. sqlRandomWalk("server2", "frontend", 100, 1.123, sess)
  48. sqlRandomWalk("server3", "frontend", 100, 1.123, sess)
  49. return err
  50. })
  51. }