Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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();
        }
Esempio n. 3
0
        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);
        }