public void TestDiskCacheProviderCreate()
        {
            Assert.Throws <ArgumentNullException>(() => new DiskCacheProvider(null));

            DiskCacheProvider provider = new DiskCacheProvider(Path.GetTempPath());

            Assert.AreEqual(Path.GetTempPath(), provider.RootDirectory);
        }
        public void TestDiskCacheProviderLoad()
        {
            DiskCacheProvider provider = new DiskCacheProvider(Path.GetTempPath() + nameof(TestDiskCacheProviderLoad));

            provider.Store("test", "hellofriend");
            provider.Store("tost", "hallofreund");

            Assert.AreEqual("hellofriend", provider.Load <string>("test"));
            Assert.AreEqual("hallofreund", provider.Load <string>("tost"));
        }
        public void TestDiskCacheProviderStore()
        {
            DiskCacheProvider provider = new DiskCacheProvider(Path.GetTempPath() + nameof(TestDiskCacheProviderStore));

            provider.Store("test", "hellofriend");
            provider.Store("tost", "hallofreund");

            Assert.IsTrue(provider.IsCached("test"));
            Assert.IsTrue(provider.IsCached("tost"));
        }
    public void DiskCacheTest()
    {


      Task.Run( (Func<Task>) (async () =>
      {

        using ( var provider = new DiskCacheProvider( Path.Combine( Path.GetTempPath(), "Cache" ) ) )
        {
          var service = new CacheService( (IAsyncCacheProvider) provider, (Caching.CachePolicy) Caching.CachePolicy.Expires( (TimeSpan) TimeSpan.FromHours( (double) 1 ) ) );


          Assert.AreEqual( await service.Fetch( Path.GetRandomFileName().Replace( ".", "" ), "ABC" ), "ABC" );


          for ( var i = 0; i < 1000; i++ )
          {
            var _value = await service.FetchOrAdd<object>( (string) "Test", (Func<Task<object>>) this.ValueFactory );
            Assert.AreEqual( (object) _value, value );
          }


          {
            await service.Remove( "Test" );
            value = null;

            var _value = await service.Fetch( "Test", "Test" );
            Assert.AreEqual( _value, "Test" );
            Assert.AreNotEqual( _value, value );
          }


          {
            await service.Update<object>( (string) "Test", (Func<Task<object>>) this.ValueFactory );
            var _value = await service.FetchOrAdd<object>( (string) "Test", (Func<Task<object>>) this.ValueFactory );
            Assert.AreEqual( (object) _value, value );
          }

          {
            await service.Clear();
            var _value = await service.Fetch( "Test", "Test" );
            Assert.AreEqual( _value, "Test" );
            Assert.AreNotEqual( _value, value );
          }



        }
      }) ).Wait();
    }
        public void DiskCacheTest()
        {
            Task.Run((Func <Task>)(async() =>
            {
                using (var provider = new DiskCacheProvider(Path.Combine(Path.GetTempPath(), "Cache")))
                {
                    var service = new CacheService((IAsyncCacheProvider)provider, (Caching.CachePolicy)Caching.CachePolicy.Expires((TimeSpan)TimeSpan.FromHours((double)1)));


                    Assert.AreEqual(await service.Fetch(Path.GetRandomFileName().Replace(".", ""), "ABC"), "ABC");


                    for (var i = 0; i < 1000; i++)
                    {
                        var _value = await service.FetchOrAdd <object>((string)"Test", (Func <Task <object> >) this.ValueFactory);
                        Assert.AreEqual((object)_value, value);
                    }


                    {
                        await service.Remove("Test");
                        value = null;

                        var _value = await service.Fetch("Test", "Test");
                        Assert.AreEqual(_value, "Test");
                        Assert.AreNotEqual(_value, value);
                    }


                    {
                        await service.Update <object>((string)"Test", (Func <Task <object> >) this.ValueFactory);
                        var _value = await service.FetchOrAdd <object>((string)"Test", (Func <Task <object> >) this.ValueFactory);
                        Assert.AreEqual((object)_value, value);
                    }

                    {
                        await service.Clear();
                        var _value = await service.Fetch("Test", "Test");
                        Assert.AreEqual(_value, "Test");
                        Assert.AreNotEqual(_value, value);
                    }
                }
            })).Wait();
        }
Exemple #6
0
        public void DiskCache()
        {
            using (var provider = new DiskCacheProvider(@"C:\Temp\Cache"))
            {
                var cacheService = new CacheService(provider);


                var tasks = new List <Task>();


                //测试并发创建值
                for (int i = 0; i < 1000; i++)
                {
                    Func <int, Task> task = async(j) =>
                    {
                        await Task.Yield();

                        var value = await cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1)));

                        Assert.AreEqual(value, _value);
                    };

                    tasks.Add(task(i));
                }

                Task.WaitAll(tasks.ToArray());



                //测试从缓存读取
                for (int i = 0; i < 1000; i++)
                {
                    Func <int, Task> task = async(j) =>
                    {
                        await Task.Yield();

                        var value = await cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1)));

                        Assert.AreEqual(value, _value);
                    };

                    tasks.Add(task(i));
                }
                Task.WaitAll(tasks.ToArray());



                //清除缓存
                cacheService.Clear();
                _value = null;



                //测试创建新值
                for (int i = 0; i < 1000; i++)
                {
                    Func <int, Task> task = async(j) =>
                    {
                        await Task.Yield();

                        var value = await cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1)));

                        Assert.AreEqual(value, _value);
                    };

                    tasks.Add(task(i));
                }
                Task.WaitAll(tasks.ToArray());



                cacheService.Clear();
                {
                    _value = null;
                    var value = cacheService.FetchOrAdd("Test", ValueFactory, CachePolicy.Expires(TimeSpan.FromHours(1))).Result;

                    Assert.IsNotNull(_value);
                    Assert.AreEqual(_value, value);
                }
            }
        }
    public void DiskCache()
    {
      using ( var provider = new DiskCacheProvider( @"C:\Temp\Cache" ) )
      {
        var cacheService = new CacheService( provider );


        var tasks = new List<Task>();


        //测试并发创建值
        for ( int i = 0; i < 1000; i++ )
        {
          Func<int, Task> task = async ( j ) =>
          {
            await Task.Yield();

            var value = await cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) );
            Assert.AreEqual( value, _value );
          };

          tasks.Add( task( i ) );
        }

        Task.WaitAll( tasks.ToArray() );



        //测试从缓存读取
        for ( int i = 0; i < 1000; i++ )
        {
          Func<int, Task> task = async ( j ) =>
          {
            await Task.Yield();

            var value = await cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) );
            Assert.AreEqual( value, _value );
          };

          tasks.Add( task( i ) );
        }
        Task.WaitAll( tasks.ToArray() );




        //清除缓存
        cacheService.Clear();
        _value = null;




        //测试创建新值
        for ( int i = 0; i < 1000; i++ )
        {
          Func<int, Task> task = async ( j ) =>
          {
            await Task.Yield();

            var value = await cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) );
            Assert.AreEqual( value, _value );
          };

          tasks.Add( task( i ) );
        }
        Task.WaitAll( tasks.ToArray() );



        cacheService.Clear();
        {
          _value = null;
          var value = cacheService.FetchOrAdd( "Test", ValueFactory, CachePolicy.Expires( TimeSpan.FromHours( 1 ) ) ).Result;

          Assert.IsNotNull( _value );
          Assert.AreEqual( _value, value );
        }
      }
    }