Пример #1
0
        /// <summary>
        /// Gets the rollup of operating systems.
        /// </summary>
        public void getOperatingSystemRollup(int numEventInfos, int osIdModulo)
        {
            m_Index = new SqlErrorIndex(StackHashSqlConfiguration.Default, SqlUtils.UnitTestDatabase, m_RootCabFolder);
            m_Index.DeleteIndex();

            m_Index.Activate();

            DateTime         creationDateTime = new DateTime(2010, 04, 04, 22, 9, 0, DateTimeKind.Utc);
            DateTime         modifiedDateTime = new DateTime(2010, 05, 05, 23, 10, 0, DateTimeKind.Utc);
            StackHashProduct product1         =
                new StackHashProduct(creationDateTime, modifiedDateTime, null, 1, "TestProduct1", 20, 30, "2.10.02123.1293");

            StackHashFile file1 =
                new StackHashFile(creationDateTime, modifiedDateTime, 20, creationDateTime, "File1.dll", "2.3.4.5");

            StackHashEventSignature eventSignature = new StackHashEventSignature();

            eventSignature.Parameters = new StackHashParameterCollection();
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamApplicationName, "AppName"));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamApplicationVersion, "1.2.3.4"));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamApplicationTimeStamp, creationDateTime.ToString()));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamModuleName, "ModuleName"));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamModuleVersion, "2.3.4.5"));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamModuleTimeStamp, creationDateTime.ToString()));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamExceptionCode, "1234"));
            eventSignature.Parameters.Add(new StackHashParameter(StackHashEventSignature.ParamOffset, "0x1234"));
            eventSignature.InterpretParameters();

            StackHashEvent event1 =
                new StackHashEvent(creationDateTime, modifiedDateTime, "EventTypeName1", 100, eventSignature, 20, file1.Id, "bug");

            m_Index.AddProduct(product1);
            m_Index.AddFile(product1, file1);
            m_Index.AddEvent(product1, file1, event1);

            StackHashEventInfoCollection eventInfos = new StackHashEventInfoCollection();

            int    hitCount         = 1;
            int    totalHits        = 0;
            String localeCodeBase   = "US";
            String languageNameBase = "ENGLISH";
            String osBase           = "Vista";

            for (int i = 1; i <= numEventInfos; i++)
            {
                DateTime nowTime = DateTime.Now;
                DateTime date    = new DateTime(nowTime.Year, nowTime.Month, nowTime.Day, nowTime.Hour, nowTime.Minute, 0);

                int osId     = (i % osIdModulo) + 1;
                int localeId = i;

                totalHits += hitCount;
                StackHashEventInfo eventInfo = new StackHashEventInfo(date.AddDays(i * 1), date.AddDays(i * 2), date.AddDays(i * 3), languageNameBase + localeId.ToString(), localeId, localeCodeBase + localeId.ToString(), osBase + osId.ToString(), osId.ToString(), osId);

                eventInfos.Add(eventInfo);
            }

            m_Index.AddEventInfoCollection(product1, file1, event1, eventInfos);

            StackHashProductOperatingSystemSummaryCollection osSummary      = m_Index.GetOperatingSystemSummary(product1.Id);
            StackHashProductOperatingSystemSummaryCollection osSummaryFresh = m_Index.GetOperatingSystemSummaryFresh(product1.Id);

            Assert.AreEqual(0, osSummary.CompareTo(osSummaryFresh));

            Dictionary <int, StackHashProductOperatingSystemSummary> osCheckList = new Dictionary <int, StackHashProductOperatingSystemSummary>();

            if (osIdModulo < numEventInfos)
            {
                Assert.AreEqual(osIdModulo, osSummary.Count);
            }
            else
            {
                Assert.AreEqual(numEventInfos, osSummary.Count);
            }

            foreach (StackHashProductOperatingSystemSummary osData in osSummary)
            {
                int osId = int.Parse(osData.OperatingSystemVersion);

                if (osIdModulo >= numEventInfos)
                {
                    Assert.AreEqual(osId, osData.TotalHits);
                }
                else
                {
                    Assert.AreEqual(osId * ((numEventInfos / osIdModulo)), osData.TotalHits);
                }

                Assert.AreEqual(osBase + osId.ToString(), osData.OperatingSystemName);
                Assert.AreEqual(false, osCheckList.ContainsKey(osId));
                osCheckList.Add(osId, osData);
            }

            // Update the stats fresh.
            m_Index.UpdateProductStatistics(product1.Id);
            StackHashProductOperatingSystemSummaryCollection osSummary2 = m_Index.GetOperatingSystemSummary(product1.Id);

            Assert.AreEqual(0, osSummary.CompareTo(osSummary2));
        }