1

我创建了一些Load Tests. 我所有的负载测试都由一个单元测试组成。我还创建了一个LoadTest Plug-in并将其分配给我所有的负载测试。每个单元测试都会使用以下代码更新我在 LoadTest 插件中创建的一些自定义性能计数器(更多详细信息请点击此处)。

插件代码:

private void m_loadTest_LoadTestStarting(object sender, System.EventArgs e)
{
    CounterCreationDataCollection counters = new CounterCreationDataCollection();
    counters.Add(new CounterCreationData("CustomCoumter", "Custom Coumter description", PerformanceCounterType.AverageCount64));

    PerformanceCounterCategory.Create("CustomCounterCategory", "Custom Performance Counters", PerformanceCounterCategoryType.MultiInstance, counters);
}

单元测试代码:

[TestClass]
public class UnitTest1
{
    PerformanceCounter customCounter;

    [ClassInitialize]
    public static void ClassInitialize(TestContext TestContext)
    {
        // Create the instances of the counters for the current test
        customCounter= new PerformanceCounter("CustomCounterCategory", "CustomCoumter", "UnitTest1", false));
    }

    [TestMethod]
    public void TestMethod1()
    {
         // ... Testing
         customCounter.Incerement(time);
    }
}

由于插件在Test Controller自定义计数器类别中运行,因此在控制器运行的 pc 中创建。现在我正在Test Rig使用许多Test Agents. 当单元测试在除测试控制器运行的计算机之外的其他计算机中执行时,计数器不会更新。我认为这是因为我的代码正在更新运行测试的 pc 中的计数器,而不是在控制器的 pc 中。

如何更新控制器 PC 中的自定义计数器?我是否必须以不同的方式在单元测试中创建计数器的实例?

4

2 回答 2

2

性能计数器通常用于监视在机器上本地运行的组件的性能。然后可以使用 perfmon 来监视该机器的性能计数器。根据您的描述,这正是正在发生的事情。

因此,您必须监视代理机器上的性能计数器(当然,在将其安装在那里之后)才能获取有关计数器的数据。

我假设这个计数器以某种方式测量测试需要多长时间。因为,如果您正在测量被测系统,那么性能计数器增量将被集成到被测生产代码中。

我不知道有什么方法可以在远程机器上增加性能计数器,但这似乎违反了通常的模式。但是,有一些方法可以读取远程性能计数器(例如,从代理机器)。我认为这在你的情况下是最好的。

于 2012-07-04T14:14:16.370 回答
0

我自己遇到了这个问题,发现您可以在代码中做的就是设置调用已预先安装在机器上的远程可执行文件。由于它将在本地运行,因此可以修改性能计数器。

您可以启动进程 psExec 或 WMI 代码。

如何在远程机器上执行进程,在 C#

于 2016-03-16T09:22:54.110 回答