/// <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)); }