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(); }