public void CollectorShouldIgnoreInvalidMetricNames()
        {
            var          collector   = new MetricsCollector();
            const string invalidName = "Invalid@Name";

            collector.IncrementCounter(invalidName, 1);
            using (collector.StartTimer(invalidName))
            {
                collector.Record(invalidName, 0, Unit.None);
            }

            Assert.Equal(string.Empty, collector.FlushToString());
        }
        public async Task TestStartStopTimers()
        {
            var collector = new MetricsCollector();

            using (collector.StartTimer("Clock1"))
            {
                await Task.Delay(100);
            }

            using (collector.StartTimer("Clock2"))
            {
                await Task.Delay(200);
            }

            var metrics = collector.GetMetrics();

            Assert.Equal(2, metrics.Count);
            RecorderUtils.AssertRecorderOutput(new[] { 100.0M }, Unit.MilliSecond, metrics["Clock1"].FlushToString(),
                                               10.0M);
            RecorderUtils.AssertRecorderOutput(new[] { 200.0M }, Unit.MilliSecond, metrics["Clock2"].FlushToString(),
                                               10.0M);
        }