public async Task UpgradeToLatestAvailableVersionTest() { var settings = new UpgradeSettings(); var verCollection = _database.GetCollection <DbVersion>(settings.VersionCollectionName); await _database.DropCollectionAsync(settings.VersionCollectionName); var dbLock = new MongoDbLock(_settings, _database); var tracker = new MongoMigrationTracker(_settings, _database); //Step2: Apply upgrade chain var upgrades = new MigrationChain(new List <IUpgradeLink> { new UpgradeStub("0.0", "0.1"), new UpgradeStub("0.1", "0.2"), new UpgradeStub("0.2", "0.3"), }); var upgrader = new MongoMigrator( _database, upgrades, new UpgradeStub(null, "0.0"), settings, dbLock, tracker, new NullLoggerFactory()); await upgrader.UpgradeOrInit(); var ver = (await verCollection.FindAsync(e => true)).First(); Assert.AreEqual(Version.Parse("0.3"), ver.Version, "After init, DB should marked with the latest version"); Assert.IsTrue(ver.AutoUpgradeEnabled); }
public async Task InitToTheLastVersionTest() { var settings = new UpgradeSettings(); var verCollection = _database.GetCollection <DbVersion>(settings.VersionCollectionName); await _database.DropCollectionAsync(settings.VersionCollectionName); var dbLock = new MongoDbLock(_settings, _database); var tracker = new MongoMigrationTracker(_settings, _database); var upgrades = new MigrationChain(new List <IUpgradeLink> { new UpgradeStub("0.0", "0.1"), new UpgradeStub("0.1", "0.2"), new UpgradeStub("0.2", "0.3"), }); var upgrader = new MongoMigrator( _database, upgrades, null, settings, dbLock, tracker, new NullLoggerFactory()); await upgrader.UpgradeOrInit(); var ver = (await verCollection.FindAsync(e => true)).First(); Assert.AreEqual(Version.Parse("0.3"), ver.Version); Assert.IsTrue(ver.AutoUpgradeEnabled); Assert.IsNull(ver.LastUpgradeError); }
public async Task InitFailTest() { var settings = new UpgradeSettings(); var verCollection = _database.GetCollection <DbVersion>(settings.VersionCollectionName); await _database.DropCollectionAsync(settings.VersionCollectionName); var dbLock = new MongoDbLock(_settings, _database); var tracker = new MongoMigrationTracker(_settings, _database); var upgrades = new MigrationChain(new List <IUpgradeLink> { new UpgradeStub("0.0", "0.1"), new UpgradeStub("0.1", "0.2"), new UpgradeStub("0.2", "0.3"), }); var upgrader = new MongoMigrator( _database, upgrades, new UpgradeStub(null, "0.0", (s, db, log) => throw new Exception("test init failed")), settings, dbLock, tracker, new NullLoggerFactory()); var ex = Assert.ThrowsAsync <MigrationException>(upgrader.UpgradeOrInit); Assert.IsNotNull(ex.InnerException); Assert.AreEqual("test init failed", ex.InnerException?.Message); var ver = (await verCollection.FindAsync(e => true)).First(); Assert.IsNull(ver.Version); Assert.IsFalse(ver.AutoUpgradeEnabled); Assert.IsNotNull(ver.LastUpgradeError); Assert.IsTrue(ver.LastUpgradeError.Contains("test init failed")); }
public async Task EmptyUpgradeListTest() { var settings = new UpgradeSettings(); var verCollection = _database.GetCollection <DbVersion>(settings.VersionCollectionName); await _database.DropCollectionAsync(settings.VersionCollectionName); var dbLock = new MongoDbLock(_settings, _database); var tracker = new MongoMigrationTracker(_settings, _database); var upgrader = new MongoMigrator( _database, new MigrationChain(null), null, settings, dbLock, tracker, new NullLoggerFactory()); await upgrader.UpgradeOrInit(); var ver = (await verCollection.FindAsync(e => true)).First(); Assert.IsNull(ver.Version); Assert.IsTrue(ver.AutoUpgradeEnabled); }
public async Task UpgradeWithDifferentVerCollectionNameTest() { var settings = new UpgradeSettings { VersionCollectionName = "testtestete" }; var verCollection = _database.GetCollection <DbVersion>(settings.VersionCollectionName); await _database.DropCollectionAsync(settings.VersionCollectionName); var dbLock = new MongoDbLock(settings, _database); var tracker = new MongoMigrationTracker(settings, _database); //Step1: init db var upgrader = new MongoMigrator( _database, new MigrationChain(null), new UpgradeStub(null, "0.0"), settings, dbLock, tracker, new NullLoggerFactory()); await upgrader.UpgradeOrInit(); var ver = (await verCollection.FindAsync(e => true)).First(); Assert.AreEqual(Version.Parse("0.0"), ver.Version); //Step2: Apply upgrade chain var upgrades = new MigrationChain(new List <IUpgradeLink> { new UpgradeStub("0.0", "0.1"), new UpgradeStub("0.1", "0.2"), new UpgradeStub("0.2", "0.3"), }); upgrader = new MongoMigrator( _database, upgrades, new UpgradeStub(null, "0.0", (s, db, log) => throw new Exception("test init failed")), settings, dbLock, tracker, new NullLoggerFactory()); await upgrader.UpgradeOrInit(); ver = (await verCollection.FindAsync(e => true)).First(); Assert.AreEqual(Version.Parse("0.3"), ver.Version); Assert.IsTrue(ver.AutoUpgradeEnabled); }