public async Task Start(string[] arguments) { _running = true; _settings = new MemstateSettings(arguments); _settings.WithInmemoryStorage(); _settings.LoggerFactory.AddConsole((category, level) => true); _engine = new EngineBuilder(_settings).Build <KeyValueStore <int> >(); _host = new WebHostBuilder() .UseKestrel() .UseContentRoot(Directory.GetCurrentDirectory()) .UseStartup <Web.Startup>() .ConfigureServices(services => services.AddSingleton(_settings)) .Build(); _producerThread = new Thread(Producer); _consumerThread = new Thread(Consumer); _producerThread.Start(); _consumerThread.Start(); await _host.StartAsync(); }
public void SetUp() { _settings = new MemstateSettings(); _settings.WithInmemoryStorage(); _client = new LocalClient <UsersModel>(() => new UsersModel(), _settings); }
public void PurgeTimer() { var settings = new MemstateSettings(); settings.WithInmemoryStorage(); var engine = new EngineBuilder(settings).Build <IRedisModel>(new RedisModel()); 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(settings).Build <IRedisModel>(new RedisModel()); redis = new LocalClient <IRedisModel>(engine).GetDispatchProxy(); Assert.AreEqual(redis.KeyCount(), 1); engine.DisposeAsync().GetAwaiter().GetResult(); }