コード例 #1
0
        public void DoesNotBackUpDocumentWithNoMigrations()
        {
            Document <Entity>();

            var backupWriter = new FakeBackupWriter();

            UseBackupWriter(backupWriter);
            DisableBackgroundMigrations();

            var id = NewId();

            using (var session = store.OpenSession())
            {
                session.Store(new Entity {
                    Id = id, Property = "Asger"
                });
                session.SaveChanges();
            }

            using (var session = store.OpenSession())
            {
                var entity = session.Load <Entity>(id);

                entity.Property = "Jacob";

                session.SaveChanges();

                // no migrations, means no backup
                backupWriter.Files.Count.ShouldBe(0);
            }
        }
コード例 #2
0
        public void RewritesAsZip()
        {
            var inner = new FakeBackupWriter();
            var decorator = new ZipBackupDecorator(inner);

            var document = new byte[] { 65, 66, 67 };

            decorator.Write("jacob.bak", document);

            using (var input = new MemoryStream(inner.Files["jacob.bak.zip"]))
            using (var zip = new GZipStream(input, CompressionMode.Decompress))
            using (var output = new MemoryStream())
            {
                zip.CopyTo(output);
                output.ToArray().ShouldBe(document);
            }
        }
コード例 #3
0
        public void RewritesAsZip()
        {
            var inner     = new FakeBackupWriter();
            var decorator = new ZipBackupDecorator(inner);

            var document = new byte[] { 65, 66, 67 };

            decorator.Write("jacob.bak", document);

            using (var input = new MemoryStream(inner.Files["jacob.bak.zip"]))
                using (var zip = new GZipStream(input, CompressionMode.Decompress))
                    using (var output = new MemoryStream())
                    {
                        zip.CopyTo(output);
                        output.ToArray().ShouldBe(document);
                    }
        }
コード例 #4
0
ファイル: DocumentSessionTests.cs プロジェクト: dcga/HybridDb
        public void DoesNotBackUpDocumentWithNoMigrations()
        {
            Document<Entity>();

            var backupWriter = new FakeBackupWriter();
            UseBackupWriter(backupWriter);

            var id = NewId();
            using (var session = store.OpenSession())
            {
                session.Store(new Entity { Id = id, Property = "Asger" });
                session.SaveChanges();
            }

            using (var session = store.OpenSession())
            {
                session.Load<Entity>(id);
                session.SaveChanges();

                // no migrations, means no backup
                backupWriter.Files.Count.ShouldBe(0);
            }
        }
コード例 #5
0
ファイル: DocumentSessionTests.cs プロジェクト: dcga/HybridDb
        public void BacksUpMigratedDocumentOnSave()
        {
            var id = NewId();

            Document<Entity>();

            using (var session = store.OpenSession())
            {
                session.Store(new Entity { Id = id, Property = "Asger" });
                session.SaveChanges();
            }

            Reset();

            Document<Entity>();
            DisableDocumentMigrationsInBackground();
            UseMigrations(
                new InlineMigration(1, new ChangeDocumentAsJObject<Entity>(x => { x["Property"] += "1"; })),
                new InlineMigration(2, new ChangeDocumentAsJObject<Entity>(x => { x["Property"] += "2"; })));

            var backupWriter = new FakeBackupWriter();
            UseBackupWriter(backupWriter);

            using (var session = store.OpenSession())
            {
                session.Load<Entity>(id);

                // no backup on load
                backupWriter.Files.Count.ShouldBe(0);

                session.SaveChanges();

                // backup on save
                backupWriter.Files.Count.ShouldBe(1);
                backupWriter.Files[string.Format("HybridDb.Tests.HybridDbTests+Entity_{0}_0.bak", id)]
                    .ShouldBe(configuration.Serializer.Serialize(new Entity { Id = id, Property = "Asger" }));
            }
        }
コード例 #6
0
        public void BacksUpMigratedDocumentOnSave()
        {
            var id = NewId();

            Document <Entity>();

            using (var session = store.OpenSession())
            {
                session.Store(new Entity {
                    Id = id, Property = "Asger"
                });
                session.SaveChanges();
            }

            var backupWriter = new FakeBackupWriter();

            ResetConfiguration();

            UseBackupWriter(backupWriter);
            Document <Entity>();
            DisableBackgroundMigrations();
            UseMigrations(
                new InlineMigration(1, new ChangeDocumentAsJObject <Entity>(x => { x["Property"] += "1"; })));

            using (var session = store.OpenSession())
            {
                session.Load <Entity>(id);

                // no backup on load
                backupWriter.Files.Count.ShouldBe(0);

                session.SaveChanges();

                // backup on save
                backupWriter.Files.Count.ShouldBe(1);
                backupWriter.Files[$"HybridDb.Tests.HybridDbTests+Entity_{id}_0.bak"]
                .ShouldBe(Encoding.UTF8.GetBytes(configuration.Serializer.Serialize(new Entity {
                    Id = id, Property = "Asger"
                })));
            }

            // try it again
            ResetConfiguration();

            UseBackupWriter(backupWriter);
            Document <Entity>();
            DisableBackgroundMigrations();
            UseMigrations(
                new InlineMigration(1, new ChangeDocumentAsJObject <Entity>(x => { x["Property"] += "1"; })),
                new InlineMigration(2, new ChangeDocumentAsJObject <Entity>(x => { x["Property"] += "2"; })));

            using (var session = store.OpenSession())
            {
                session.Load <Entity>(id);

                // no backup on load
                backupWriter.Files.Count.ShouldBe(1);

                session.SaveChanges();

                // backup on save
                backupWriter.Files.Count.ShouldBe(2);
                backupWriter.Files[$"HybridDb.Tests.HybridDbTests+Entity_{id}_1.bak"]
                .ShouldBe(Encoding.UTF8.GetBytes(configuration.Serializer.Serialize(new Entity {
                    Id = id, Property = "Asger1"
                })));
            }
        }