public void DeserializeCSV(String input) { StreamReader data = new StreamReader(input); String version = data.ReadLine(); if (version == Constants.Version1509 || version == Constants.Version1510) { // Skip over the headers data.ReadLine(); var consoleData = new PerConsoleData(); m_perConsoleData.Add("Console", consoleData); while (!data.EndOfStream) { String row = data.ReadLine(); ServiceCallItem item = ServiceCallItem.FromCSV1509(row); item.m_logVersion = version; if (item != null) { if (!consoleData.m_servicesHistory.ContainsKey(item.m_host)) { consoleData.m_servicesHistory.Add(item.m_host, new LinkedList <ServiceCallItem>()); } consoleData.m_servicesHistory[item.m_host].AddLast(item); } } foreach (var endpoint in consoleData.m_servicesHistory) { consoleData.m_servicesStats.Add(endpoint.Key, new ServiceCallStats(endpoint.Value)); } } }
public void DeserializeJson(String input) { String data = File.ReadAllText(input); data = "{\"Data\":" + data + "}"; XmlDocument doc = JsonConvert.DeserializeXmlNode(data, "Root"); var consoleData = new PerConsoleData(); m_perConsoleData.Add("Console", consoleData); //gather data from every endpoint foreach (XmlNode endpointNode in doc.FirstChild.ChildNodes) { String endpointName = endpointNode.FirstChild.InnerText; for (int j = 1; j < endpointNode.ChildNodes.Count; ++j) { XmlNode itemNode = endpointNode.ChildNodes[j]; ServiceCallItem item = ServiceCallItem.FromJson(itemNode); item.m_host = endpointName; if (!consoleData.m_servicesHistory.ContainsKey(item.m_host)) { consoleData.m_servicesHistory.Add(item.m_host, new LinkedList <ServiceCallItem>()); } consoleData.m_servicesHistory[item.m_host].AddLast(item); } } foreach (var endpoint in consoleData.m_servicesHistory) { consoleData.m_servicesStats.Add(endpoint.Key, new ServiceCallStats(endpoint.Value)); } }
public void DeserializeFiddlerTrace(String filePath, String customAgent) { // Open the SAZ var archive = System.IO.Compression.ZipFile.Open(filePath, ZipArchiveMode.Read); // Group the archive entries by frame number var result = from e in archive.Entries where e.Name.Contains("_c.txt") || e.Name.Contains("_s.txt") || e.Name.Contains("_m.xml") group e by Utils.GetFrameNumber(e.Name) into g select new { Frame = g.Key, Data = g }; m_dataTelemetry.m_totalCalls = result.Count(); List <ServiceCallItem> frameData = new List <ServiceCallItem>(); int frameNumber = 1; // Process data per frame foreach (var group in result) { // Grab the individual files ZipArchiveEntry cFileArchive = group.Data.ElementAt(0); ZipArchiveEntry mFileArchive = group.Data.ElementAt(1); ZipArchiveEntry sFileArchive = group.Data.ElementAt(2); ServiceCallItem frame = null; System.Diagnostics.Debug.WriteLine("Analyzing Frame# " + frameNumber); frameNumber++; frame = ServiceCallItem.FromFiddlerFrame((UInt32)group.Frame, cFileArchive, mFileArchive, sFileArchive, o => m_allEndpoints || Utils.IsAnalyzedService(o, customAgent)); // If this is not an Xbox Service Endpoint that we are checking, then move along. if (frame == null) { System.Diagnostics.Debug.WriteLine("Skipping\r\n"); continue; } else { System.Diagnostics.Debug.WriteLine("Processing Call\r\n"); } frameData.Add(frame); m_dataTelemetry.m_callsProcessed++; } var consoleGroups = from f in frameData group f by f.m_consoleIP; foreach (var consoleFrames in consoleGroups.Where(g => g.Key != String.Empty)) { var consoleData = new PerConsoleData(); var xboxServiceFrames = consoleFrames.GroupBy(f => f.m_host) .Select(group => new { Host = group.Key, History = group.AsEnumerable() }); consoleData.m_servicesHistory = xboxServiceFrames.ToDictionary(g => g.Host, g => new LinkedList <ServiceCallItem>(g.History.OrderBy(call => call.m_reqTimeUTC))); // Xbox telemetry endpoint if (consoleData.m_servicesHistory.ContainsKey("data-vef.xboxlive.com")) { ConvertCS1ToEvent(consoleData.m_servicesHistory); } // Windows Telemetry endpoint if (consoleData.m_servicesHistory.Any(k => k.Key.Contains(".data.microsoft.com"))) { ConvertCS2ToEvent(consoleData.m_servicesHistory); } // clear empty items consoleData.m_servicesHistory = consoleData.m_servicesHistory.Where(o => o.Value.Count > 0).ToDictionary(x => x.Key, x => x.Value); foreach (var endpoint in consoleData.m_servicesHistory) { consoleData.m_servicesStats.Add(endpoint.Key, new ServiceCallStats(endpoint.Value)); } m_perConsoleData.Add(consoleFrames.Key, consoleData); } }