public void Can_set_collection_compressed_when_it_has_docs() { var random = new Random(343); using var store = GetDocumentStore(); var rnd = Enumerable.Range(1, 10) .Select(i => new string((char)(65 + i), 256)) .ToList(); using (var s = store.OpenSession()) { for (int i = 0; i < 5; i++) { s.Store(new User { Items = Enumerable.Range(1, random.Next(1, 10)) .Select(x => rnd[x]) .ToList() }, "users/" + i); } s.SaveChanges(); } var record = store.Maintenance.Server.Send(new GetDatabaseRecordOperation(store.Database)); record.DocumentsCompression = new DocumentsCompressionConfiguration(true, "Users"); store.Maintenance.Server.Send(new UpdateDatabaseOperation(record, record.Etag)); using (var s = store.OpenSession()) { for (int i = 5; i < 1024; i++) { s.Store(new User { Items = Enumerable.Range(1, random.Next(1, 10)) .Select(x => rnd[x]) .ToList() }, "users/" + i); } s.SaveChanges(); } var executor = store.GetRequestExecutor(); using var _ = executor.ContextPool.AllocateOperationContext(out var ctx); var cmd = new GetDocumentSize("users/1000"); executor.Execute(cmd, ctx); Assert.True(cmd.Result.ActualSize > cmd.Result.AllocatedSize); }
public void Can_compact_from_compression_to_not_compressed() { var path = NewDataPath(); if (Directory.Exists(path)) { Directory.Delete(path, true); } using var store = GetDocumentStore(new Options { Path = path, RunInMemory = false, ModifyDatabaseRecord = r => r.DocumentsCompression = new DocumentsCompressionConfiguration(true, "Orders") }); store.Maintenance.Send(new CreateSampleDataOperation()); var executor = store.GetRequestExecutor(); using (var _ = executor.ContextPool.AllocateOperationContext(out var ctx)) { var cmd = new GetDocumentSize("orders/830-A"); executor.Execute(cmd, ctx); Assert.True(cmd.Result.ActualSize > cmd.Result.AllocatedSize); } var record = store.Maintenance.Server.Send(new GetDatabaseRecordOperation(store.Database)); record.DocumentsCompression = new DocumentsCompressionConfiguration(true); store.Maintenance.Server.Send(new UpdateDatabaseOperation(record, record.Etag)); var op = store.Maintenance.Server.Send(new CompactDatabaseOperation(new CompactSettings { DatabaseName = store.Database, Documents = true, })); op.WaitForCompletion(); WaitForIndexing(store); var operation = store.Maintenance.Send(new GetStatisticsOperation()); Assert.True(operation.Indexes.All(x => x.State == IndexState.Normal)); using (var _ = executor.ContextPool.AllocateOperationContext(out var ctx)) { var cmd = new GetDocumentSize("orders/830-A"); executor.Execute(cmd, ctx); Assert.True(cmd.Result.ActualSize <= cmd.Result.AllocatedSize); } }