sql_test_data.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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().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 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. sqlRandomWalk("server2", "frontend", 100, 1.123, sess)
  48. sqlRandomWalk("server3", "frontend", 100, 1.123, sess)
  49. sqlRandomWalk("server1", "backend", 100, 1.123, sess)
  50. sqlRandomWalk("server2", "backend", 100, 1.123, sess)
  51. sqlRandomWalk("server3", "backend", 100, 1.123, sess)
  52. sqlRandomWalk("db-server1", "backend", 100, 1.123, sess)
  53. return err
  54. })
  55. }