private async Task <long> AggressiveCacheOnLazilyLoadAsyncTest( IDocumentStore store, AsyncTestCaseHolder testCaseHolder, AggressiveCacheMode aggressiveCacheMode, bool createVersion2 = true) { return(await AggressiveCacheOnLazilyLoadAsyncTest(store, testCaseHolder.LoadFuncAsync, aggressiveCacheMode, createVersion2)); }
private async Task <long> AggressiveCacheOnLazilyLoadTest( IDocumentStore store, TestCaseHolder testCaseHolder, AggressiveCacheMode doNotTrackChanges, bool createVersion2 = true) { return(await AggressiveCacheOnLazilyLoadTest(store, testCaseHolder.LoadFunc, doNotTrackChanges, createVersion2)); }
private static async Task <long> AggressiveCacheOnLazilyLoadAsyncTest( IDocumentStore store, Func <IAsyncDocumentSession, string, Task> loadFuncAsync, AggressiveCacheMode aggressiveCacheMode, bool createVersion2 = true) { const string docId = "doc-1"; using (var session = store.OpenAsyncSession()) { await session.StoreAsync(new Doc(), docId); await session.SaveChangesAsync(); } using (var session = store.OpenAsyncSession()) using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), AggressiveCacheMode.TrackChanges)) { await loadFuncAsync(session, docId); } if (createVersion2) { var amre = new AsyncManualResetEvent(); var observable = store.Changes().ForDocument(docId); await observable.EnsureSubscribedNow(); observable.Subscribe(_ => amre.Set()); using var session = store.OpenAsyncSession(); await session.StoreAsync(new Doc { Version = "2" }, docId); await session.SaveChangesAsync(); await amre.WaitAsync(TimeSpan.FromSeconds(30)); } using (var session = store.OpenAsyncSession()) using (session.Advanced.DocumentStore.AggressivelyCacheFor(TimeSpan.FromMinutes(5), aggressiveCacheMode)) { var loadAsync = session.Advanced.Lazily.LoadAsync <Doc>(docId); _ = await loadAsync.Value; return(session.Advanced.NumberOfRequests); } }
public AggressiveCacheOptions(TimeSpan duration, AggressiveCacheMode mode) { Duration = duration; Mode = mode; }
public abstract IDisposable AggressivelyCacheFor(TimeSpan cacheDuration, AggressiveCacheMode mode, string database = null);