| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | package sqlstore | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | import ( | 
					
						
							| 
									
										
										
										
											2017-03-31 17:45:25 +08:00
										 |  |  | 	"math/rand" | 
					
						
							| 
									
										
										
										
											2017-03-31 02:23:40 +08:00
										 |  |  | 	"time" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | 	"github.com/grafana/grafana/pkg/bus" | 
					
						
							|  |  |  | 	m "github.com/grafana/grafana/pkg/models" | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func init() { | 
					
						
							|  |  |  | 	bus.AddHandler("sql", InsertSqlTestData) | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-31 17:45:25 +08:00
										 |  |  | func sqlRandomWalk(m1 string, m2 string, intWalker int64, floatWalker float64, sess *session) error { | 
					
						
							| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-31 17:45:25 +08:00
										 |  |  | 	timeWalker := time.Now().Add(time.Hour * -1) | 
					
						
							|  |  |  | 	now := time.Now() | 
					
						
							|  |  |  | 	step := time.Minute | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	row := &m.SqlTestData{ | 
					
						
							|  |  |  | 		Metric1:      m1, | 
					
						
							|  |  |  | 		Metric2:      m2, | 
					
						
							|  |  |  | 		TimeEpoch:    timeWalker.Unix(), | 
					
						
							|  |  |  | 		TimeDateTime: timeWalker, | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-31 17:45:25 +08:00
										 |  |  | 	for timeWalker.Unix() < now.Unix() { | 
					
						
							|  |  |  | 		timeWalker = timeWalker.Add(step) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		row.Id = 0 | 
					
						
							|  |  |  | 		row.ValueBigInt += rand.Int63n(100) - 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") | 
					
						
							| 
									
										
										
										
											2017-03-31 02:23:40 +08:00
										 |  |  | 		if _, err := sess.Table("test_data").Insert(row); err != nil { | 
					
						
							| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | 			return err | 
					
						
							|  |  |  | 		} | 
					
						
							| 
									
										
										
										
											2017-03-31 17:45:25 +08:00
										 |  |  | 	} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	return nil | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | func InsertSqlTestData(cmd *m.InsertSqlTestDataCommand) error { | 
					
						
							|  |  |  | 	return inTransaction2(func(sess *session) 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) | 
					
						
							| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-31 17:45:25 +08:00
										 |  |  | 		return err | 
					
						
							| 
									
										
										
										
											2017-03-31 02:01:04 +08:00
										 |  |  | 	}) | 
					
						
							|  |  |  | } |