Files
UnrealEngineUWP/Engine/Source/Programs/ReplicationSystemLowLevelTests/Private/ReplicationSystemLowLevelTests.cpp
Ryan Gerleve fe1af6fb91 Add ReplicationSystemLowLevelTests program that runs the tests in ReplicationSystemTestPlugin within the low-level tests framework.
#jira UE-166991
#preflight 63f6731fff5afbbb03cc67ed
#rb peter.engstrom, chris.constantinescu

[CL 24368012 by Ryan Gerleve in ue5-main branch]
2023-02-22 15:28:31 -05:00

91 lines
3.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "GenericPlatform/GenericPlatformFile.h"
#include "HAL/PlatformFileManager.h"
#include "Iris/IrisConfig.h"
#include "Materials/Material.h"
#include "Misc/CommandLine.h"
#include "Misc/ConfigCacheIni.h"
#include "Misc/CoreDelegates.h"
#include "Modules/ModuleManager.h"
#include "Net/Core/Trace/Private/NetTraceInternal.h"
#include "ProfilingDebugging/TraceAuxiliary.h"
#include "Styling/UMGCoreStyle.h"
#include "TestCommon/CoreUtilities.h"
#include "TestCommon/EngineUtilities.h"
#include "TestCommon/Initialization.h"
#include "UObject/Package.h"
#include "UObject/PackageResourceManager.h"
#include "UObject/UObjectBase.h"
#include <catch2/catch_test_macros.hpp>
GROUP_BEFORE_GLOBAL(Catch::DefaultGroup)
{
// Initialize trace
FString Parameter;
if (FParse::Value(FCommandLine::Get(), TEXT("-trace="), Parameter, false))
{
FTraceAuxiliary::Initialize(FCommandLine::Get());
FTraceAuxiliary::TryAutoConnect();
}
#if UE_NET_TRACE_ENABLED
uint32 NetTraceVerbosity;
if(FParse::Value(FCommandLine::Get(), TEXT("-nettrace="), NetTraceVerbosity))
{
FNetTrace::SetTraceVerbosity(NetTraceVerbosity);
}
#endif
UE::Net::SetUseIrisReplication(true);
// Use our own mock platform file implementation, we don't need to do any file I/O for these tests
if (IPlatformFile* WrapperFile = FPlatformFileManager::Get().GetPlatformFile(TEXT("ReplicationSystemLowLevelTestsFile")))
{
IPlatformFile* CurrentPlatformFile = &FPlatformFileManager::Get().GetPlatformFile();
WrapperFile->Initialize(CurrentPlatformFile, TEXT(""));
FPlatformFileManager::Get().SetPlatformFile(*WrapperFile);
}
InitAllThreadPools(true);
InitAsyncQueues();
InitTaskGraph();
InitStats();
InitGWarn();
IPackageResourceManager::Initialize();
FDelayedAutoRegisterHelper::RunAndClearDelayedAutoRegisterDelegates(EDelayedRegisterRunPhase::FileSystemReady);
if (!GetTransientPackage())
{
FModuleManager::Get().AddExtraBinarySearchPaths();
FConfigCacheIni::InitializeConfigSystem();
// Mock config values to allow the engine to initialize
GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("AIControllerClassName"), TEXT("/Script/AIModule.AIController"), GEngineIni);
GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni);
GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultLightFunctionMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni);
GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultDeferredDecalMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni);
GConfig->SetString(TEXT("/Script/Engine.Engine"), TEXT("DefaultPostProcessMaterialName"), TEXT("/Engine/Transient.MockDefaultMaterial"), GEngineIni);
FModuleManager::Get().LoadModule(TEXT("CoreUObject"));
FCoreDelegates::OnInit.Broadcast();
FUMGCoreStyle::ResetToDefault();
// Create a mock default material to keep the material system happy
UMaterial* MockMaterial = NewObject<UMaterial>(GetTransientPackage(), UMaterial::StaticClass(), TEXT("MockDefaultMaterial"), RF_Transient | RF_MarkAsRootSet);
ProcessNewlyLoadedUObjects();
}
FModuleManager::Get().LoadModule(TEXT("IrisCore"));
}
GROUP_AFTER_GLOBAL(Catch::DefaultGroup)
{
CleanupAll();
}