public void ReducerTest() { using (var store = NewDocumentStore(requestedStorage: "esent", configureStore: documentStore => documentStore.Conventions.AcceptGzipContent = false)) { var index1 = new RavenDocumentsByEntityName(); index1.Execute(store); var index2 = new PersonCount(); index2.Execute(store); var tasks = new List <Task>(); for (var i = 1; i <= 20; i++) { var taskNumber = i; tasks.Add(Save(store, taskNumber)); } Task.WaitAll(tasks.ToArray()); WaitForIndexing(store, timeout: TimeSpan.FromMinutes(1)); Assert.Equal(20000, store.DatabaseCommands.GetStatistics().CountOfDocuments); using (var session = store.OpenSession()) { var count = session.Query <Person>(index1.IndexName) .Customize(x => x.WaitForNonStaleResults()) .Count(); Assert.Equal(20000, count); var results = session.Query <PersonCount.ReduceResult, PersonCount>() .Customize(customization => customization.WaitForNonStaleResults()) .Take(1001) .ToList(); WaitForUserToContinueTheTest(store); Assert.Equal(1000, results.Count); foreach (var result in results) { Assert.Equal(20, result.Count); } } } }
//Person Count public void ensurePersonCount(IEnumerable <CMDBIncidentResult> cmdbIncidentresults) { //var target = repositoryPersonCount.Query().ToList(); //var source = cmdbIncidentresults.Select(x => x.Assigned_to) // .Where(x => !string.IsNullOrEmpty(x)).Distinct() // .Select(x => new PersonCount { personName = x }).ToList(); //Source //var deletedItems = target.ExceptBy(source, x => x.personName, StringComparer.OrdinalIgnoreCase); //foreach (var item in deletedItems) //{ // repositoryPersonCount.Remove(item); //} //repositoryPersonCount.SaveChanges(); var listPersonCount = new Dictionary <string, PersonCount>(); // Person Count PersonCount personCount = null; foreach (var incident in cmdbIncidentresults) { if (listPersonCount.TryGetValue(incident.Assigned_to, out personCount)) { personCount.Counter++; } else { personCount = new PersonCount { personName = incident.Assigned_to, Counter = 1 }; listPersonCount[incident.Assigned_to] = personCount; repositoryPersonCount.Add(personCount); } } if (repositoryPersonCount.Query().ToList() != null) { repositoryPersonCount.SaveChanges(); } }