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 and trainer specializing in software best practices using Microsoft tools. Ben’s main areas of emphasis include Team Foundation Server, Scrum, software testing, and software architecture. He is a Microsoft Visual Studio ALM MVP, a certified Scrum trainer via Scrum.org, and a speaker at conferences such as TechEd and Visual Studio Live! When not developing software, Ben’s been known to go running and sea kayaking in order to balance out his love of cheese, cured meats, and champagne. He can be contacted via www.benday.com.