コード例 #1
0
        public void Enable_Jit_Only()
        {
            var options = new RuntimeMetricsOptions {
                JitEnabled = true
            };

            Assert.False(options.IsGcEnabled);
            Assert.True(options.IsJitEnabled);
            Assert.False(options.IsThreadingEnabled);
            Assert.False(options.IsProcessEnabled);
            Assert.False(options.IsAssembliesEnabled);
            Assert.False(options.IsAllEnabled);
        }
コード例 #2
0
        public void Enable_Threading_Only()
        {
            var options = new RuntimeMetricsOptions {
                ThreadingEnabled = true
            };

            Assert.False(options.IsGcEnabled);
#if NET6_0_OR_GREATER
            Assert.False(options.IsJitEnabled);
#endif
            Assert.True(options.IsThreadingEnabled);
            Assert.False(options.IsProcessEnabled);
            Assert.False(options.IsAssembliesEnabled);
            Assert.False(options.IsAllEnabled);
        }
コード例 #3
0
        public void Enable_All_If_Nothing_Was_Defined()
        {
            var options = new RuntimeMetricsOptions();

            Assert.True(options.IsGcEnabled);
#if NET6_0_OR_GREATER
            Assert.True(options.IsJitEnabled);
#endif
#if NETCOREAPP3_1_OR_GREATER
            Assert.True(options.IsThreadingEnabled);
#endif
            Assert.True(options.IsProcessEnabled);
            Assert.True(options.IsAssembliesEnabled);
            Assert.True(options.IsAllEnabled);
        }
コード例 #4
0
        public void Enable_Multiple()
        {
            var options = new RuntimeMetricsOptions {
                GcEnabled = true, ProcessEnabled = true
            };

            Assert.True(options.IsGcEnabled);
#if NET6_0_OR_GREATER
            Assert.False(options.IsJitEnabled);
#endif
#if NETCOREAPP3_1_OR_GREATER
            Assert.False(options.IsThreadingEnabled);
#endif
            Assert.True(options.IsProcessEnabled);
            Assert.False(options.IsAssembliesEnabled);
            Assert.False(options.IsAllEnabled);
        }
        /// <summary>
        /// Enables runtime instrumentation.
        /// </summary>
        /// <param name="builder"><see cref="MeterProviderBuilder"/> being configured.</param>
        /// <param name="configure">Runtime metrics options.</param>
        /// <returns>The instance of <see cref="MeterProviderBuilder"/> to chain the calls.</returns>
        public static MeterProviderBuilder AddRuntimeMetrics(
            this MeterProviderBuilder builder,
            Action <RuntimeMetricsOptions> configure = null)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var options = new RuntimeMetricsOptions();

            configure?.Invoke(options);

            var instrumentation = new RuntimeMetrics(options);

            builder.AddMeter(RuntimeMetrics.InstrumentationName);
            return(builder.AddInstrumentation(() => instrumentation));
        }