EM_Task/TraceInsights/Private/Insights/Tests/InsightsTestUtils.cpp

54 lines
1.5 KiB
C++
Raw Permalink Normal View History

2026-02-13 16:18:33 +08:00
// Copyright Epic Games, Inc. All Rights Reserved.
#include "Insights/Tests/InsightsTestUtils.h"
#include "Misc/AutomationTest.h"
#include "Modules/ModuleManager.h"
#include "TraceServices/AnalysisService.h"
#include "Insights/IUnrealInsightsModule.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
FInsightsTestUtils::FInsightsTestUtils(FAutomationTestBase* InTest): Test(InTest)
{
}
////////////////////////////////////////////////////////////////////////////////////////////////////
bool FInsightsTestUtils::AnalyzeTrace(const TCHAR* Path) const
{
IUnrealInsightsModule& TraceInsightsModule = FModuleManager::LoadModuleChecked<IUnrealInsightsModule>("TraceInsights");
if (!FPaths::FileExists(Path))
{
Test->AddError(FString::Printf(TEXT("File does not exist: %s."), Path));
return false;
}
TraceInsightsModule.StartAnalysisForTraceFile(Path);
auto Session = TraceInsightsModule.GetAnalysisSession();
if (Session == nullptr)
{
Test->AddError(TEXT("Session analysis failed to start."));
return false;
}
int32 MaxWaits = 2000;
while (!Session->IsAnalysisComplete())
{
FPlatformProcess::Sleep(0.033f);
if (MaxWaits < 0)
{
Test->AddError(TEXT("Session analysis takes too long to complete. Aborting test."));
return false;
}
--MaxWaits;
}
return true;
}
////////////////////////////////////////////////////////////////////////////////////////////////////