public void PerformaceMonitorTest() { using (var provider = new MemoryCacheProvider("Test").AsAsyncProvider()) { var cacheService = new CacheService(provider); var monitor = new CachePerformaceMonitor(); cacheService.RegisterMonitor(monitor); Task.Run((Func <Task>)(async() => { await cacheService.FetchOrAdd <string>((string)"Test", (Func <Task <string> >)(() => (Task <string>)Task.Run((Func <string>)(() => (string)"Test"))), (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1))); await cacheService.FetchOrAdd <string>((string)"Test", (Func <Task <string> >)(() => (Task <string>)Task.Run((Func <string>)(() => (string)"Test"))), (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1))); await Task.Delay(TimeSpan.FromSeconds(3)); monitor.Stop(); Assert.AreEqual(monitor.Hits(), 1); Assert.AreEqual(monitor.Misses(), 1); Assert.AreEqual(monitor.Hits("Test"), 1); Assert.AreEqual(monitor.Misses("Test"), 1); await cacheService.FetchOrAdd <string>((string)"Test", (Func <Task <string> >)(() => (Task <string>)Task.Run((Func <string>)(() => (string)"Test"))), (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1))); await cacheService.FetchOrAdd <string>((string)"Test", (Func <Task <string> >)(() => (Task <string>)Task.Run((Func <string>)(() => (string)"Test"))), (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1))); await Task.Delay(TimeSpan.FromSeconds(3)); Assert.AreEqual(monitor.Hits(), 1); Assert.AreEqual(monitor.Misses(), 1); Assert.AreEqual(monitor.Hits("Test"), 1); Assert.AreEqual(monitor.Misses("Test"), 1); monitor.Start(); await Task.Delay(TimeSpan.FromSeconds(1)); await cacheService.FetchOrAdd <string>((string)"Test", (Func <Task <string> >)(() => (Task <string>)Task.Run((Func <string>)(() => (string)"Test"))), (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1))); await cacheService.FetchOrAdd <string>((string)"Test", (Func <Task <string> >)(() => (Task <string>)Task.Run((Func <string>)(() => (string)"Test"))), (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1))); await Task.Delay(TimeSpan.FromSeconds(3)); Assert.AreEqual(monitor.Hits(), 3); Assert.AreEqual(monitor.Misses(), 1); Assert.AreEqual(monitor.Hits("Test"), 3); Assert.AreEqual(monitor.Misses("Test"), 1); }) ).Wait(); } }
public void PerformaceMonitorTest() { using ( var provider = new MemoryCacheProvider( "Test" ).AsAsyncProvider() ) { var cacheService = new CacheService( provider ); var monitor = new CachePerformaceMonitor(); cacheService.RegisterMonitor( monitor ); Task.Run( (Func<Task>) (async () => { await cacheService.FetchOrAdd<string>( (string) "Test", (Func<Task<string>>) (() => (Task<string>) Task.Run( (Func<string>) (() => (string) "Test") )), (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) ); await cacheService.FetchOrAdd<string>( (string) "Test", (Func<Task<string>>) (() => (Task<string>) Task.Run( (Func<string>) (() => (string) "Test") )), (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) ); await Task.Delay( TimeSpan.FromSeconds( 3 ) ); monitor.Stop(); Assert.AreEqual( monitor.Hits(), 1 ); Assert.AreEqual( monitor.Misses(), 1 ); Assert.AreEqual( monitor.Hits( "Test" ), 1 ); Assert.AreEqual( monitor.Misses( "Test" ), 1 ); await cacheService.FetchOrAdd<string>( (string) "Test", (Func<Task<string>>) (() => (Task<string>) Task.Run( (Func<string>) (() => (string) "Test") )), (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) ); await cacheService.FetchOrAdd<string>( (string) "Test", (Func<Task<string>>) (() => (Task<string>) Task.Run( (Func<string>) (() => (string) "Test") )), (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) ); await Task.Delay( TimeSpan.FromSeconds( 3 ) ); Assert.AreEqual( monitor.Hits(), 1 ); Assert.AreEqual( monitor.Misses(), 1 ); Assert.AreEqual( monitor.Hits( "Test" ), 1 ); Assert.AreEqual( monitor.Misses( "Test" ), 1 ); monitor.Start(); await Task.Delay( TimeSpan.FromSeconds( 1 ) ); await cacheService.FetchOrAdd<string>( (string) "Test", (Func<Task<string>>) (() => (Task<string>) Task.Run( (Func<string>) (() => (string) "Test") )), (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) ); await cacheService.FetchOrAdd<string>( (string) "Test", (Func<Task<string>>) (() => (Task<string>) Task.Run( (Func<string>) (() => (string) "Test") )), (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) ); await Task.Delay( TimeSpan.FromSeconds( 3 ) ); Assert.AreEqual( monitor.Hits(), 3 ); Assert.AreEqual( monitor.Misses(), 1 ); Assert.AreEqual( monitor.Hits( "Test" ), 3 ); Assert.AreEqual( monitor.Misses( "Test" ), 1 ); }) ).Wait(); } }