public void When_inizialize_twice_Then_throw_exception()
        {
            // Arrange
            MongoMigration.Initialize();

            // Act
            Action comparison = MongoMigration.Initialize;

            // Assert
            comparison.ShouldThrow <AlreadyInitializedException>();
        }
Ejemplo n.º 2
0
        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
            }));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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");
        }
Ejemplo n.º 6
0
 public void TearDown()
 {
     MongoMigration.Reset();
     _client = null;
     _runner.Dispose();
 }
 public void TearDown()
 {
     MongoMigration.Reset();
 }