Example #1
0
        public void PurgeTimer()
        {
            var cfg = Config.Current;

            cfg.FileSystem = new InMemoryFileSystem();
            var settings = cfg.GetSettings <EngineSettings>();


            var engine = new EngineBuilder().Build <IRedisModel>(new RedisModel()).Result;
            var redis  = new LocalClient <IRedisModel>(engine).GetDispatchProxy();

            var mre = new ManualResetEvent(false);

            engine.CommandExecuted += (record, isLocal, events) =>
            {
                if (record.Command is PurgeExpiredKeysCommand)
                {
                    mre.Set();
                }
            };

            const string key = "key";

            redis.Set(key, "1");
            redis.Set("key2", "2");
            var expires = DateTime.Now;

            redis.Expire(key, expires);

            var signaled = mre.WaitOne(TimeSpan.FromSeconds(5));

            Assert.IsTrue(signaled, "No PurgeExpiredKeysCommand within time limit 5s");

            Assert.AreEqual(redis.KeyCount(), 1);
            engine.DisposeAsync().GetAwaiter().GetResult();

            engine = new EngineBuilder().Build <IRedisModel>(new RedisModel()).Result;
            redis  = new LocalClient <IRedisModel>(engine).GetDispatchProxy();
            Assert.AreEqual(redis.KeyCount(), 1);
            engine.DisposeAsync().GetAwaiter().GetResult();
        }