public async Task Insert_And_Count_WorksCorrectly() { const int port = 9997; const string key = "key"; byte[] data = Encoding.UTF8.GetBytes("lorem ipsum"); DateTime expiry = DateTime.MaxValue; int countFromClientApi; int countFromStorage; IExpiryProvider expiryProvider = new StorageExpiryProvider(); using (IStorage storage = new InMemoryStorage(expiryProvider)) { var processor = new SocketProcessor(); var requestProcessor = new RequestProcessor(storage); using (IListener server = new Listener(IPAddress.Any, port, processor, requestProcessor)) { server.Start(); IKronosClient client = KronosClientFactory.CreateClient(localHost, port); await client.InsertAsync(key, data, expiry); countFromClientApi = await client.CountAsync(); countFromStorage = storage.Count; } } Assert.Equal(countFromClientApi, 1); Assert.Equal(countFromClientApi, countFromStorage); }
public static async Task StartAsync(int port) { IPAddress localAddr = await EndpointUtils.GetIPAsync(); IExpiryProvider expiryProvider = new StorageExpiryProvider(); IStorage storage = new InMemoryStorage(expiryProvider); IRequestProcessor requestProcessor = new RequestProcessor(storage); IProcessor processor = new SocketProcessor(); IListener server = new Listener(localAddr, port, processor, requestProcessor); server.Start(); var reset = new ManualResetEventSlim(); Console.CancelKeyPress += (sender, e) => { reset.Set(); }; reset.Wait(); // dispose components storage.Dispose(); server.Dispose(); }
public async Task Contains_WorksCorrectly() { const int port = 9995; const string key = "key"; bool containsFromClientApi; bool containsFromStorage; IExpiryProvider expiryProvider = new StorageExpiryProvider(); using (IStorage storage = new InMemoryStorage(expiryProvider)) { var processor = new SocketProcessor(); var requestProcessor = new RequestProcessor(storage); using (IListener server = new Listener(IPAddress.Any, port, processor, requestProcessor)) { server.Start(); IKronosClient client = KronosClientFactory.CreateClient(localHost, port); containsFromClientApi = await client.ContainsAsync(key); containsFromStorage = storage.Contains(key); } } Assert.False(containsFromClientApi); Assert.Equal(containsFromClientApi, containsFromStorage); }
public async Task Start_CanDeleteObjectsFromStorage() { var data = new ConcurrentDictionary <NodeMetatada, byte[]> { [new NodeMetatada("one", DateTime.UtcNow)] = new byte[0], [new NodeMetatada("two", DateTime.MaxValue)] = new byte[0] }; StorageExpiryProvider provider = new StorageExpiryProvider(); provider.Start(data, CancellationToken.None); await Task.Delay(StorageExpiryProvider.Timer + 100); Assert.Equal(data.Count, 1); }