public void PinResultMissFromMemoization() { PinResult pinResult = PinResult.ContentNotFound; CasHash hash = RandomHelpers.CreateRandomCasHash(); Possible <string, Failure> maybe = pinResult.FromMemoization(hash, CacheId); Assert.False(maybe.Succeeded); NoCasEntryFailure failure = maybe.Failure as NoCasEntryFailure; Assert.False(failure == null); string failureMessage = failure.Describe(); Assert.Contains(hash.ToString(), failureMessage); Assert.Contains(CacheId, failureMessage); }
public Task <Possible <string, Failure> > PinToCasAsync(CasHash hash, UrgencyHint urgencyHint, Guid activityId) { Contract.Requires(!IsClosed); return(Task.Run <Possible <string, Failure> >(() => { using (var counter = m_counters.PinToCasCounter()) { using (var eventing = new PinToCasActivity(BasicFilesystemCache.EventSource, activityId, this)) { eventing.Start(hash, urgencyHint); if (!m_pinnedToCas.ContainsKey(hash)) { if (!m_cache.CasExists(hash)) { counter.PinMiss(); var result = new NoCasEntryFailure(m_cache.CacheId, hash); return eventing.Returns(result); } if (!m_pinnedToCas.TryAdd(hash, 0)) { counter.PinRaced(); } } else { counter.PinDup(); } return eventing.Returns(m_cache.CacheId); } } })); }