mirror of https://github.com/grafana/grafana.git
				
				
				
			
		
			
				
	
	
		
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			67 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
package sqlstore
 | 
						|
 | 
						|
import (
 | 
						|
	"math/rand"
 | 
						|
	"time"
 | 
						|
 | 
						|
	"github.com/grafana/grafana/pkg/bus"
 | 
						|
	m "github.com/grafana/grafana/pkg/models"
 | 
						|
)
 | 
						|
 | 
						|
func init() {
 | 
						|
	bus.AddHandler("sql", InsertSqlTestData)
 | 
						|
}
 | 
						|
 | 
						|
func sqlRandomWalk(m1 string, m2 string, intWalker int64, floatWalker float64, sess *DBSession) error {
 | 
						|
 | 
						|
	timeWalker := time.Now().UTC().Add(time.Hour * -200)
 | 
						|
	now := time.Now().UTC()
 | 
						|
	step := time.Minute
 | 
						|
 | 
						|
	row := &m.SqlTestData{
 | 
						|
		Metric1:      m1,
 | 
						|
		Metric2:      m2,
 | 
						|
		TimeEpoch:    timeWalker.Unix(),
 | 
						|
		TimeDateTime: timeWalker,
 | 
						|
	}
 | 
						|
 | 
						|
	for timeWalker.Unix() < now.Unix() {
 | 
						|
		timeWalker = timeWalker.Add(step)
 | 
						|
 | 
						|
		row.Id = 0
 | 
						|
		row.ValueBigInt += rand.Int63n(200) - 100
 | 
						|
		row.ValueDouble += rand.Float64() - 0.5
 | 
						|
		row.ValueFloat += rand.Float32() - 0.5
 | 
						|
		row.TimeEpoch = timeWalker.Unix()
 | 
						|
		row.TimeDateTime = timeWalker
 | 
						|
 | 
						|
		sqlog.Info("Writing SQL test data row")
 | 
						|
		if _, err := sess.Table("test_data").Insert(row); err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
	}
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func InsertSqlTestData(cmd *m.InsertSqlTestDataCommand) error {
 | 
						|
	return inTransaction(func(sess *DBSession) error {
 | 
						|
		var err error
 | 
						|
 | 
						|
		sqlog.Info("SQL TestData: Clearing previous test data")
 | 
						|
		res, err := sess.Exec("TRUNCATE test_data")
 | 
						|
		if err != nil {
 | 
						|
			return err
 | 
						|
		}
 | 
						|
 | 
						|
		rows, _ := res.RowsAffected()
 | 
						|
		sqlog.Info("SQL TestData: Truncate done", "rows", rows)
 | 
						|
 | 
						|
		sqlRandomWalk("server1", "frontend", 100, 1.123, sess)
 | 
						|
		sqlRandomWalk("server2", "frontend", 100, 1.123, sess)
 | 
						|
		sqlRandomWalk("server3", "frontend", 100, 1.123, sess)
 | 
						|
 | 
						|
		return err
 | 
						|
	})
 | 
						|
}
 |