public void When_inizialize_twice_Then_throw_exception() { // Arrange MongoMigration.Initialize(); // Act Action comparison = MongoMigration.Initialize; // Assert comparison.ShouldThrow <AlreadyInitializedException>(); }
private Task SaveMigrationRecord(IMongoDatabase database, MongoMigration migration) { var migrations = database.GetCollection <MongoMigrationRecord>("__Migrations"); return(migrations.InsertOneAsync(new MongoMigrationRecord { Name = migration.Name, MigrationId = migration.Id, MigrationDate = migration.MigrationDate })); }
public void When_migrating_number_of_documents() { // Arrange // Worm up MongoCache ClearCollection(); AddDocumentsToCache(); ClearCollection(); // Act // Measure time of MongoDb processing without Mongo.Migration var sw = new Stopwatch(); sw.Start(); InsertMany(DOCUMENT_COUNT, false); MigrateAll(false); sw.Stop(); ClearCollection(); // Measure time of MongoDb processing without Mongo.Migration MongoMigration.Initialize(); var swWithMigration = new Stopwatch(); swWithMigration.Start(); InsertMany(DOCUMENT_COUNT, true); MigrateAll(true); swWithMigration.Stop(); ClearCollection(); var result = swWithMigration.ElapsedMilliseconds - sw.ElapsedMilliseconds; Console.WriteLine( $"MongoDB: {sw.ElapsedMilliseconds}ms, Mongo.Migration: {swWithMigration.ElapsedMilliseconds}ms, Diff: {result}ms (Tolerance: {TOLERANCE_MS}ms), Documents: {DOCUMENT_COUNT}, Migrations per Document: 2"); // Assert result.Should().BeLessThan(TOLERANCE_MS); }
private static void Main(string[] args) { // Arrange // Worm up MongoCache ClearCollection(); AddDocumentsToCache(); ClearCollection(); // Act // Measure time of MongoDb processing without Mongo.Migration var sw = new Stopwatch(); sw.Start(); InsertMany(DOCUMENT_COUNT, false); MigrateAll(false); sw.Stop(); ClearCollection(); // Measure time of MongoDb processing without Mongo.Migration MongoMigration.MigrationOnDeserialization(); var swWithMigration = new Stopwatch(); swWithMigration.Start(); InsertMany(DOCUMENT_COUNT, true); MigrateAll(true); swWithMigration.Stop(); ClearCollection(); var result = swWithMigration.ElapsedMilliseconds - sw.ElapsedMilliseconds; System.Console.WriteLine( $"MongoDB: {sw.ElapsedMilliseconds}ms, Mongo.Migration: {swWithMigration.ElapsedMilliseconds}ms, Diff: {result}ms (Tolerance: {TOLERANCE_MS}ms), Documents: {DOCUMENT_COUNT}, Migrations per Document: 2"); System.Console.ReadLine(); }
private static void Main(string[] args) { // Init MongoDB var runner = MongoDbRunner.StartForDebugging(); var client = new MongoClient(runner.ConnectionString); // Init MongoMigration MongoMigration.Initialize(); client.GetDatabase("TestCars").DropCollection("Car"); // Insert old and new version of cars into MongoDB var cars = new List <BsonDocument> { new BsonDocument { { "Dors", 3 }, { "Type", "Cabrio" }, { "UnnecessaryField", "" } }, new BsonDocument { { "Dors", 5 }, { "Type", "Combi" }, { "UnnecessaryField", "" } }, new BsonDocument { { "Doors", 3 }, { "Type", "Truck" }, { "UnnecessaryField", "" }, { "Version", "0.0.1" } }, new BsonDocument { { "Doors", 5 }, { "Type", "Van" }, { "Version", "0.1.1" } } }; var bsonCollection = client.GetDatabase("TestCars").GetCollection <BsonDocument>("Car"); bsonCollection.InsertManyAsync(cars).Wait(); Console.WriteLine("Migrate from:"); cars.ForEach(c => Console.WriteLine(c.ToBsonDocument() + "\n")); // Migrate old version to current version by reading collection var typedCollection = client.GetDatabase("TestCars").GetCollection <Car>("Car"); var result = typedCollection.FindAsync(_ => true).Result.ToListAsync().Result; Console.WriteLine("To:"); result.ForEach(r => Console.WriteLine(r.ToBsonDocument() + "\n")); // Create new car and add it with current version number into MongoDB var id = ObjectId.GenerateNewId(); var type = "Test" + id; var car = new Car { Doors = 2, Type = type }; typedCollection.InsertOne(car); var test = typedCollection.FindAsync(Builders <Car> .Filter.Eq(c => c.Type, type)).Result.Single(); var aggregate = typedCollection.Aggregate() .Match(new BsonDocument { { "Dors", 3 } }); var results = aggregate.ToListAsync().Result; Console.WriteLine("New Car was created with version: " + test.Version); Console.WriteLine("\n"); Console.WriteLine("\n"); Console.WriteLine("Press any Key to exit..."); Console.Read(); client.GetDatabase("TestCars").DropCollection("Car"); }
public void TearDown() { MongoMigration.Reset(); _client = null; _runner.Dispose(); }
public void TearDown() { MongoMigration.Reset(); }