Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 438. mstest, QTAgent의 로그 파일 설정 방법 [링크 복사], [링크+제목 복사],
조회: 19642
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

(시리즈 글이 6개 있습니다.)
오류 유형: 534. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류
; https://www.sysnet.pe.kr/2/0/11886

개발 환경 구성: 438. mstest, QTAgent의 로그 파일 설정 방법
; https://www.sysnet.pe.kr/2/0/11889

개발 환경 구성: 439. "Visual Studio Enterprise is required to execute the test." 메시지와 관련된 코드 기록
; https://www.sysnet.pe.kr/2/0/11890

오류 유형: 539. mstest 실행 시 "The directory name is invalid." 오류 발생
; https://www.sysnet.pe.kr/2/0/11902

오류 유형: 575. mstest.exe - System.Resources.MissingSatelliteAssemblyException: The satellite assembly named "Microsoft.VisualStudio.ProductKeyDialog.resources.dll, ..."
; https://www.sysnet.pe.kr/2/0/12044

오류 유형: 576. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/12045




mstest, QTAgent의 로그 파일 설정 방법

지난 글에서 mstest.exe에 대한 로그 파일 남기는 법을 설명했는데요.

mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류
; https://www.sysnet.pe.kr/2/0/11886

mstest.exe는 내부적으로 작업 도중 QTAgent 유의 프로세스를 실행합니다. 예를 들어, 제가 테스트한 위의 글에서는 다음 위치의 "QTAgent32_40.exe"가 자식 프로세스로 실행됩니다.

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\QTAgent32_40.exe

어떤 QTAgent EXE가 실행되는지는 mstest.exe.config에 설정한 로그 파일의 다음과 같은 내용을 통해 알 수 있습니다.

V, 18600, 4, 2019/05/08, 22:34:52.240, TESTPC\mstest.exe, Win32ProcessLauncher: Starting process, C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE\QTAgent32_40.exe /agentKey cc716901-a8a3-492b-a81c-49c087b71e7e /hostProcessId 18600 /hostIpcPortName eqt-24b2d2e6-eeb3-4aa4-be77-56ccfd8beb3e...


물론 mstest.exe.config의 로그 설정은 QTAgent32_40.exe에는 통하지 않습니다. 따라서 별도로 QTAgent32_40.exe.config 파일에 로그 설정을 해야 하는데 방법은 mstest.exe.config의 것과 동일합니다.

<?xml version ="1.0"?>
<configuration>
    <!-- ...[생략]... -->

    <!-- 참고: https://blogs.msdn.microsoft.com/aseemb/2010/03/07/how-to-enable-test-agent-logs/ -->
    <system.diagnostics>
        <switches>
            <add name="EqtTraceLevel" value="4" />
        </switches>
        <trace autoflush="true">
            <listeners>
                <add name="eqtlistener" type="System.Diagnostics.TextWriterTraceListener" initializeData="C:\Temp\TestRunner1.log"/>
            </listeners>
        </trace>
    </system.diagnostics>
</configuration>

이 설정을 하면, ".loadtest" 파일에 설정한 부하 테스트의 수행과 관련된 로그들이 남게 됩니다. 위의 설정에 따라 생성된 TestRunner1.log 파일의 내용을 보면 초기에 다음의 내용을 담고 있습니다.

no internal listener being created, appsetting set to 'no'

바로 저 내용이 How to enable test agent logs 글에서 설명한 appSettings의 CreateTraceListener 설정입니다. 해당 옵션을 "yes"로 설정하면,

  <appSettings>
    <add key="StopTestRunCallTimeoutInSeconds" value="5"/>
    <add key="LogSizeLimitInMegs" value="20"/>
    <add key="CreateTraceListener" value="yes"/>
    <add key="GetCollectorDataTimeout" value="300"/>
  </appSettings>

이번에는 mstest.exe 수행 시 다음과 같은 오류 메시지를 볼 수 있습니다.

C:\temp> mstest.exe /testcontainer:c:\temp\test.loadtest
??Microsoft (R) Test Execution Command Line Tool Version 16.0.28326.58
Copyright (c) Microsoft Corporation. All rights reserved.

Loading c:\temp\test.loadtest...
Starting execution...

Final Test Results:
Results               Top Level Tests
-------               ---------------
Not Executed          c:\temp\test.loadtest
0/1 test(s) Passed, 1 Not Executed

Summary
-------
Test Run Error.
  Not Executed  1
  ---------------
  Total         1
Results file:  C:\temp\TestResults\TestUsr_TESTPC 2019-05-08 22_44_48.trx
Test Settings: Default Test Settings

Run has the following issue(s):
Test host process exited unexpectedly.
Failed to queue test run 'TestUsr@TESTPC 2019-05-08 22:44:48': Unable to start the agent process.

원인은, 남겨진 TestRunner1.log 파일을 보면 알 수 있습니다.

W, 10900, 1, 2019/05/08, 22:44:48.582, TESTPC\QTAgent32_40.exe, AgentProcess:CurrentDomain_UnhandledException: Entered

W, 10900, 1, 2019/05/08, 22:44:48.590, TESTPC\QTAgent32_40.exe, EqtTrace: Unable to write to event log 'Application', source 'VSTTAgentProcess': The source was not found, but some or all event logs could not be searched.  To create the source, you need permission to read all event logs to make sure that the new source name is unique.  Inaccessible logs: Security, State.

E, 10900, 1, 2019/05/08, 22:44:48.590, TESTPC\QTAgent32_40.exe, AgentProcess:CurrentDomain_UnhandledException: IsTerminating : System.Security.SecurityException: The source was not found, but some or all event logs could not be searched.  To create the source, you need permission to read all event logs to make sure that the new source name is unique.  Inaccessible logs: Security, State.
   at System.Diagnostics.EventLog.FindSourceRegistration(String source, String machineName, Boolean readOnly, Boolean wantToCreate)
   at System.Diagnostics.EventLog.SourceExists(String source, String machineName, Boolean wantToCreate)
   at System.Diagnostics.EventLogInternal.VerifyAndCreateSource(String sourceName, String currentMachineName)
   at System.Diagnostics.EventLogInternal.WriteEntry(String message, EventLogEntryType type, Int32 eventID, Int16 category, Byte[] rawData)
   at System.Diagnostics.EventLog.WriteEntry(String message, EventLogEntryType type)
   at Microsoft.VisualStudio.TestTools.Execution.ConfigurationHelper.LogError(String processName, String message)
   at Microsoft.VisualStudio.TestTools.Execution.ConfigurationHelper.CreateTraceListener(String fileName, String processName)
   at Microsoft.VisualStudio.TestTools.Agent.AgentProcess.Main(String[] args)
The Zone of the assembly that failed was:
MyComputer

즉, 일반 사용자 권한으로는 이벤트 로그에 VSTTAgentProcess 소스를 생성할 수 없으므로 정상적인 실행을 할 수 없는 것입니다. 따라서 관리자 권한으로 mstest.exe를 수행해야 하고, 이번에는 CreateTraceListener=yes 설정으로 인해 VSTTAgentProcess.log 로그 파일이 다음의 경로에 생성됩니다.

C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE

사실, 이벤트 로그가 아니더라도 저렇게 Program Files 폴더에 로그 파일을 쓰게 되므로 결국 관리자 권한이 꼭 필요하게 됩니다. 그런데 VSTTAgentProcess.log 로그 파일을 보면 기존 로그(TestRunner1.log) 파일에 써진 내용과 거의 다른 점이 없습니다. 따라서 굳이 저 옵션을 켜서 불편하게 관리자 권한을 사용할 필요는 없습니다.




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 2/15/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...
NoWriterDateCnt.TitleFile(s)
12075정성태12/11/201921933디버깅 기술: 141. Linux - lldb 환경에서 sos 확장 명령어를 이용한 닷넷 프로세스 디버깅
12074정성태12/10/201921483디버깅 기술: 140. windbg/Visual Studio - 값이 변경된 경우를 위한 정지점(BP) 설정(Data Breakpoint)
12073정성태12/10/201922127Linux: 24. Linux/C# - 실행 파일이 아닌 스크립트 형식의 명령어를 Process.Start로 실행하는 방법
12072정성태12/9/201918820오류 유형: 583. iisreset 수행 시 "No such interface supported" 오류
12071정성태12/9/201923074오류 유형: 582. 리눅스 디스크 공간 부족 및 safemode 부팅 방법
12070정성태12/9/201924627오류 유형: 581. resize2fs: Bad magic number in super-block while trying to open /dev/.../root
12069정성태12/2/201921543디버깅 기술: 139. windbg - x64 덤프 분석 시 메서드의 인자 또는 로컬 변수의 값을 확인하는 방법
12068정성태11/28/201930076디버깅 기술: 138. windbg와 Win32 API로 알아보는 Windows Heap 정보 분석 [3]파일 다운로드2
12067정성태11/27/201921646디버깅 기술: 137. 실제 사례를 통해 Debug Diagnostics 도구가 생성한 닷넷 웹 응용 프로그램의 성능 장애 보고서 설명 [1]파일 다운로드1
12066정성태11/27/201921212디버깅 기술: 136. windbg - C# PInvoke 호출 시 마샬링을 담당하는 함수 분석 - OracleCommand.ExecuteReader에서 OpsSql.Prepare2 PInvoke 호출 분석
12065정성태11/25/201918840디버깅 기술: 135. windbg - C# PInvoke 호출 시 마샬링을 담당하는 함수 분석파일 다운로드1
12064정성태11/25/201922561오류 유형: 580. HTTP Error 500.0/500.33 - ANCM In-Process Handler Load Failure
12063정성태11/21/201921583디버깅 기술: 134. windbg - RtlReportCriticalFailure로부터 parameters 정보 찾는 방법
12062정성태11/21/201920459디버깅 기술: 133. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례 - 두 번째 이야기
12061정성태11/20/201920552Windows: 167. CoTaskMemAlloc/CoTaskMemFree과 윈도우 Heap의 관계
12060정성태11/20/201923142디버깅 기술: 132. windbg/Visual Studio - HeapFree x64의 동작 분석
12059정성태11/20/201922346디버깅 기술: 131. windbg/Visual Studio - HeapFree x86의 동작 분석
12058정성태11/19/201922941디버깅 기술: 130. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례
12057정성태11/18/201917885오류 유형: 579. Visual Studio - Memory 창에서 유효한 주소 영역임에도 "Unable to evaluate the expression." 오류 출력
12056정성태11/18/201924619개발 환경 구성: 464. "Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법파일 다운로드1
12055정성태11/17/201918573개발 환경 구성: 463. Visual Studio의 Ctrl + Alt + M, 1 (Memory 1) 등의 단축키가 동작하지 않는 경우
12054정성태11/15/201920148.NET Framework: 869. C# - 일부러 GC Heap을 깨뜨려 GC 수행 시 비정상 종료시키는 예제
12053정성태11/15/201920994Windows: 166. 윈도우 10 - 명령행 창(cmd.exe) 속성에 (DotumChe, GulimChe, GungsuhChe 등의) 한글 폰트가 없는 경우
12052정성태11/15/201919905오류 유형: 578. Azure - 일정(schedule)에 등록한 runbook이 1년 후 실행이 안 되는 문제(Reason - The key used is expired.)
12051정성태11/14/201924654개발 환경 구성: 462. 시작하자마자 비정상 종료하는 프로세스의 메모리 덤프 - procdump [1]
12050정성태11/14/201921934Windows: 165. AcLayers의 API 후킹과 FaultTolerantHeap
... [76]  77  78  79  80  81  82  83  84  85  86  87  88  89  90  ...