예제 #1
0
	AfterEach(func() {
		ginkgomon.Kill(migrationProcess)
	})

	It("fetches the migration version from the database", func() {
		Eventually(fakeDB.VersionCallCount).Should(Equal(1))
		Consistently(fakeDB.VersionCallCount).Should(Equal(1))

		ginkgomon.Interrupt(migrationProcess)
		Eventually(migrationProcess.Wait()).Should(Receive(BeNil()))
	})

	Context("when there is no version", func() {
		BeforeEach(func() {
			fakeDB.VersionReturns(nil, models.ErrResourceNotFound)
			fakeMigration.VersionReturns(9)
		})

		It("creates a version with the correct target version and does not run any migrations", func() {
			Eventually(fakeDB.SetVersionCallCount).Should(Equal(1))

			_, version := fakeDB.SetVersionArgsForCall(0)
			Expect(version.CurrentVersion).To(BeEquivalentTo(9))
			Expect(version.TargetVersion).To(BeEquivalentTo(9))

			Expect(fakeMigration.UpCallCount()).To(Equal(0))
		})
	})

	Context("when fetching the version fails", func() {
		BeforeEach(func() {
예제 #2
0
파일: manager_test.go 프로젝트: timani/bbs
				Consistently(fakeSQLDB.VersionCallCount).Should(Equal(1))

				Eventually(fakeETCDDB.VersionCallCount).Should(Equal(1))
				Consistently(fakeETCDDB.VersionCallCount).Should(Equal(1))

				ginkgomon.Interrupt(migrationProcess)
				Eventually(migrationProcess.Wait()).Should(Receive(BeNil()))
			})

			// cross-db migration
			Context("but etcd does", func() {
				var fakeMigrationToSQL *migrationfakes.FakeMigration

				BeforeEach(func() {
					fakeMigrationToSQL = &migrationfakes.FakeMigration{}
					fakeMigrationToSQL.VersionReturns(102)
					fakeMigrationToSQL.RequiresSQLReturns(true)

					dbVersion.CurrentVersion = 99
					dbVersion.TargetVersion = 99
					fakeMigration.VersionReturns(100)

					migrations = []migration.Migration{fakeMigrationToSQL, fakeMigration}
				})

				It("sorts all the migrations and runs them", func() {
					Eventually(migrationProcess.Ready()).Should(BeClosed())
					Expect(migrationsDone).To(BeClosed())
					Expect(fakeETCDDB.SetVersionCallCount()).To(Equal(2))

					_, version := fakeETCDDB.SetVersionArgsForCall(0)