public async Task RoundTripIntegrationTest() { var cache = new InMemoryBlobCache(); var cachingHandler = new RateLimitedHttpMessageHandler(new HttpClientHandler(), Priority.UserInitiated, cacheResultFunc: async(rq, resp, key, ct) => { var data = await resp.Content.ReadAsByteArrayAsync(); await cache.Insert(key, data); }); var client = new HttpClient(cachingHandler); var origData = await client.GetStringAsync("http://httpbin.org/get"); Assert.True(origData.Contains("origin")); Assert.Equal(1, (await cache.GetAllKeys()).Count()); var offlineHandler = new OfflineHttpMessageHandler(async(rq, key, ct) => { return(await cache.Get(key)); }); client = new HttpClient(offlineHandler); var newData = await client.GetStringAsync("http://httpbin.org/get"); Assert.Equal(origData, newData); bool shouldDie = true; try { await client.GetStringAsync("http://httpbin.org/gzip"); } catch (Exception ex) { shouldDie = false; Console.WriteLine(ex); } Assert.False(shouldDie); }
public async Task RoundTripIntegrationTest() { var cache = new InMemoryBlobCache(); var cachingHandler = new RateLimitedHttpMessageHandler(new HttpClientHandler(), Priority.UserInitiated, cacheResultFunc: async (rq, resp, key, ct) => { var data = await resp.Content.ReadAsByteArrayAsync(); await cache.Insert(key, data); }); var client = new HttpClient(cachingHandler); var origData = await client.GetStringAsync("http://httpbin.org/get"); Assert.True(origData.Contains("origin")); Assert.Equal(1, (await cache.GetAllKeys()).Count()); var offlineHandler = new OfflineHttpMessageHandler(async (rq, key, ct) => { return await cache.Get(key); }); client = new HttpClient(offlineHandler); var newData = await client.GetStringAsync("http://httpbin.org/get"); Assert.Equal(origData, newData); bool shouldDie = true; try { await client.GetStringAsync("http://httpbin.org/gzip"); } catch (Exception ex) { shouldDie = false; Console.WriteLine(ex); } Assert.False(shouldDie); }
public void CanSetUserSettings() { Logger.Debug("CanSetUserSettings"); var autoResetEvent = new AutoResetEvent(false); var inMemoryBlobCache = new InMemoryBlobCache(); _autoSub.Provide <IBlobCache>(inMemoryBlobCache); var dataCache = _autoSub.Resolve <DataCache>(); dataCache.SetUserSettings(new UserSettings()) .Subscribe(_ => autoResetEvent.Set()); autoResetEvent.WaitOne(); string[] keys = null; inMemoryBlobCache.GetAllKeys() .Subscribe(enumerable => { keys = enumerable.ToArray(); autoResetEvent.Set(); }); autoResetEvent.WaitOne(); keys.Should().NotBeNull(); keys.Should().Contain("UserSettings"); }
public async Task SetOrCreateInsertsValueIntoBlobCache() { var cache = new InMemoryBlobCache(); var settings = new SettingsStorageProxy(cache); settings.SetOrCreateProxy(42, "TestNumber"); Assert.Equal(1, await cache.GetAllKeys().Count()); }
public async Task GetOrCreateInsertsDefaultValueIntoBlobCache() { var cache = new InMemoryBlobCache(); var settings = new SettingsStorageProxy(cache); settings.GetOrCreateProxy(42, "TestNumber"); Assert.Equal(1, await cache.GetAllKeys().Count()); }