Ejemplo n.º 1
0
        public void TestCacheEventListener()
        {
            // 1. Add first cache file
            ICacheKey key1       = new SimpleCacheKey("foo");
            int       value1Size = 101;

            byte[] value1 = new byte[value1Size];
            value1[80] = 99; // 'c', just so it's not all zeros for the equality test below.
            IBinaryResource resource1 = _cache.Insert(key1, WriterCallbacks.From(value1));

            VerifyListenerOnWriteAttempt(key1);
            string resourceId1 = VerifyListenerOnWriteSuccessAndGetResourceId(key1, value1Size);

            IBinaryResource resource1Again = _cache.GetResource(key1);

            Assert.AreEqual(((FileBinaryResource)resource1).File.FullName,
                            ((FileBinaryResource)resource1Again).File.FullName);
            VerifyListenerOnHit(key1, resourceId1);

            IBinaryResource resource1Again2 = _cache.GetResource(key1);

            Assert.AreEqual(((FileBinaryResource)resource1).File.FullName,
                            ((FileBinaryResource)resource1Again2).File.FullName);
            VerifyListenerOnHit(key1, resourceId1);

            SimpleCacheKey  missingKey = new SimpleCacheKey("nonexistent_key");
            IBinaryResource res2       = _cache.GetResource(missingKey);

            Assert.IsNull(res2);
            VerifyListenerOnMiss(missingKey);

            DuplicatingCacheEventListener listener = (DuplicatingCacheEventListener)_cacheEventListener;

            listener.Clear();
            _cache.ClearAll();
            Assert.IsTrue(listener.GetEvents("OnCleared").Count != 0);
            Assert.IsTrue(listener.GetEvents("OnHit").Count == 0);
            Assert.IsTrue(listener.GetEvents("OnMiss").Count == 0);
            Assert.IsTrue(listener.GetEvents("OnWriteAttempt").Count == 0);
            Assert.IsTrue(listener.GetEvents("OnWriteSuccess").Count == 0);
            Assert.IsTrue(listener.GetEvents("OnReadException").Count == 0);
            Assert.IsTrue(listener.GetEvents("OnWriteException").Count == 0);
            Assert.IsTrue(listener.GetEvents("OnEviction").Count == 0);
        }