1

Load Tests을 만들었습니다. 모든 부하 테스트는 하나의 단위 테스트로 구성됩니다. 또한 LoadTest Plug-in을 생성하여 모든 부하 테스트에 할당했습니다. 각 단위 테스트는 다음 코드로 LoadTest 플러그 인 (자세한 내용은 here)에서 생성 한 일부 사용자 지정 성능 카운터를 업데이트합니다.성능 카운터를 원격 PC로 업데이트하는 방법은 무엇입니까?

의 PlugIn 코드 :

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); 
} 

유닛 테스트 코드 : 플러그인이 Test Controller에서 실행되기 때문에

[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); 
    } 
} 

컨트롤러가 실행되는 경우 사용자 정의 카운터 범주는 PC에 생성됩니다 . 이제 Test Rig에 내 부하 테스트를 실행하고 많은 Test Agents을 사용하고 있습니다. 이 테스트 컨트롤러가 실행되는 곳 이외의 다른 PC에서 단위 테스트가 실행될 때 카운터는 업데이트되지 않습니다. 나는 내 코드가 있기 때문에 컨트롤러의 pc가 아닌 테스트가 실행중인 PC의 카운터를 업데이트하고 있기 때문에 이러한 문제가 발생한다고 생각합니다.

컨트롤러의 PC에서 내 사용자 정의 카운터를 업데이트하려면 어떻게해야합니까? 단위 테스트에서 카운터의 인스턴스를 다른 방식으로 만들어야합니까?

답변

2

성능 카운터는 일반적으로 시스템에서 로컬로 실행되는 구성 요소의 성능을 모니터링하는 데 사용됩니다. 그런 다음 perfmon을 사용하여 해당 시스템의 성능 카운터를 모니터링 할 수 있습니다. 당신이 묘사 한 바에서 이것은 정확히 일어나고 있습니다.

카운터에 대한 데이터를 얻으려면 에이전트 컴퓨터에서 성능 카운터를 모니터링해야합니다 (물론 카운터를 설치 한 후).

이 카운터는 테스트가 얼마나 오래 걸리는지를 측정합니다. 테스트중인 시스템을 측정하는 경우 성능 카운터 증가분은 테스트중인 생산 코드에 통합 될 것이기 때문입니다.

원격 컴퓨터의 성능 카운터를 늘리는 방법을 알지 못합니다. 그러나 이것은 일반적인 patten에 대한 것 같습니다. 그러나 read remote performance counters (예 : 에이전트 시스템에서) 방법이 있습니다. 나는 이것이 당신의 상황에서 최고라고 생각합니다.

+0

답장을 보내 주셔서 감사합니다. 가능하다면 원격 컴퓨터 (컨트롤러)의 카운터를 업데이트하여 카운터의 총 결과를 쉽게 볼 수 있기를 바랍니다. 그렇지 않으면 구현을 변경하고 모든 상담원의 카운터 인스턴스를 기반으로 총 결과를 자체적으로 계산해야합니다. – Schaliasos

+0

@Schaliasos 예, 불행히도 저는 이것이 가능하다고 생각하지 않습니다 (최소한 C# API로). 그러나 원격으로 읽고 각 상담원의 수치를 집계 할 수 있습니다. –

0

나는이 문제를 직접 경험했으며 코드에서 수행 할 수있는 작업은 컴퓨터에 사전 설치된 원격 실행 파일을 호출하도록 설정되었음을 알았습니다. 로컬에서 실행되므로 성능 카운터를 수정할 수 있습니다.

프로세스 psExec 또는 WMI 코드를 시작할 수 있습니다.

How to execute process on remote machine, in C#