From f2aab4cf039793c0d3b7e84796d29a8a6944e101 Mon Sep 17 00:00:00 2001 From: "nicolas.dorier" Date: Sun, 16 Feb 2020 23:04:48 +0900 Subject: [PATCH] Add warning if fail to load rates from cache --- BTCPayServer.Tests/RateRulesTest.cs | 30 +++++++++++++++++++ .../HostedServices/RatesHostedService.cs | 5 +++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/BTCPayServer.Tests/RateRulesTest.cs b/BTCPayServer.Tests/RateRulesTest.cs index 66fd9bade..c989fa658 100644 --- a/BTCPayServer.Tests/RateRulesTest.cs +++ b/BTCPayServer.Tests/RateRulesTest.cs @@ -5,6 +5,7 @@ using System.Text; using BTCPayServer.Rating; using Xunit; using System.Globalization; +using Newtonsoft.Json; namespace BTCPayServer.Tests { @@ -24,6 +25,35 @@ namespace BTCPayServer.Tests Assert.Equal(1.1m, rule.BidAsk.Ask); } + [Fact] + [Trait("Fast", "Fast")] + public void CanSerializeExchangeRatesCache() + { + HostedServices.RatesHostedService.ExchangeRatesCache cache = new HostedServices.RatesHostedService.ExchangeRatesCache(); + cache.Created = DateTimeOffset.UtcNow; + cache.States = new List(); + cache.States.Add(new Services.Rates.BackgroundFetcherState() + { + ExchangeName = "Kraken", + LastRequested = DateTimeOffset.UtcNow, + LastUpdated = DateTimeOffset.UtcNow, + Rates = new List() + { + new Services.Rates.BackgroundFetcherRate() + { + Pair = new CurrencyPair("USD", "BTC"), + BidAsk = new BidAsk(1.0m, 2.0m) + } + } + }); + var str = JsonConvert.SerializeObject(cache, Formatting.Indented); + + var cache2 = JsonConvert.DeserializeObject(str); + Assert.Equal(cache.Created.ToUnixTimeSeconds(), cache2.Created.ToUnixTimeSeconds()); + Assert.Equal(cache.States[0].Rates[0].BidAsk, cache2.States[0].Rates[0].BidAsk); + Assert.Equal(cache.States[0].Rates[0].Pair, cache2.States[0].Rates[0].Pair); + } + [Fact] [Trait("Fast", "Fast")] public void CanParseRateRules() diff --git a/BTCPayServer/HostedServices/RatesHostedService.cs b/BTCPayServer/HostedServices/RatesHostedService.cs index 7c0002f23..f3a34a154 100644 --- a/BTCPayServer/HostedServices/RatesHostedService.cs +++ b/BTCPayServer/HostedServices/RatesHostedService.cs @@ -132,7 +132,10 @@ namespace BTCPayServer.HostedServices } } } - catch { } + catch (Exception ex) + { + Logs.PayServer.LogWarning(ex, "Warning: Error while trying to load rates from cache"); + } } DateTimeOffset? _LastCacheDate;