public void Before() { _runner = MongoDbRunner.Start(); _client = new MongoClient(_runner.ConnectionString); _db = new MongoDatabase(_client); MongoMigrationClient.Initialize(_client, new MongoMigrationSettings { Database = Names.Database, ConnectionString = _runner.ConnectionString }); }
public void When_inizialize_twice_Then_throw_exception() { // Arrange var registry = Substitute.For <IComponentRegistry>(); var mongoMigration = Substitute.For <IMongoMigration>(); registry.Get <IMongoMigration>().Returns(mongoMigration); // Act MongoMigrationClient.Initialize(registry); Action comparison = () => MongoMigrationClient.Initialize(registry); // Assert comparison.Should().Throw <AlreadyInitializedException>(); }
static void Main(string[] args) { // Init MongoDB var runner = MongoDbRunner.StartForDebugging(); var client = new MongoClient(runner.ConnectionString); client.GetDatabase("TestCars").DropCollection("Car"); client.GetDatabase("TestCars").DropCollection("_migrations"); client.GetDatabase("TestCars").DropCollection(nameof(SparePart)); // Init MongoMigration MongoMigrationClient.Initialize( client, new MongoMigrationSettings() { ConnectionString = runner.ConnectionString, Database = "TestCars" }, new LightInjectAdapter(new LightInject.ServiceContainer())); Console.WriteLine("Apply database migrations: "); Console.WriteLine("\n"); var migrationsCollection = client.GetDatabase("TestCars").GetCollection <BsonDocument>("_migrations"); var migrations = migrationsCollection.FindAsync(_ => true).Result.ToListAsync().Result; migrations.ForEach(r => Console.WriteLine(r + "\n")); var carsCollection = client.GetDatabase("TestCars").GetCollection <Car>("Car"); var addedInMigration = carsCollection.FindAsync(Builders <Car> .Filter.Eq(c => c.Type, "AddedInMigration")).Result.FirstOrDefault(); Console.WriteLine("New Car was added and updated in database migrations: "); Console.WriteLine(addedInMigration?.ToBsonDocument() + "\n"); Console.WriteLine("New collection was added in database: "); Console.WriteLine(nameof(SparePart) + "\n"); Console.WriteLine("\n"); Console.WriteLine("Press any Key to exit..."); Console.Read(); client.GetDatabase("TestCars").DropCollection("Car"); client.GetDatabase("TestCars").DropCollection("_migrations"); }
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 MongoMigrationClient.Initialize(_client, new MongoMigrationSettings()); 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(); }
public void When_migrating_number_of_documents() { // Arrange // Worm up MongoCache ClearCollection(); AddDocumentsToCache(); ClearCollection(); // Act // Measure time of MongoDb processing without Mongo.Migration InsertMany(DOCUMENT_COUNT, false); var sw = new Stopwatch(); sw.Start(); MigrateAll(false); sw.Stop(); ClearCollection(); // Measure time of MongoDb processing without Mongo.Migration InsertMany(DOCUMENT_COUNT, true); var swWithMigration = new Stopwatch(); swWithMigration.Start(); MongoMigrationClient.Initialize(_client); 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); }
static void Main(string[] args) { var testsDb = "tests-db"; var carCollection = "Car"; // Init MongoDB var runner = MongoDbRunner.StartForDebugging(); var client = new MongoClient(runner.ConnectionString); client.GetDatabase(testsDb).DropCollection(carCollection); // 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(testsDb).GetCollection <BsonDocument>(carCollection); bsonCollection.InsertManyAsync(cars).Wait(); // Init MongoMigration MongoMigrationClient.Initialize(client, new LightInjectAdapter(new LightInject.ServiceContainer())); 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(testsDb).DropCollection(carCollection); }
public void TearDown() { MongoMigrationClient.Reset(); _client = null; _runner.Dispose(); }
public void After() { MongoMigrationClient.Reset(); _runner.Dispose(); }
public void InitMigrations() { MongoMigrationClient.Initialize(client, new LightInjectAdapter(new LightInject.ServiceContainer())); }
public void TearDown() { MongoMigrationClient.Reset(); }