diff --git a/src/Enyim.Caching/MemcachedClient.cs b/src/Enyim.Caching/MemcachedClient.cs index 671ed8bc..04d6536f 100755 --- a/src/Enyim.Caching/MemcachedClient.cs +++ b/src/Enyim.Caching/MemcachedClient.cs @@ -1204,6 +1204,27 @@ public ServerStats Stats(string type) return new ServerStats(results, _userIPv6); } + public Task StatsAsync() + { + return StatsAsync(null); + } + + public async Task StatsAsync(string type) + { + var results = new Dictionary>(); + + foreach (var node in _pool.GetWorkingNodes()) + { + var cmd = _pool.OperationFactory.Stats(type); + await node.ExecuteAsync(cmd); + var endpoint = node.EndPoint; + lock (results) + results[endpoint] = cmd.Result; + } + + return new ServerStats(results, _userIPv6); + } + /// /// Removes the specified item from the cache. /// diff --git a/test/Enyim.Caching.Tests/MemcachedClienStatsTests.cs b/test/Enyim.Caching.Tests/MemcachedClienStatsTests.cs index 1932e231..4ef73e3f 100644 --- a/test/Enyim.Caching.Tests/MemcachedClienStatsTests.cs +++ b/test/Enyim.Caching.Tests/MemcachedClienStatsTests.cs @@ -1,6 +1,7 @@ using Enyim.Caching.Configuration; using System; using System.Net; +using System.Threading.Tasks; using Xunit; namespace Enyim.Caching.Tests @@ -17,5 +18,17 @@ public void When_Getting_Uptime_Is_Successful() uptime = _client.Stats().GetUptime(ipEndPoint); Assert.True(uptime > TimeSpan.Zero); } + + [Fact] + public async Task When_Getting_Uptime_Using_Async_Stats_Is_Successful() + { + var uptime = (await _client.StatsAsync()).GetUptime(new DnsEndPoint(_memcachedHost, _memcachedPort)); + Assert.True(uptime > TimeSpan.Zero); + + var ipEndPoint = new DnsEndPoint(_memcachedHost, _memcachedPort).GetIPEndPoint(false); + uptime = (await _client.StatsAsync()).GetUptime(ipEndPoint); + Console.WriteLine("uptime: " + uptime); + Assert.True(uptime > TimeSpan.Zero); + } } } diff --git a/test/Enyim.Caching.Tests/MemcachedClientTestsBase.cs b/test/Enyim.Caching.Tests/MemcachedClientTestsBase.cs index 006b5c55..b1d998e6 100644 --- a/test/Enyim.Caching.Tests/MemcachedClientTestsBase.cs +++ b/test/Enyim.Caching.Tests/MemcachedClientTestsBase.cs @@ -2,13 +2,10 @@ using Enyim.Caching.Memcached; using Enyim.Caching.Memcached.Results; using Enyim.Caching.Memcached.Transcoders; -using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading.Tasks; using Xunit;