1

いくつか作成しましたLoad Tests。私の負荷テストはすべて、1 つの単体テストで構成されています。も作成し、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 Rigusing manyで実行していTest Agentsます。テスト コントローラーが実行されているこれ以外の PC で単体テストが実行されている場合、カウンターは更新されません。私のコードでは、コントローラーのPCではなく、テストが実行されているPCのカウンターを更新しているため、これが発生すると思います。

コントローラーの PC でカスタム カウンターを更新するにはどうすればよいですか? 単体テストでカウンターのインスタンスを別の方法で作成する必要がありますか?

4

2 に答える 2

2

通常、パフォーマンス カウンターは、マシン上でローカルに実行されているコンポーネントのパフォーマンスを監視するために使用されます。その後、perfmon を使用して、そのマシンのパフォーマンス カウンターを監視できます。あなたが説明したことから、これはまさに起こっていることです。

そのため、カウンタに関するデータを取得するには、エージェント マシンのパフォーマンス カウンタを監視する必要があります (もちろん、そこにインストールした後)。

このカウンターは、何らかの方法でテストにかかる時間を測定していると思います。テスト対象のシステムを測定している場合、パフォーマンス カウンターの増分は、テスト対象の製品コードに統合されるためです。

リモート マシンのパフォーマンス カウンターをインクリメントする方法を知りませんが、これは通常のパターンに反するようです。ただし、リモート パフォーマンス カウンターを (たとえば、エージェント マシンから)読み取る方法があります。あなたの環境ではこれがベストだと思います。

于 2012-07-04T14:14:16.370 に答える
0

私は自分でこの問題に遭遇し、コードでできることは、マシンにプリインストールされているリモート実行可能ファイルを呼び出すようにセットアップすることであることがわかりました。ローカルで実行されるため、パフォーマンス カウンターを変更できます。

プロセス psExec または WMI コードのいずれかを開始できます。

C#でリモートマシンでプロセスを実行する方法

于 2016-03-16T09:22:54.110 に答える