public static void ValidateTestEventId(MatchCI ci, IEnumerable <CultureInfo> cultures, bool canHaveOtherLanguage) { Assert.IsNotNull(ci, "Cached item not found."); Assert.AreEqual(EventId, ci.Id); if (cultures == null) { Assert.IsNull(ci); } var date = new DateTime?(); RoundCI round = null; SeasonCI season = null; var cultureInfos = cultures.ToList(); var cStr = string.Join(",", cultureInfos); var lStr = string.Join(",", ci.LoadedSummaries); Assert.IsTrue(ci.HasTranslationsFor(cultureInfos), $"Culture missing: {cStr}, loaded summaries: {lStr}"); if (!canHaveOtherLanguage) { Assert.IsTrue(ci.LoadedSummaries.Count >= cultureInfos.Count || ci.LoadedFixtures.Count >= cultureInfos.Count); } foreach (var culture in cultureInfos) { var checkCulture = new[] { culture }; Task.Run(async() => { date = await ci.GetScheduledAsync(); round = await ci.GetTournamentRoundAsync(checkCulture); season = await ci.GetSeasonAsync(checkCulture); }).GetAwaiter().GetResult(); Debug.Assert(date != null, "date != null"); Assert.AreEqual(new DateTime(2016, 08, 10), new DateTime(date.Value.Year, date.Value.Month, date.Value.Day)); Assert.IsTrue(string.IsNullOrEmpty(round.GetName(culture))); Assert.IsTrue(Math.Max(ci.LoadedSummaries.Count, ci.LoadedFixtures.Count) >= season.Names.Count); } }
internal static void ValidateTestEventId(MatchCI ci, IEnumerable <CultureInfo> cultures, bool canHaveOtherLanguage) { Assert.IsNotNull(ci, "Cached item not found."); Assert.AreEqual(EventId, ci.Id); if (cultures == null) { Assert.IsNull(ci); } var date = new DateTime?(); List <TeamCompetitorCI> competitors = null; TeamCompetitorCI comp = null; RoundCI round = null; CacheItem season = null; var cultureInfos = cultures.ToList(); var cStr = string.Join(",", cultureInfos); var lStr = string.Join(",", ci.LoadedSummaries); Assert.IsTrue(ci.HasTranslationsFor(cultureInfos), $"Culture missing: {cStr}, loaded summaries: {lStr}"); if (!canHaveOtherLanguage) { Assert.IsTrue(ci.LoadedSummaries.Count >= cultureInfos.Count || ci.LoadedFixtures.Count >= cultureInfos.Count); } foreach (var culture in cultureInfos) { var checkCulture = new[] { culture }; Task.Run(async() => { date = await ci.GetScheduledAsync(); //competitors = (await ci.GetCompetitorsAsync(checkCulture)).ToList(); // ReSharper disable once AssignNullToNotNullAttribute //comp = competitors.FirstOrDefault(); round = await ci.GetTournamentRoundAsync(checkCulture); season = await ci.GetSeasonAsync(checkCulture); }).GetAwaiter().GetResult(); Debug.Assert(date != null, "date != null"); Assert.AreEqual(new DateTime(2016, 08, 10), new DateTime(date.Value.Year, date.Value.Month, date.Value.Day)); //Assert.AreEqual(2, competitors.Count); //TODO - this was removed if (comp != null) { Assert.AreEqual("sr:competitor:66390", comp.Id.ToString()); Assert.AreEqual(@"Pericos de Puebla", comp.GetName(culture)); if (Equals(culture, Culture)) { Assert.AreEqual("Mexico", comp.GetCountry(culture)); Assert.AreEqual("Mexican League 2016", season.Name[culture]); } if (culture.TwoLetterISOLanguageName != "de") { Assert.AreNotEqual(comp.GetCountry(culture), comp.GetCountry(new CultureInfo("de"))); } } Assert.IsTrue(string.IsNullOrEmpty(round.GetName(culture))); Assert.IsTrue(Math.Max(ci.LoadedSummaries.Count, ci.LoadedFixtures.Count) >= season.Name.Count); } }
public async Task SportEventCacheItemConcurrencyTest() { var stopWatch = Stopwatch.StartNew(); Assert.AreEqual(0, _memoryCache.Count()); var i = 1000; var tasks = new List <Task>(); MatchCI ci = null; while (i > 0) { var startTime = stopWatch.Elapsed; i--; tasks.Clear(); var culture = TestData.Cultures4[StaticRandom.I(4)]; try { Debug.WriteLine($"{GetElapsed(stopWatch)} Loading {i} culture: {culture.TwoLetterISOLanguageName}"); ci = (MatchCI)_sportEventCache.GetEventCacheItem(TestData.EventId); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} culture: {culture.TwoLetterISOLanguageName}"); tasks.Add(ci.GetNamesAsync(new[] { culture })); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} name"); tasks.Add(ci.GetFixtureAsync(new[] { culture })); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} fixture"); tasks.Add(ci.GetTournamentIdAsync(TestData.Cultures)); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} tournament"); tasks.Add(ci.GetBookingStatusAsync()); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} booking status"); tasks.Add(ci.GetCompetitorsIdsAsync(new[] { culture })); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} competitors"); tasks.Add(ci.GetVenueAsync(new[] { culture })); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} venue"); tasks.Add(ci.GetLiveOddsAsync()); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} live odds"); tasks.Add(ci.GetSportEventTypeAsync()); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} sport event type"); tasks.Add(ci.GetStageTypeAsync()); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} stage type"); tasks.Add(ci.FetchSportEventStatusAsync()); Debug.WriteLine($"{GetElapsed(stopWatch)} Get {i} status"); Debug.WriteLine($"{GetElapsed(stopWatch)} Prepare tasks {i} culture: {culture.TwoLetterISOLanguageName}"); await Task.WhenAll(tasks).ConfigureAwait(false); } catch (Exception e) { Debug.WriteLine($"{GetElapsed(stopWatch)} Error: {e}"); } Debug.WriteLine($"{GetElapsed(stopWatch)} Tasks {i} completed."); if (i % 10 == 3) { Debug.WriteLine($"{GetElapsed(stopWatch)} Deleting {i} culture: {culture.TwoLetterISOLanguageName}"); _sportEventCache.CacheDeleteItem(TestData.EventId, CacheItemType.All); } else { var c1 = _dataRouterManager.GetCallCount(SportEventSummary); TestData.ValidateTestEventId(ci, new[] { culture }, true); var c2 = _dataRouterManager.GetCallCount(SportEventSummary); Assert.AreEqual(c1, c2); } var took = stopWatch.Elapsed - startTime; Debug.WriteLine($"{GetElapsed(stopWatch)} Iteration {i} completed. Took {took.Milliseconds} ms."); } Assert.AreEqual(2, _memoryCache.Count()); }