예제 #1
0
 private IFixedStringsArray GetDimensionValues(Dimensions dimensions)
 {
     return(dimensions.Count switch
     {
         3 => DimensionValues.Create(
             dimensions[0].Item2,
             dimensions[1].Item2,
             dimensions[2].Item2),
         5 => DimensionValues.Create(
             dimensions[0].Item2,
             dimensions[1].Item2,
             dimensions[2].Item2,
             dimensions[3].Item2,
             dimensions[4].Item2),
         10 => DimensionValues.Create(
             dimensions[0].Item2,
             dimensions[1].Item2,
             dimensions[2].Item2,
             dimensions[3].Item2,
             dimensions[4].Item2,
             dimensions[5].Item2,
             dimensions[6].Item2,
             dimensions[7].Item2,
             dimensions[8].Item2,
             dimensions[9].Item2),
         _ => throw new ArgumentOutOfRangeException(nameof(dimensions))
     });
예제 #2
0
        public async void SelectMetricDimension(SelectionChangedEventArgs args)
        {
            if (args.AddedItems.Count == 1)
            {
                var md = args.AddedItems[0] as Metric.MetricDimension;
                DimensionValues.Clear();
                if (md.Value != null)
                {
                    var res     = SelectedResource.Value;
                    var m       = SelectedMetric.Value;
                    var dimVals = await _client.DimensionValues(res, m, md.Value, Start.Value, End.Value);

                    if (dimVals.Count() > 0)
                    {
                        foreach (var dv in dimVals)
                        {
                            DimensionValues.Add(dv);
                        }
                        SelectedDimensionValue.Value         = dimVals.First();
                        DimensionValuesSelectorEnabled.Value = dimVals.Count() > 1;
                    }
                    else
                    {
                        DimensionValuesSelectorEnabled.Value = false;
                    }
                }
                else
                {
                    DimensionValuesSelectorEnabled.Value = false;
                }
            }
        }
예제 #3
0
 public void Update(DimensionValues dimensionValues)
 {
     foreach (var control in stackPanel.Children)
     {
         var dimensionControl = control as DimensionControl;
         dimensionControl?.Update(dimensionValues);
     }
 }
예제 #4
0
 public static KeyValueControl Create(DimensionValues dimensionValues)
 {
     return(new KeyValueControl
     {
         Name = string.Concat("control", dimensionValues.Dimension.Name),
         Tag = dimensionValues.Dimension,
         lblKey = { Content = dimensionValues.Dimension.Name },
         cmbItems = { ItemsSource = dimensionValues.Values.OrderBy(d => d).ToList() }
     });
 }
예제 #5
0
 public void AddValue(string key, string value, bool isDimension)
 {
     if (isDimension)
     {
         DimensionValues.Add(key, value);
     }
     else
     {
         MeasureValues.Add(key, value);
     }
 }
예제 #6
0
        public void Update(DimensionValues dimensionValues)
        {
            if (dimensionValues?.Dimension == null ||
                dimensionValues.Values == null ||
                dimensionValues.Dimension.Equals(Tag as Dimension) == false)
            {
                return;
            }

            cmbItems.ItemsSource = dimensionValues.Values.OrderBy(d => d).ToList();
        }
예제 #7
0
        public static DimensionControl Create(DimensionValues dimensionValues)
        {
            var visibility = /*dimensionValues.Dimension.Name == "Property" ? Visibility.Visible :*/ Visibility.Collapsed;

            return(new DimensionControl
            {
                Name = string.Concat("dim", dimensionValues.Dimension.Name),
                Tag = dimensionValues.Dimension,
                lblName = { Content = dimensionValues.Dimension.Name },
                cmbItems = { ItemsSource = dimensionValues.Values.OrderBy(d => d).ToList() },
                listItems = { Visibility = visibility }
            });
        }
예제 #8
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));
        }
예제 #9
0
        public void InsertEtwEventTcpNetwork(string customerResourceId, IDictionary <string, object> eventData)
        {
            var dimBytesValues = DimensionValues.Create(
                customerResourceId,
                Environment.MachineName,
                eventData["TimeCreated"].ToString(),
                eventData["EventId"].ToString(),
                eventData["ProcessName"].ToString(),
                eventData["ProcessId"].ToString(),
                eventData["DestinationIpAddress"].ToString(),
                eventData["DestinationPort"].ToString(),
                eventData["SourceIpAddress"].ToString(),
                eventData["SourcePort"].ToString(),
                eventData["Bytes"].ToString()
                );

            var dimCountValues = DimensionValues.Create(
                customerResourceId,
                Environment.MachineName,
                eventData["TimeCreated"].ToString(),
                eventData["EventId"].ToString(),
                eventData["ProcessName"].ToString(),
                eventData["ProcessId"].ToString(),
                eventData["DestinationIpAddress"].ToString(),
                eventData["DestinationPort"].ToString(),
                eventData["SourceIpAddress"].ToString(),
                eventData["SourcePort"].ToString(),
                eventData["Count"].ToString()
                );

            // Updates the latency histogram
            var successCount = metricOneAgentEtwTcpNetworkCount?.Set(
                value: Convert.ToUInt64(eventData["Count"]), dimCountValues) ?? false;

            // Updates the latency histogram
            var successBytes = metricOneAgentEtwTcpNetworkBytes?.Set(
                Convert.ToUInt64(eventData["Bytes"]), dimBytesValues) ?? false;

            if (successBytes || successCount)
            {
                SIEMfxEventSource.Log.Information("EtwEvent",
                                                  $@"Ifx update File Success Rate histogram {eventData}, {"Values"}");
            }
            else
            {
                SIEMfxEventSource.Log.Information("IfxMetrics", $@"Ifx Configuration - 
                    Could not update file latency measure for {customerResourceId}");
            }
        }
        public void Add(long value)
        {
            if (value != 0)
            {
                if (_isDirty)
                {
                    _defaultDimensionValues = DimensionValues.Create();
                    _isDirty = false;
                }

                _ = value > 0
                            ? CumulativeMetric.IncrementBy((ulong)value, _defaultDimensionValues)
                            : CumulativeMetric.DecrementBy((ulong)value, _defaultDimensionValues);
            }
        }
예제 #11
0
        public string GetCsvRow(string[] fieldNames)
        {
            var s = "";

            foreach (var fieldName in fieldNames)
            {
                if (DimensionValues.ContainsKey(fieldName))
                {
                    s += DimensionValues[fieldName];
                }
                else if (MeasureValues.ContainsKey(fieldName))
                {
                    s += MeasureValues[fieldName];
                }

                if (!fieldName.Equals(fieldNames.Last()))
                {
                    s += ",";
                }
            }

            return(s);
        }
예제 #12
0
        public void Add(long value, string value1, string value2, string value3, string value4, string value5, string value6, string value7, string value8, string value9, string value10)
        {
            var dim = DimensionValues.Create(value1, value2, value3, value4, value5, value6, value7, value8, value9, value10);

            CumulativeMetric.IncrementBy((ulong)value, dim);
        }
예제 #13
0
        public void Add(long value, string value1, string value2, string value3, string value4)
        {
            var dim = DimensionValues.Create(value1, value2, value3, value4);

            CumulativeMetric.IncrementBy((ulong)value, dim);
        }
예제 #14
0
        public void Add(long value)
        {
            var dim = DimensionValues.Create();

            CumulativeMetric.IncrementBy((ulong)value, dim);
        }
예제 #15
0
        void IResultsAggregator.TestContextResultReceived(IResult result)
        {
            DimensionValues key = _dimensionsKeyBuilder.GetValue(result);

            _row[key].Add(result);
        }