From 8917d66571a95f3da232a0c27bc1300210d10fde Mon Sep 17 00:00:00 2001 From: zeripath Date: Mon, 28 Jan 2019 16:18:52 +0000 Subject: [PATCH] Add migration test (#5773) * Add migration test This commit adds a simple migration test for v1.5.3, v1.6.4 and v1.7.0-rc3 Signed-off-by: Andrew Thornton * Automigrate based on available dbs * remove old ini file * Standardise the dialect names --- .drone.yml | 5 + Makefile | 28 +- .../migration-test/gitea-v1.5.3.mysql.sql.gz | Bin 0 -> 9030 bytes .../gitea-v1.5.3.postgres.sql.gz | Bin 0 -> 16612 bytes .../gitea-v1.5.3.sqlite3.sql.gz | Bin 0 -> 3849 bytes .../migration-test/gitea-v1.6.4.mysql.sql.gz | Bin 0 -> 9423 bytes .../gitea-v1.6.4.postgres.sql.gz | Bin 0 -> 17346 bytes .../gitea-v1.6.4.sqlite3.sql.gz | Bin 0 -> 3995 bytes .../migration-test/gitea-v1.7.0.mysql.sql.gz | Bin 0 -> 9682 bytes .../gitea-v1.7.0.postgres.sql.gz | Bin 0 -> 17659 bytes .../gitea-v1.7.0.sqlite3.sql.gz | Bin 0 -> 8165 bytes integrations/migration-test/migration_test.go | 245 ++++++++++++++++++ 12 files changed, 277 insertions(+), 1 deletion(-) create mode 100644 integrations/migration-test/gitea-v1.5.3.mysql.sql.gz create mode 100644 integrations/migration-test/gitea-v1.5.3.postgres.sql.gz create mode 100644 integrations/migration-test/gitea-v1.5.3.sqlite3.sql.gz create mode 100644 integrations/migration-test/gitea-v1.6.4.mysql.sql.gz create mode 100644 integrations/migration-test/gitea-v1.6.4.postgres.sql.gz create mode 100644 integrations/migration-test/gitea-v1.6.4.sqlite3.sql.gz create mode 100644 integrations/migration-test/gitea-v1.7.0.mysql.sql.gz create mode 100644 integrations/migration-test/gitea-v1.7.0.postgres.sql.gz create mode 100644 integrations/migration-test/gitea-v1.7.0.sqlite3.sql.gz create mode 100644 integrations/migration-test/migration_test.go diff --git a/.drone.yml b/.drone.yml index 68d7198365..560df26606 100644 --- a/.drone.yml +++ b/.drone.yml @@ -127,6 +127,7 @@ pipeline: - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash - apt-get install -y git-lfs - (sleep 1200 && (echo 'kill -ABRT $(pidof gitea) $(pidof integrations.sqlite.test)' | sh)) & + - make test-sqlite-migration - make test-sqlite when: event: [ push, tag, pull_request ] @@ -141,6 +142,7 @@ pipeline: commands: - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash - apt-get install -y git-lfs + - make test-mysql-migration - make integration-test-coverage when: event: [ push, pull_request ] @@ -157,6 +159,7 @@ pipeline: - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash - apt-get install -y git-lfs - (sleep 1200 && (echo 'kill -ABRT $(pidof gitea) $(pidof integrations.test)' | sh)) & + - make test-mysql-migration - make test-mysql when: event: [ tag ] @@ -172,6 +175,7 @@ pipeline: - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash - apt-get install -y git-lfs - (sleep 1200 && (echo 'kill -ABRT $(pidof gitea) $(pidof integrations.test)' | sh)) & + - make test-pgsql-migration - make test-pgsql when: event: [ push, tag, pull_request ] @@ -186,6 +190,7 @@ pipeline: commands: - curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | bash - apt-get install -y git-lfs + - make test-mssql-migration - make test-mssql when: event: [ push, tag, pull_request ] diff --git a/Makefile b/Makefile index b27937b0c7..5201e99b04 100644 --- a/Makefile +++ b/Makefile @@ -35,7 +35,7 @@ endif LDFLAGS := -X "main.Version=$(GITEA_VERSION)" -X "main.Tags=$(TAGS)" -PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations,$(shell $(GO) list ./... | grep -v /vendor/)) +PACKAGES ?= $(filter-out code.gitea.io/gitea/integrations/migration-test,$(filter-out code.gitea.io/gitea/integrations,$(shell $(GO) list ./... | grep -v /vendor/))) SOURCES ?= $(shell find . -name "*.go" -type f) TAGS ?= @@ -197,6 +197,10 @@ test-vendor: vendor test-sqlite: integrations.sqlite.test GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test +.PHONY: test-sqlite-migration +test-sqlite-migration: migrations.sqlite.test + GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./migrations.sqlite.test + generate-ini: sed -e 's|{{TEST_MYSQL_HOST}}|${TEST_MYSQL_HOST}|g' \ -e 's|{{TEST_MYSQL_DBNAME}}|${TEST_MYSQL_DBNAME}|g' \ @@ -218,14 +222,28 @@ generate-ini: test-mysql: integrations.test generate-ini GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./integrations.test +.PHONY: test-mysql-migration +test-mysql-migration: migrations.test generate-ini + GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mysql.ini ./migrations.test + .PHONY: test-pgsql test-pgsql: integrations.test generate-ini GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./integrations.test +.PHONY: test-pgsql-migration +test-pgsql-migration: migrations.test generate-ini + GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/pgsql.ini ./migrations.test + + .PHONY: test-mssql test-mssql: integrations.test generate-ini GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mssql.ini ./integrations.test +.PHONY: test-mssql-migration +test-mssql-migration: migrations.test generate-ini + GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/mssql.ini ./migrations.test + + .PHONY: bench-sqlite bench-sqlite: integrations.sqlite.test GITEA_ROOT=${CURDIR} GITEA_CONF=integrations/sqlite.ini ./integrations.sqlite.test -test.cpuprofile=cpu.out -test.run DontRunTests -test.bench . @@ -252,6 +270,14 @@ integrations.sqlite.test: $(SOURCES) integrations.cover.test: $(SOURCES) $(GO) test -c code.gitea.io/gitea/integrations -coverpkg $(shell echo $(PACKAGES) | tr ' ' ',') -o integrations.cover.test +.PHONY: migrations.test +migrations.test: $(SOURCES) + $(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.test + +.PHONY: migrations.sqlite.test +migrations.sqlite.test: $(SOURCES) + $(GO) test -c code.gitea.io/gitea/integrations/migration-test -o migrations.sqlite.test -tags 'sqlite sqlite_unlock_notify' + .PHONY: check check: test diff --git a/integrations/migration-test/gitea-v1.5.3.mysql.sql.gz b/integrations/migration-test/gitea-v1.5.3.mysql.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..643b6bab9cad3aa3a5660729e17cb56d10857e21 GIT binary patch literal 9030 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 literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.5.3.postgres.sql.gz b/integrations/migration-test/gitea-v1.5.3.postgres.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..2fcad82111cf00a0fe6368e0bd714c9d5114c043 GIT binary patch literal 16612 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 literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.5.3.sqlite3.sql.gz b/integrations/migration-test/gitea-v1.5.3.sqlite3.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..f13bc68a47ee31625197bdd65193a3554540b54b GIT binary patch literal 3849 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 J=JjL-1^{Sdg0BDo literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.6.4.mysql.sql.gz b/integrations/migration-test/gitea-v1.6.4.mysql.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..30cca8b3825f881a19757c2969d144f70f63ba28 GIT binary patch literal 9423 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 literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.6.4.postgres.sql.gz b/integrations/migration-test/gitea-v1.6.4.postgres.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..8db9022d1c0f7ca4e0d860edcbedea4ba4ec2969 GIT binary patch literal 17346 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ν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 literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.6.4.sqlite3.sql.gz b/integrations/migration-test/gitea-v1.6.4.sqlite3.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..a777c530253f57a9db008652042d4027f13d5bea GIT binary patch literal 3995 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 CoW0Kg literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.7.0.mysql.sql.gz b/integrations/migration-test/gitea-v1.7.0.mysql.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..d0ab10891c08923b4f02f0f092a5cd51fb24ac13 GIT binary patch literal 9682 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 P|FQqhT~IG!z{mgq`C#N) literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.7.0.postgres.sql.gz b/integrations/migration-test/gitea-v1.7.0.postgres.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..ed66d41b89d1c0c427f1d5f98c33d01f2d0266db GIT binary patch literal 17659 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 Soyha~KV#aVmaK3#W(ENC0?D%g literal 0 HcmV?d00001 diff --git a/integrations/migration-test/gitea-v1.7.0.sqlite3.sql.gz b/integrations/migration-test/gitea-v1.7.0.sqlite3.sql.gz new file mode 100644 index 0000000000000000000000000000000000000000..3155249b07eb08684d2513fa5348e500615fd56d GIT binary patch literal 8165 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 B)6M_@ literal 0 HcmV?d00001 diff --git a/integrations/migration-test/migration_test.go b/integrations/migration-test/migration_test.go new file mode 100644 index 0000000000..6fd7af832e --- /dev/null +++ b/integrations/migration-test/migration_test.go @@ -0,0 +1,245 @@ +// Copyright 2019 The Gitea Authors. All rights reserved. +// Use of this source code is governed by a MIT-style +// license that can be found in the LICENSE file. + +package migrations + +import ( + "compress/gzip" + "database/sql" + "fmt" + "io/ioutil" + "log" + "os" + "path" + "regexp" + "sort" + "testing" + + "code.gitea.io/gitea/models" + "code.gitea.io/gitea/models/migrations" + "code.gitea.io/gitea/modules/setting" + + "github.com/go-xorm/xorm" + "github.com/stretchr/testify/assert" +) + +var currentEngine *xorm.Engine + +func initMigrationTest() { + giteaRoot := os.Getenv("GITEA_ROOT") + if giteaRoot == "" { + fmt.Println("Environment variable $GITEA_ROOT not set") + os.Exit(1) + } + setting.AppPath = path.Join(giteaRoot, "gitea") + if _, err := os.Stat(setting.AppPath); err != nil { + fmt.Printf("Could not find gitea binary at %s\n", setting.AppPath) + os.Exit(1) + } + + giteaConf := os.Getenv("GITEA_CONF") + if giteaConf == "" { + fmt.Println("Environment variable $GITEA_CONF not set") + os.Exit(1) + } else if !path.IsAbs(giteaConf) { + setting.CustomConf = path.Join(giteaRoot, giteaConf) + } else { + setting.CustomConf = giteaConf + } + + setting.NewContext() + setting.CheckLFSVersion() + models.LoadConfigs() +} + +func getDialect() string { + dialect := "sqlite" + switch { + case setting.UseSQLite3: + dialect = "sqlite" + case setting.UseMySQL: + dialect = "mysql" + case setting.UsePostgreSQL: + dialect = "pgsql" + case setting.UseMSSQL: + dialect = "mssql" + } + return dialect +} + +func availableVersions() ([]string, error) { + migrationsDir, err := os.Open("integrations/migration-test") + if err != nil { + return nil, err + } + defer migrationsDir.Close() + versionRE, err := regexp.Compile("gitea-v(?P.+)\\." + regexp.QuoteMeta(models.DbCfg.Type) + "\\.sql.gz") + if err != nil { + return nil, err + } + + filenames, err := migrationsDir.Readdirnames(-1) + if err != nil { + return nil, err + } + versions := []string{} + for _, filename := range filenames { + if versionRE.MatchString(filename) { + substrings := versionRE.FindStringSubmatch(filename) + versions = append(versions, substrings[1]) + } + } + sort.Strings(versions) + return versions, nil +} + +func readSQLFromFile(version string) (string, error) { + filename := fmt.Sprintf("integrations/migration-test/gitea-v%s.%s.sql.gz", version, models.DbCfg.Type) + + if _, err := os.Stat(filename); os.IsNotExist(err) { + return "", nil + } + + file, err := os.Open(filename) + if err != nil { + return "", err + } + defer file.Close() + + gr, err := gzip.NewReader(file) + if err != nil { + return "", err + } + defer gr.Close() + + bytes, err := ioutil.ReadAll(gr) + if err != nil { + return "", err + } + + return string(bytes), nil +} + +func restoreOldDB(t *testing.T, version string) bool { + data, err := readSQLFromFile(version) + assert.NoError(t, err) + if len(data) == 0 { + log.Printf("No db found to restore for %s version: %s\n", models.DbCfg.Type, version) + return false + } + + switch { + case setting.UseSQLite3: + os.Remove(models.DbCfg.Path) + err := os.MkdirAll(path.Dir(models.DbCfg.Path), os.ModePerm) + assert.NoError(t, err) + + db, err := sql.Open("sqlite3", fmt.Sprintf("file:%s?cache=shared&mode=rwc&_busy_timeout=%d", models.DbCfg.Path, models.DbCfg.Timeout)) + assert.NoError(t, err) + defer db.Close() + + _, err = db.Exec(data) + assert.NoError(t, err) + db.Close() + + case setting.UseMySQL: + db, err := sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/", + models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host)) + assert.NoError(t, err) + defer db.Close() + + _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", models.DbCfg.Name)) + assert.NoError(t, err) + + _, err = db.Exec(fmt.Sprintf("CREATE DATABASE IF NOT EXISTS %s", models.DbCfg.Name)) + assert.NoError(t, err) + + db, err = sql.Open("mysql", fmt.Sprintf("%s:%s@tcp(%s)/%s?multiStatements=true", + models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.Name)) + assert.NoError(t, err) + defer db.Close() + + _, err = db.Exec(data) + assert.NoError(t, err) + db.Close() + + case setting.UsePostgreSQL: + db, err := sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/?sslmode=%s", + models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.SSLMode)) + assert.NoError(t, err) + defer db.Close() + + _, err = db.Exec(fmt.Sprintf("DROP DATABASE IF EXISTS %s", models.DbCfg.Name)) + assert.NoError(t, err) + + _, err = db.Exec(fmt.Sprintf("CREATE DATABASE %s", models.DbCfg.Name)) + assert.NoError(t, err) + db.Close() + + db, err = sql.Open("postgres", fmt.Sprintf("postgres://%s:%s@%s/%s?sslmode=%s", + models.DbCfg.User, models.DbCfg.Passwd, models.DbCfg.Host, models.DbCfg.Name, models.DbCfg.SSLMode)) + assert.NoError(t, err) + defer db.Close() + + _, err = db.Exec(data) + assert.NoError(t, err) + db.Close() + + case setting.UseMSSQL: + host, port := models.ParseMSSQLHostPort(models.DbCfg.Host) + db, err := sql.Open("mssql", fmt.Sprintf("server=%s; port=%s; database=%s; user id=%s; password=%s;", + host, port, "master", models.DbCfg.User, models.DbCfg.Passwd)) + assert.NoError(t, err) + defer db.Close() + + _, err = db.Exec("DROP DATABASE IF EXISTS gitea") + assert.NoError(t, err) + + _, err = db.Exec("CREATE DATABASE gitea") + assert.NoError(t, err) + + _, err = db.Exec(data) + assert.NoError(t, err) + db.Close() + } + return true +} + +func wrappedMigrate(x *xorm.Engine) error { + currentEngine = x + return migrations.Migrate(x) +} + +func doMigrationTest(t *testing.T, version string) { + log.Printf("Performing migration test for %s version: %s", models.DbCfg.Type, version) + if !restoreOldDB(t, version) { + return + } + + setting.NewXORMLogService(false) + err := models.SetEngine() + assert.NoError(t, err) + + err = models.NewEngine(wrappedMigrate) + assert.NoError(t, err) + currentEngine.Close() +} + +func TestMigrations(t *testing.T) { + initMigrationTest() + + dialect := models.DbCfg.Type + versions, err := availableVersions() + assert.NoError(t, err) + + if len(versions) == 0 { + log.Printf("No old database versions available to migration test for %s\n", dialect) + return + } + + log.Printf("Preparing to test %d migrations for %s\n", len(versions), dialect) + for _, version := range versions { + doMigrationTest(t, version) + } +}