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;
        }
Exemplo n.º 2
0
 /// <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);
        }
Exemplo n.º 6
0
 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);
        }
Exemplo n.º 8
0
 /// <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)
 {
 }
Exemplo n.º 9
0
 public TestMemoizationStore(IMemoizationSession iMemoizationSession)
 {
     _memoizationSession = iMemoizationSession;
 }