private async Task BloatDbAsync(Context context, IMemoizationSession session) { uint dummyFingerprintsToAdd = 40; // generates a ~52KB DB file var addBlock = new ActionBlock <int>( async _ => { var strongFingerprint = StrongFingerprint.Random(); var contentHashListWithDeterminism = new ContentHashListWithDeterminism( ContentHashList.Random(), Determinism[DeterminismNone]); var result = await session.AddOrGetContentHashListAsync( context, strongFingerprint, contentHashListWithDeterminism, Token); Assert.True(result.Succeeded); }, new ExecutionDataflowBlockOptions { MaxDegreeOfParallelism = System.Environment.ProcessorCount }); while (--dummyFingerprintsToAdd > 0) { await addBlock.SendAsync(0); } addBlock.Complete(); await addBlock.Completion; }
/// <inheritdoc /> public ServiceOperationContext(IMemoizationSession session, OperationContext context, DateTime startTime) : this() { Session = session; Context = context; StartTime = startTime; }
private static async Task Get(Context context, IMemoizationSession session, IList <StrongFingerprint> strongFingerprints) { var tasks = Enumerable.Range(0, strongFingerprints.Count).Select(i => Task.Run(async() => { var r = await session.GetContentHashListAsync(context, strongFingerprints[i], Token); r.Succeeded.Should().BeTrue(); })); await TaskSafetyHelpers.WhenAll(tasks); }
private static async Task GetSelectors(Context context, IMemoizationSession session, IList <Fingerprint> weakFingerprints) { foreach (var weakFingerprint in weakFingerprints) { await foreach (var result in session.GetSelectors(context, weakFingerprint, Token)) { result.Succeeded.Should().BeTrue(); } } }
private static async Task AddOrGet( Context context, IMemoizationSession session, List <Record> records) { var tasks = Enumerable.Range(0, records.Count).Select(i => Task.Run(async() => { var r = await session.AddOrGetContentHashListAsync( context, records[i].StrongFingerprint, records[i].ContentHashListWithDeterminism, Token); r.Succeeded.Should().BeTrue(); r.ContentHashListWithDeterminism.ContentHashList.Should().BeNull(); })); await TaskSafetyHelpers.WhenAll(tasks); }
private static async Task GetSelectors(Context context, IMemoizationSession session, IList <Fingerprint> weakFingerprints) { foreach (var weakFingerprint in weakFingerprints) { var getSelectorsEnumerator = session.GetSelectors(context, weakFingerprint, Token); Async::System.Collections.Generic.IAsyncEnumerator <GetSelectorResult> enumerator = getSelectorsEnumerator.GetEnumerator(); while (await enumerator.MoveNext(CancellationToken.None)) { GetSelectorResult result = enumerator.Current; result.Succeeded.Should().BeTrue(); } } }
private async Task <HashSet <StrongFingerprint> > AddRandomContentHashListsAsync( Context context, int count, IMemoizationSession session) { var strongFingerprints = new HashSet <StrongFingerprint>(); for (int i = 0; i < count; i++) { var strongFingerprint = StrongFingerprint.Random(); var contentHashListWithDeterminism = new ContentHashListWithDeterminism(ContentHashList.Random(), CacheDeterminism.None); await session.AddOrGetContentHashListAsync(context, strongFingerprint, contentHashListWithDeterminism, Token).ShouldBeSuccess(); strongFingerprints.Add(strongFingerprint); } return(strongFingerprints); }
/// <summary> /// Initializes a new instance of the <see cref="OneLevelCacheSession" /> class. /// </summary> public OneLevelCacheSession(string name, ImplicitPin implicitPin, IMemoizationSession memoizationSession, IContentSession contentSession) : base(name, implicitPin, memoizationSession, contentSession) { }
public TestMemoizationStore(IMemoizationSession iMemoizationSession) { _memoizationSession = iMemoizationSession; }