Beispiel #1
0
 public ResultsMapper(OrderLearner orderLearner)
 {
     if (orderLearner == null)
     {
         throw new ArgumentNullException(nameof(orderLearner));
     }
     _orderLearner = orderLearner;
 }
Beispiel #2
0
        /// <summary>
        /// Builds results into object having column names array and 2d array data grid
        /// </summary>
        public HistogramResults BuildResults()
        {
            if (_row == null)
            {
                throw new InvalidOperationException("Aggregation was never performed.");
            }

            KeyValuePair <DimensionKey, Val[]>[] results = _row
                                                           .Select(r => new KeyValuePair <DimensionKey, Val[]>(r.Key, r.Value.Export().ToArray()))
                                                           .ToArray();

            OrderLearner orderLearner = new OrderLearner();

            results.ForEach(kv => orderLearner.Learn(kv.Value.Select(v => v.Key)));

            string[] columnNames = Dimensions
                                   .Select(d => d.DimensionName)
                                   .Concat(orderLearner.LearnedOrder)
                                   .Except(ColumnIgnoreNames)
                                   .ToArray();

            object[][] resultValues = new object[_row.Count][];

            int rowIndex = 0;

            foreach (KeyValuePair <DimensionKey, Val[]> pair in results)
            {
                resultValues[rowIndex] = new object[columnNames.Length];

                DimensionKey dimensions = pair.Key;
                Val[]        metrics    = pair.Value;

                for (int i = 0; i < dimensions.Values.Count; i++)
                {
                    resultValues[rowIndex][i] = dimensions.Values[i];
                }

                for (int i = 0; i < metrics.Length; i++)
                {
                    int columnIndex = Array.FindIndex(columnNames, s => s == metrics[i].Key);

                    if (columnIndex != -1)
                    {
                        resultValues[rowIndex][columnIndex] = metrics[i].Value;
                    }
                }

                rowIndex++;
            }

            ReplaceNames(columnNames, ColumnAliases);

            return(new HistogramResults(columnNames, resultValues));
        }
Beispiel #3
0
        /// <summary>
        /// Builds results into object having collumn names array  2d array data grid
        /// </summary>
        public HistogramResults BuildResults()
        {
            if (_row == null)
            {
                throw new InvalidOperationException("LoadTest wasn't performed with this HistogramAggregator");
            }

            OrderLearner orderLearner = new OrderLearner();

            _row.ForEach(i => orderLearner.Learn(i.Value.ColumnNames));

            string[] columnNames = _dimensions
                                   .Select(d => d.DimensionName)
                                   .Concat(orderLearner.LearnedOrder)
                                   .Except(_ignoredColumnNames)
                                   .ToArray();

            object[][] resultValues = new object[_row.Count][];

            int rowIndex = 0;

            foreach (KeyValuePair <DimensionValues, IMetric> pair in _row)
            {
                resultValues[rowIndex] = new object[columnNames.Length];

                DimensionValues dimensions = pair.Key;
                IMetric         metrics    = pair.Value;

                for (int i = 0; i < dimensions.Values.Count; i++)
                {
                    resultValues[rowIndex][i] = dimensions.Values[i];
                }

                for (int i = 0; i < metrics.ColumnNames.Length; i++)
                {
                    int columnIndex = Array.FindIndex(columnNames, s => s == metrics.ColumnNames[i]);

                    if (columnIndex != -1)
                    {
                        resultValues[rowIndex][columnIndex] = metrics.Values[i];
                    }
                }

                rowIndex++;
            }

            ReplaceNames(columnNames, _columnNameAliases);

            return(new HistogramResults(columnNames, resultValues));
        }