Load Testing with Custom Performance Counters: Listing 2.
The DataAccessCounterLocator class, which calls RecordOperation.
- By Benjamin Day
- 10/01/2012
public class SqlServerCmsWebPageRepository :
SqlServerCmsRepositoryBase <ICmsWebPage,
CmsDatasetTableAdapters.CmsWebPageTableAdapter >,
ICmsWebPageRepository
{
public override void Save(ICmsWebPage saveThis)
{
var startTicks = DateTime.Now.Ticks;
try
{
DoSave(saveThis);
}
finally
{
// Call the locator to access OperationPerformanceCounterManager
DataAccessCounterLocator.Instance.SaveWebPage.RecordOperation(
DateTime.Now.Ticks - startTicks);
}
}
// ...
}
public class DataAccessCounterLocator
{
private static object m_SyncRoot = new object();
private const string CategoryName = "Benday.com CMS Data Access";
private DataAccessCounterLocator()
{
LoadWebPages = new OperationPerformanceCounterManager(
CategoryName, "Load Web Pages");
LoadWebPageById = new OperationPerformanceCounterManager(
CategoryName, "Load Web Page By Id");
SaveWebPage = new OperationPerformanceCounterManager(
CategoryName, "Save Web Page");
SaveFolder = new OperationPerformanceCounterManager(
CategoryName, "Save Folder");
SaveLink = new OperationPerformanceCounterManager(
CategoryName, "Save Link");
}
public OperationPerformanceCounterManager
LoadWebPages { get; private set; }
public OperationPerformanceCounterManager
SaveWebPage { get; private set; }
public OperationPerformanceCounterManager
SaveFolder { get; private set; }
public OperationPerformanceCounterManager
SaveLink { get; private set; }
public OperationPerformanceCounterManager
LoadWebPageById { get; private set; }
private static DataAccessCounterLocator m_Instance;
public static DataAccessCounterLocator Instance
{
get
{
if (m_Instance == null)
{
lock (m_SyncRoot)
{
if (m_Instance == null)
{
m_Instance = new DataAccessCounterLocator();
}
}
}
return m_Instance;
}
} // ...
}
About the Author
Benjamin Day is a consultant, trainer, and author specializing in software development, project management, and leadership. Ben’s main areas of emphasis include Azure DevOps, C#, Angular, Scrum, software testing, and software architecture. He is a Microsoft MVP, a certified Scrum trainer via Scrum.org, and speaks regularly at VSLive. His online courses are available at YouTube and at http://www.pluralsight.com. Ben is also the founder of https://SlideSpeaker.ai. He can be contacted via http://www.benday.com.