Exemplo n.º 1
0
        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);
                    }
                }
            }
        }
Exemplo n.º 2
0
        //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();
            }
        }