migrations_test.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package migrations
  2. import (
  3. "fmt"
  4. "strings"
  5. "testing"
  6. "github.com/go-xorm/xorm"
  7. "github.com/grafana/grafana/pkg/log"
  8. . "github.com/grafana/grafana/pkg/services/sqlstore/migrator"
  9. "github.com/grafana/grafana/pkg/services/sqlstore/sqlutil"
  10. . "github.com/smartystreets/goconvey/convey"
  11. )
  12. var indexTypes = []string{"Unknown", "INDEX", "UNIQUE INDEX"}
  13. func TestMigrations(t *testing.T) {
  14. log.NewLogger(0, "console", `{"level": 0}`)
  15. testDBs := []sqlutil.TestDB{
  16. sqlutil.TestDB_Sqlite3,
  17. }
  18. for _, testDB := range testDBs {
  19. Convey("Initial "+testDB.DriverName+" migration", t, func() {
  20. x, err := xorm.NewEngine(testDB.DriverName, testDB.ConnStr)
  21. So(err, ShouldBeNil)
  22. sqlutil.CleanDB(x)
  23. mg := NewMigrator(x)
  24. mg.LogLevel = log.DEBUG
  25. AddMigrations(mg)
  26. err = mg.Start()
  27. So(err, ShouldBeNil)
  28. tables, err := x.DBMetas()
  29. So(err, ShouldBeNil)
  30. fmt.Printf("\nDB Schema after migration: table count: %v\n", len(tables))
  31. for _, table := range tables {
  32. fmt.Printf("\nTable: %v \n", table.Name)
  33. for _, column := range table.Columns() {
  34. fmt.Printf("\t %v \n", column.String(x.Dialect()))
  35. }
  36. if len(table.Indexes) > 0 {
  37. fmt.Printf("\n\tIndexes:\n")
  38. for _, index := range table.Indexes {
  39. fmt.Printf("\t %v (%v) %v \n", index.Name, strings.Join(index.Cols, ","), indexTypes[index.Type])
  40. }
  41. }
  42. }
  43. })
  44. }
  45. }