func AppendMigration(migration migration.Migration) { for _, m := range Migrations { if m.Version() == migration.Version() { panic("cannot have two migrations with the same version") } } Migrations = append(Migrations, migration) }
import ( "encoding/json" "time" "code.cloudfoundry.org/bbs/db/migrations" "code.cloudfoundry.org/bbs/db/sqldb" "code.cloudfoundry.org/bbs/migration" "code.cloudfoundry.org/clock/fakeclock" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Add Placement Tags to Desired LRPs", func() { var ( mig migration.Migration migErr error fakeClock *fakeclock.FakeClock ) BeforeEach(func() { fakeClock = fakeclock.NewFakeClock(time.Now()) rawSQLDB.Exec("DROP TABLE domains;") rawSQLDB.Exec("DROP TABLE tasks;") rawSQLDB.Exec("DROP TABLE desired_lrps;") rawSQLDB.Exec("DROP TABLE actual_lrps;") mig = migrations.NewAddPlacementTagsToDesiredLRPs() }) It("appends itself to the migration list", func() { Expect(migrations.Migrations).To(ContainElement(mig))
"code.cloudfoundry.org/bbs/encryption" "code.cloudfoundry.org/bbs/format" "code.cloudfoundry.org/bbs/migration" "code.cloudfoundry.org/bbs/models" "code.cloudfoundry.org/bbs/models/test/model_helpers" "code.cloudfoundry.org/lager/lagertest" goetcd "github.com/coreos/go-etcd/etcd" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Base 64 Protobuf Encode Migration", func() { var ( migration migration.Migration serializer format.Serializer cryptor encryption.Cryptor logger *lagertest.TestLogger ) BeforeEach(func() { logger = lagertest.NewTestLogger("test") encryptionKey, err := encryption.NewKey("label", "passphrase") Expect(err).NotTo(HaveOccurred()) keyManager, err := encryption.NewKeyManager(encryptionKey, nil) Expect(err).NotTo(HaveOccurred()) cryptor = encryption.NewCryptor(keyManager, rand.Reader) serializer = format.NewSerializer(cryptor) migration = migrations.NewBase64ProtobufEncode() })
"strings" "code.cloudfoundry.org/bbs/db/migrations" "code.cloudfoundry.org/bbs/db/sqldb" "code.cloudfoundry.org/bbs/format" "code.cloudfoundry.org/bbs/migration" "code.cloudfoundry.org/bbs/test_helpers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Increase Run Info Column Migration", func() { if test_helpers.UseSQL() { var ( migration migration.Migration serializer format.Serializer flavor string migrationErr error ) BeforeEach(func() { flavor = os.Getenv("USE_SQL") rawSQLDB.Exec("DROP TABLE domains;") rawSQLDB.Exec("DROP TABLE tasks;") rawSQLDB.Exec("DROP TABLE desired_lrps;") rawSQLDB.Exec("DROP TABLE actual_lrps;") migration = migrations.NewIncreaseRunInfoColumnSize() serializer = format.NewSerializer(cryptor) }) It("appends itself to the migration list", func() {
"code.cloudfoundry.org/bbs/db/migrations" "code.cloudfoundry.org/bbs/encryption" "code.cloudfoundry.org/bbs/format" "code.cloudfoundry.org/bbs/migration" "code.cloudfoundry.org/bbs/models" "code.cloudfoundry.org/bbs/models/test/model_helpers" "code.cloudfoundry.org/lager/lagertest" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Change Timeouts to Milliseconds Migration", func() { var ( migration migration.Migration serializer format.Serializer cryptor encryption.Cryptor db *etcddb.ETCDDB logger *lagertest.TestLogger ) BeforeEach(func() { logger = lagertest.NewTestLogger("test") encryptionKey, err := encryption.NewKey("label", "passphrase") Expect(err).NotTo(HaveOccurred()) keyManager, err := encryption.NewKeyManager(encryptionKey, nil) Expect(err).NotTo(HaveOccurred()) cryptor = encryption.NewCryptor(keyManager, rand.Reader) serializer = format.NewSerializer(cryptor) migration = migrations.NewTimeoutMilliseconds() db = etcddb.NewETCD(format.ENCRYPTED_PROTO, 1, 1, 1*time.Minute, cryptor, storeClient, fakeClock)
package migrations_test import ( "code.cloudfoundry.org/bbs/db/migrations" "code.cloudfoundry.org/bbs/migration" "code.cloudfoundry.org/lager/lagertest" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("Add Cache Dependencies Migration", func() { var ( migration migration.Migration logger *lagertest.TestLogger ) BeforeEach(func() { logger = lagertest.NewTestLogger("test") migration = migrations.NewAddCachedDependencies() }) It("appends itself to the migration list", func() { Expect(migrations.Migrations).To(ContainElement(migration)) }) Describe("Version", func() { It("returns the timestamp from which it was created", func() { Expect(migration.Version()).To(BeEquivalentTo(1450292094)) }) })
"time" etcddb "code.cloudfoundry.org/bbs/db/etcd" "code.cloudfoundry.org/bbs/db/migrations" "code.cloudfoundry.org/bbs/format" "code.cloudfoundry.org/bbs/migration" "code.cloudfoundry.org/bbs/models" "code.cloudfoundry.org/bbs/models/test/model_helpers" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" ) var _ = Describe("ETCD to SQL Migration", func() { var ( migration migration.Migration serializer format.Serializer migrationErr error ) BeforeEach(func() { migration = migrations.NewETCDToSQL() serializer = format.NewSerializer(cryptor) rawSQLDB.Exec("DROP TABLE domains;") rawSQLDB.Exec("DROP TABLE tasks;") rawSQLDB.Exec("DROP TABLE desired_lrps;") rawSQLDB.Exec("DROP TABLE actual_lrps;") }) It("appends itself to the migration list", func() { Expect(migrations.Migrations).To(ContainElement(migration))