public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var events = quicState.Events .Where(x => x.ID == QuicEventId.StreamCreated || x.ID == QuicEventId.StreamDestroyed).ToArray(); if (events.Length == 0) { return; } var table = tableBuilder.SetRowCount(events.Length); var dataProjection = Projection.Index(events); table.AddColumn(typeColumnConfig, dataProjection.Compose(ProjectType)); table.AddColumn(countColumnConfig, Projection.Constant <uint>(1)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableBuilder.AddTableConfiguration(tableConfig1); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var events = quicState.Events .Where(x => x.EventId == QuicEventId.DatapathSend || x.EventId == QuicEventId.DatapathRecv).ToArray(); if (events.Length == 0) { return; } var table = tableBuilder.SetRowCount(events.Length); var dataProjection = Projection.Index(events); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(cpuColumnConfig, dataProjection.Compose(ProjectCPU)); table.AddColumn(typeColumnConfig, dataProjection.Compose(ProjectType)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(bytesColumnConfig, dataProjection.Compose(ProjectBytes)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableBuilder.AddTableConfiguration(tableConfig1); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var connections = quicState.Connections; if (connections.Count == 0) { return; } var connData = connections.SelectMany( x => x.GetFlowBlockedEvents() .Where(x => x.Flags != QuicFlowBlockedFlags.None) .Select(y => new Data(x, y))); var streamData = connections.SelectMany( x => x.Streams.SelectMany( y => y.GetFlowBlockedEvents() .Where(z => z.Flags != QuicFlowBlockedFlags.None) .Select(z => new Data(x, z, y)))); var data = connData.Concat(streamData).ToArray(); var table = tableBuilder.SetRowCount(data.Length); var dataProjection = Projection.Index(data); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(streamColumnConfig, dataProjection.Compose(ProjectStreamId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(reasonColumnConfig, dataProjection.Compose(ProjectReason)); table.AddColumn(countColumnConfig, Projection.Constant <uint>(1)); table.AddColumn(weightColumnConfig, dataProjection.Compose(ProjectWeight)); table.AddColumn(percentWeightColumnConfig, dataProjection.Compose(ProjectPercentWeight)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig1.InitialSelectionQuery = "[Series Name]:=\"Connection\" OR [Series Name]:=\"Reason\""; tableBuilder.AddTableConfiguration(tableConfig1); tableConfig2.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig2.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig2.InitialSelectionQuery = "[Series Name]:=\"Reason\""; tableBuilder.AddTableConfiguration(tableConfig2); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); var data = quicState.Connections.SelectMany( x => x.GetRawTputEvents().Select(y => new ValueTuple <QuicConnection, QuicRawTputData>(x, y))).ToArray(); var table = tableBuilder.SetRowCount(data.Length); var dataProjection = Projection.Index(data); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(typeColumnConfig, dataProjection.Compose(ProjectType)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); table.AddColumn(bitsColumnConfig, dataProjection.Compose(ProjectBits)); table.AddColumn(bytesColumnConfig, dataProjection.Compose(ProjectBytes)); table.AddColumn(rttColumnConfig, dataProjection.Compose(ProjectRtt)); table.AddColumn(txDelayColumnConfig, dataProjection.Compose(ProjectTxDelay)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.InitialSelectionQuery = "[Type]:=\"Tx\" OR [Type]:=\"Rx\""; tableConfig1.InitialFilterQuery = "[Type]:<>\"Tx\" AND [Type]:<>\"PktCreate\" AND [Type]:<>\"TxAck\" AND [Type]:<>\"Rx\""; tableBuilder.AddTableConfiguration(tableConfig1); tableConfig2.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig2.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig2.InitialSelectionQuery = "[Type]:=\"InFlight\""; tableConfig2.InitialFilterQuery = "[Type]:=\"Tx\" OR [Type]:=\"TxAck\" OR [Type]:=\"PktCreate\" OR [Type]:=\"Rx\" OR [Type]:=\"Rtt\" OR [Type]:=\"TxDelay\""; tableBuilder.AddTableConfiguration(tableConfig2); tableConfig3.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig3.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig3.InitialFilterQuery = "[Type]:<>\"Rtt\""; tableBuilder.AddTableConfiguration(tableConfig3); tableConfig4.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig4.InitialSelectionQuery = "[Type]:=\"Tx\" OR [Type]:=\"Rx\""; tableConfig4.InitialFilterQuery = "[Type]:<>\"Tx\" AND [Type]:<>\"TxAck\" AND [Type]:<>\"PktCreate\" AND [Type]:<>\"Rx\""; tableBuilder.AddTableConfiguration(tableConfig4); tableConfig5.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig5.InitialFilterQuery = "[Type]:<>\"TxDelay\""; tableBuilder.AddTableConfiguration(tableConfig5); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var connections = quicState.Connections; if (connections.Count == 0) { return; } var data = connections.SelectMany( x => x.GetExecutionEvents().Select( y => new ValueTuple <QuicConnection, QuicExecutionData>(x, y))).ToArray(); var table = tableBuilder.SetRowCount(data.Length); var dataProjection = Projection.Index(data); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(threadIdColumnConfig, dataProjection.Compose(ProjectThreadId)); table.AddColumn(cpuColumnConfig, dataProjection.Compose(ProjectCpu)); table.AddColumn(nameColumnConfig, dataProjection.Compose(ProjectName)); table.AddColumn(countColumnConfig, Projection.Constant <uint>(1)); table.AddColumn(weightColumnConfig, dataProjection.Compose(ProjectWeight)); table.AddColumn(percentWeightColumnConfig, dataProjection.Compose(ProjectPercentWeight)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); //tableConfig1.InitialExpansionQuery = "[Series Name]:=\"Process (ID)\""; //tableConfig1.InitialSelectionQuery = "[Series Name]:=\"Connection\" OR [Series Name]:=\"State\""; tableBuilder.AddTableConfiguration(tableConfig1); tableConfig2.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig2.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig2.AddColumnRole(ColumnRole.ResourceId, cpuColumnConfig); //tableConfig2.InitialExpansionQuery = "[Series Name]:=\"Process (ID)\""; //tableConfig2.InitialSelectionQuery = "[Series Name]:=\"State\""; tableBuilder.AddTableConfiguration(tableConfig2); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var connections = quicState.Connections; if (connections.Count == 0) { return; } var data = new List <Data>(); foreach (var conn in connections) { foreach (var evt in conn.GetThroughputEvents()) { data.Add(new Data(conn, "InFlight", evt.TimeStamp, evt.Duration, evt.BytesInFlight)); data.Add(new Data(conn, "Buffered", evt.TimeStamp, evt.Duration, evt.BytesBufferedForSend)); data.Add(new Data(conn, "CongestionWindow", evt.TimeStamp, evt.Duration, evt.CongestionWindow)); data.Add(new Data(conn, "ConnectionFlowControl", evt.TimeStamp, evt.Duration, evt.FlowControlAvailable)); data.Add(new Data(conn, "StreamFlowControl", evt.TimeStamp, evt.Duration, evt.StreamFlowControlAvailable)); } } var table = tableBuilder.SetRowCount(data.Count); var dataProjection = Projection.Index(data); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(typeColumnConfig, dataProjection.Compose(ProjectType)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); table.AddColumn(bytesColumnConfig, dataProjection.Compose(ProjectBytes)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig1.InitialSelectionQuery = "[Type]:=\"InFlight\""; tableBuilder.AddTableConfiguration(tableConfig1); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var connections = quicState.Connections; if (connections.Count == 0) { return; } var data = new List <Data>(); foreach (var conn in connections) { foreach (var evt in conn.GetThroughputEvents()) { data.Add(new Data(conn, true, evt.TimeStamp, evt.Duration, evt.TxRate)); data.Add(new Data(conn, false, evt.TimeStamp, evt.Duration, evt.RxRate)); } } var table = tableBuilder.SetRowCount(data.Count); var dataProjection = Projection.Index(data); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(typeColumnConfig, dataProjection.Compose(ProjectType)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); table.AddColumn(rateColumnConfig, dataProjection.Compose(ProjectRate)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig1.InitialSelectionQuery = "[Series Name]:=\"Type\""; tableBuilder.AddTableConfiguration(tableConfig1); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var data = quicState.GetApiCalls(); if (data.Count == 0) { return; } var table = tableBuilder.SetRowCount(data.Count); var dataProjection = Projection.Index(data); table.AddColumn(typeColumnConfig, dataProjection.Compose(ProjectType)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(threadIdColumnConfig, dataProjection.Compose(ProjectThreadId)); table.AddColumn(cpuColumnConfig, dataProjection.Compose(ProjectCpu)); table.AddColumn(pointerColumnConfig, dataProjection.Compose(ProjectPointer)); table.AddColumn(resultColumnConfig, dataProjection.Compose(ProjectResult)); table.AddColumn(countColumnConfig, Projection.Constant <uint>(1)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableBuilder.AddTableConfiguration(tableConfig1); tableConfig2.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig2.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableBuilder.AddTableConfiguration(tableConfig2); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
internal static void BuildMetadataTable(ITableBuilder tableBuilder, LTTngSourceParser sourceParser, ITableConfigurationsSerializer serializer) { ITableBuilderWithRowCount table = tableBuilder.SetRowCount(sourceParser.TraceStats.Count); IReadOnlyList <string> eventNames = sourceParser.TraceStats.Keys.ToList(); var eventNameProjection = Projection.CreateUsingFuncAdaptor(x => eventNames[x]); var traceStatsProjection = eventNameProjection.Compose(eventName => sourceParser.TraceStats[eventName]); var eventCountProjection = traceStatsProjection.Compose(traceStats => traceStats.EventCount); var payloadBitCountProjection = traceStatsProjection.Compose(traceStats => (double)traceStats.PayloadBitCount / 8); table.AddColumn( new DataColumn <string>( EventNameConfiguration, eventNameProjection)); table.AddColumn( new DataColumn <ulong>( CountConfiguration, eventCountProjection)); table.AddColumn( new DataColumn <double>( TotalPayloadSizeConfiguration, payloadBitCountProjection)); var configurations = TableConfigurations.GetPrebuiltTableConfigurations( typeof(TraceStatsTable), TableDescriptor.Guid, serializer); foreach (var configuration in configurations) { tableBuilder.AddTableConfiguration(configuration); if (StringComparer.Ordinal.Equals(configuration.Name, configurations.DefaultConfigurationName)) { tableBuilder.SetDefaultTableConfiguration(configuration); } } }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var connections = quicState.Connections; if (connections.Count == 0) { return; } var table = tableBuilder.SetRowCount(connections.Count); var dataProjection = Projection.Index(connections); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(pointerColumnConfig, dataProjection.Compose(ProjectPointer)); table.AddColumn(correlationIdColumnConfig, dataProjection.Compose(ProjectCorrelationId)); table.AddColumn(isServerColumnConfig, dataProjection.Compose(ProjectIsServer)); table.AddColumn(stateColumnConfig, dataProjection.Compose(ProjectState)); table.AddColumn(bytesSentColumnConfig, dataProjection.Compose(ProjectBytesSent)); table.AddColumn(bytesReceivedColumnConfig, dataProjection.Compose(ProjectBytesReceived)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableConfig1.InitialExpansionQuery = "[Series Name]:=\"Process (ID)\""; tableConfig1.InitialSelectionQuery = "[Series Name]:=\"Connection\""; tableBuilder.AddTableConfiguration(tableConfig1); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }
public static void BuildTable(ITableBuilder tableBuilder, IDataExtensionRetrieval tableData) { Debug.Assert(!(tableBuilder is null) && !(tableData is null)); var quicState = tableData.QueryOutput <QuicState>(new DataOutputPath(QuicEventCooker.CookerPath, "State")); if (quicState == null) { return; } var connections = quicState.Connections; if (connections.Count == 0) { return; } var data = connections.SelectMany( x => x.GetThroughputEvents().Select( y => new ValueTuple <QuicConnection, QuicThroughputData>(x, y))).ToArray(); var table = tableBuilder.SetRowCount(data.Length); var dataProjection = Projection.Index(data); table.AddColumn(connectionColumnConfig, dataProjection.Compose(ProjectId)); table.AddColumn(processIdColumnConfig, dataProjection.Compose(ProjectProcessId)); table.AddColumn(timeColumnConfig, dataProjection.Compose(ProjectTime)); table.AddColumn(durationColumnConfig, dataProjection.Compose(ProjectDuration)); table.AddColumn(rttColumnConfig, dataProjection.Compose(ProjectRate)); tableConfig1.AddColumnRole(ColumnRole.StartTime, timeColumnConfig); tableConfig1.AddColumnRole(ColumnRole.Duration, durationColumnConfig); tableBuilder.AddTableConfiguration(tableConfig1); tableBuilder.SetDefaultTableConfiguration(tableConfig1); }