49 lines
1.1 KiB
C#
49 lines
1.1 KiB
C#
// Copyright (c) Umbraco.
|
|
// See LICENSE for more details.
|
|
|
|
using System;
|
|
using StackExchange.Profiling;
|
|
using StackExchange.Profiling.SqlFormatters;
|
|
using Umbraco.Cms.Core.Logging;
|
|
|
|
namespace Umbraco.Cms.Tests.Common.TestHelpers.Stubs;
|
|
|
|
public class TestProfiler : IProfiler
|
|
{
|
|
private static bool _enabled;
|
|
|
|
public IDisposable Step(string name) => _enabled ? MiniProfiler.Current.Step(name) : null;
|
|
|
|
public void Start()
|
|
{
|
|
if (_enabled == false)
|
|
{
|
|
return;
|
|
}
|
|
|
|
// See https://miniprofiler.com/dotnet/AspDotNet
|
|
MiniProfiler.Configure(new MiniProfilerOptions
|
|
{
|
|
SqlFormatter = new SqlServerFormatter(),
|
|
StackMaxLength = 5000
|
|
});
|
|
|
|
MiniProfiler.StartNew();
|
|
}
|
|
|
|
public void Stop(bool discardResults = false)
|
|
{
|
|
if (_enabled)
|
|
{
|
|
MiniProfiler.Current.Stop(discardResults);
|
|
}
|
|
}
|
|
|
|
/// <inheritdoc/>
|
|
public bool IsEnabled => _enabled;
|
|
|
|
public static void Enable() => _enabled = true;
|
|
|
|
public static void Disable() => _enabled = false;
|
|
}
|