You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
361 lines
24 KiB
XML
361 lines
24 KiB
XML
<?xml version='1.0' ?>
|
|
<BuildGraph xmlns="http://www.epicgames.com/BuildGraph" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.epicgames.com/BuildGraph ../../../Build/Graph/Schema.xsd" >
|
|
|
|
<!-- Horde Options -->
|
|
<EnvVar Name="UE_HORDE_JOBID"/>
|
|
<Option Name="Horde" Restrict="true|false" DefaultValue="false" Description="Whether the build is running under Horde"/>
|
|
<Option Name="PreflightChange" DefaultValue="" Description="Preflight CL number if preflight, empty otherwise"/>
|
|
<Option Name="SetPreflightFlag" DefaultValue="true" Description="Whether to set the IsPreflight flag to true for preflights. Use with caution: this will cause things like build versions to be set to their non-preflight form."/>
|
|
<Property Name="IsPreflight" Value="false"/>
|
|
<Property Name="IsPreflight" Value="true" If="'$(PreflightChange)' != '' And $(SetPreflightFlag)"/>
|
|
<Property Name="PreflightSuffix" Value=""/>
|
|
<Property Name="PreflightSuffix" Value="-PF-$(PreflightChange)-$(UE_HORDE_JOBID)" If="$(IsPreflight)"/>
|
|
<Property Name="BuildName" Value="$(EscapedBranch)-CL-$(Change)$(PreflightSuffix)"/>
|
|
<Option Name="CompileCategory" DefaultValue="Editors" Description="Category string for Compile Label"/>
|
|
<Option Name="RunCategory" DefaultValue="Test" Description="Category string for Run Label"/>
|
|
<Option Name="BaselineCategory" DefaultValue="Test" Description="Category string for Baseline Label"/>
|
|
<Option Name="SingleAgentCompile" Restrict="true|false" DefaultValue="false" Description="Run all compile steps on same agent"/>
|
|
|
|
<!-- Projects setup-->
|
|
<Option Name="Projects" DefaultValue="false" Restrict=".+" Description="The projects to test"/>
|
|
<Error Message="No project names specified" If="'$(Projects)' == 'false'"/>
|
|
|
|
<!-- Platform Options -->
|
|
<Option Name="Platforms" DefaultValue="Win64" Description="The list of platforms to profile"/>
|
|
<Property Name="Win64CompileAgentType" Value="Win64Compile;Win64"/>
|
|
<Property Name="MacCompileAgentType" Value="TestMac"/>
|
|
<Property Name="LinuxCompileAgentType" Value="Linux"/>
|
|
<Error Message="No platforms specified" If="'$(Platforms)' == ''"/>
|
|
|
|
<!-- Build Options -->
|
|
<Option Name="NoDebugInfo" Restrict="true|false" DefaultValue="false" Description="Compile without including debug info"/>
|
|
<Option Name="WithTSAN" Restrict="true|false" DefaultValue="false" Description="Compile using TSAN"/>
|
|
<Property Name="ExtraPluginsCommaDelims" Value="EditorTests"/>
|
|
<Property Name="ExtraPluginsPlusDelims" Value=""/> <!-- populated programmatically -->
|
|
<ForEach Name="Plugin" Values="$(ExtraPluginsCommaDelims)">
|
|
<Property Name="ExtraPluginString" Value="$(Plugin)" If="'$(ExtraPluginsPlusDelims)' == ''"/>
|
|
<Property Name="ExtraPluginString" Value="$(ExtraPluginsPlusDelims)+$(Plugin)" If="'$(ExtraPluginsPlusDelims)' != ''"/>
|
|
<Property Name="ExtraPluginsPlusDelims" Value="$(ExtraPluginString)"/>
|
|
</ForEach>
|
|
<Property Name="EditorCompileArgs" Value=""/>
|
|
<Property Name="EditorCompileArgs" Value="-BuildPlugin=$(ExtraPluginsPlusDelims)" If="'$(ExtraPluginsPlusDelims)' != ''"/>
|
|
<Property Name="EditorCompileArgs" Value="$(EditorCompileArgs) -nodebuginfo" If="$(NoDebugInfo)"/>
|
|
<Property Name="EditorCompileArgs" Value="$(EditorCompileArgs) -EnableTSAN -Monolithic" If="$(WithTSAN)"/>
|
|
|
|
<!-- Automation uses its own network output directory -->
|
|
<Property Name="AutomationNetworkRootDir" Value="\\epicgames.net\root\Builds\Automation\Reports\EditorPerf"/>
|
|
<Property Name="AutomationNetworkRootDir" Value="/Volumes/Builds/Automation/Reports/EditorPerf" If="'$(HostPlatform)' != 'Win64'"/>
|
|
<Property Name="AutomationLocalOutputDir" Value="$(RootDir)/LocalBuilds/Reports"/>
|
|
|
|
<!-- Outputs for this run keeping slashes flipped the right way because it shows up on the webapp this way -->
|
|
<Property Name="AutomationNetworkOutputDir" Value="$(AutomationNetworkRootDir)\$(BuildName)"/>
|
|
<Property Name="AutomationNetworkOutputDir" Value="$(AutomationNetworkRootDir)/$(BuildName)" If="'$(HostPlatform)' != 'Win64'"/>
|
|
<Property Name="AutomationOutputDir" Value="$(AutomationLocalOutputDir)"/>
|
|
<Property Name="AutomationOutputDir" Value="$(AutomationNetworkOutputDir)" If="$(IsBuildMachine)"/>
|
|
|
|
<!-- Options for baselining -->
|
|
<Option Name="RunAndBaseline" DefaultValue="false" Description="Enable graph dependencies for running and setting the baseline in a single build."/>
|
|
<Option Name="BaselineDir" DefaultValue="$(RootDir)/Engine/Build/Baseline" Description="The revision controlled location of the baseline telemetry files."/>
|
|
<Option Name="BaselineBuildName" DefaultValue="$(BuildName)" Description="The BuildName of the build to set as the new baseline to compare against."/>
|
|
<Property Name="BaselineAutomationNetworkOutputDir" Value="$(AutomationNetworkRootDir)/$(BaselineBuildName)"/>
|
|
<Property Name="BaselineAutomationNetworkOutputDir" Value="$(AutomationOutputDir)" If="$(RunAndBaseline)"/>
|
|
|
|
<!-- Arguments for tracing -->
|
|
<Option Name="Phases" DefaultValue="Incr;Warm;Cold" Description="The list of phases to perform"/>
|
|
<Error Message="No phases specified" If="'$(Phases)' == ''"/>
|
|
<Property Name="TraceDir" Value="$(RootDir)/Engine/Programs/UnrealInsights/Saved/TraceSessions"/>
|
|
|
|
<!-- Arguments for phases, keep in mind that these are passed to both the DDCCleanupCommandlet and RunUnreal -->
|
|
<Option Name="EnableBasePhaseTests" DefaultValue="true" Description="Enable the base phase perf tests."/>
|
|
<Option Name="ColdArgs" DefaultValue="-ddc=Cold" Description="Arguments to unreal for the cold phase"/>
|
|
<Option Name="IncrArgs" DefaultValue="-ddc=Warm" Description="Arguments to unreal for the incremental phase"/>
|
|
<Option Name="WarmArgs" DefaultValue="-ddc=Warm" Description="Arguments to unreal for the warm phase"/>
|
|
|
|
<!-- Iterations to run and average together -->
|
|
<Option Name="Iterations" DefaultValue="1" Description="The list of iteration numbers to run. For example '1;2;3' for three iterations"/>
|
|
|
|
<!-- Full Map Asset Path to run for tests per project -->
|
|
<Option Name="MapAssetPerProjects" DefaultValue="" Description="Comma separated pair of project and map asset to load for it (i.e. 'FortniteGame,/Game/MyMap'), each pair are semicolon separated "/>
|
|
|
|
<!-- Full Map Asset Path to run for tests per project -->
|
|
<Option Name="SpecificArgsPerProjects" DefaultValue="" Description="Hat (^) separated pair of project and commandline arg for it (i.e. 'Juno^-TargetFortReleaseVersion=26.00'), each pair are semicolon separated "/>
|
|
|
|
<!-- Inject internal projects default argument at the global scope -->
|
|
<Option Name="IsLicensee" Restrict="true|false" DefaultValue="false" Description="Define to true if this script is used externally."/>
|
|
<Include Script="../Restricted/NotForLicensees/Build/EditorPerfInternalArgs.xml" If="!$(IsLicensee)" />
|
|
|
|
<!-- Set Project Map Args based on MapAssetPerProjects list -->
|
|
<ForEach Name="ProjectPair" Values="$(MapAssetPerProjects)" Separator=";">
|
|
<!-- Split the Pair -->
|
|
<Property Name="Project" Value=""/>
|
|
<Property Name="MapAsset" Value=""/>
|
|
<Regex Pattern="(.*),(.*)" Capture="Project;MapAsset" Input="$(ProjectPair)" />
|
|
|
|
<Property Name="$(Project)MapArgs" Value="-ini:Engine:[/Script/Engine.AutomationTestSettings]:MapsToPIETest=\"$(MapAsset)\"" If="'$(MapAsset)' != ''" />
|
|
</ForEach>
|
|
|
|
<!-- Options for extra runtime args -->
|
|
<Option Name="AdditionalRuntimeArgs" DefaultValue="" Description="Additional Arguments to pass to RunTest"/>
|
|
|
|
<!-- Set Project Specific Args based on SpecificArgsPerProjects list -->
|
|
<ForEach Name="ProjectPair" Values="$(SpecificArgsPerProjects)" Separator=";">
|
|
<!-- Split the Pair -->
|
|
<Property Name="Project" Value=""/>
|
|
<Property Name="SpecificArgs" Value=""/>
|
|
<Regex Pattern="(.*)^(.*)" Capture="Project;SpecificArgs" Input="$(ProjectPair)" />
|
|
|
|
<Property Name="$(Project)SpecificArgs" Value="$(SpecificArgs)" If="'$(SpecificArgs)' != ''" />
|
|
</ForEach>
|
|
|
|
<!-- Options for extra Zen Loader tests -->
|
|
<Option Name="EnableZenLoaderTest" DefaultValue="true" Description="Enable additional test per phase that uses the Zen Loader."/>
|
|
<Option Name="EnableZenAsyncThreadTest" DefaultValue="true" Description="Enable additional test per phase that uses the Zen Loader."/>
|
|
<Option Name="EnableZenTestsWithoutEditorDomain" DefaultValue="true" Description="Enable additional test per phase that uses the Zen Loader."/>
|
|
|
|
<!-- Zen Loader tests specifc arguments -->
|
|
<Property Name="ZenLoaderTestArgs" Value="-zenloader"/>
|
|
<Property Name="ZenLoaderAsyncTestArgs" Value="$(ZenLoaderTestArgs) -asyncloadingthread" />
|
|
|
|
<Property Name="ZenLoaderTestArgs" Value="$(ZenLoaderTestArgs) -noeditordomain" If="$(EnableZenTestsWithoutEditorDomain)" />
|
|
<Property Name="ZenLoaderAsyncTestArgs" Value="$(ZenLoaderAsyncTestArgs) -noeditordomain" If="$(EnableZenTestsWithoutEditorDomain)" />
|
|
|
|
<!-- Options for extra Zen Store tests -->
|
|
<Option Name="EnableZenStoreDDCTest" DefaultValue="false" Description="Enable additional test on warm phase that uses the Zen Store DDC."/>
|
|
|
|
<!-- Zen Store tests specific arguments -->
|
|
<Property Name="ZenServerCache" Value="$(RootDir)\ZenCache" />
|
|
<Property Name="ZenStoreCommonArgs" Value="-ini:Engine:[Zen.AutoLaunch]:LimitProcessLifetime=true -ZenDataPath=$(ZenServerCache) "/>
|
|
<Property Name="ZenStoreDDCPhaseArgs" Value="-ddc=ZenDDC"/>
|
|
<Property Name="ZenStoreDDCTestArgs" Value="$(ZenStoreCommonArgs)"/>
|
|
|
|
<!-- Options for extra LazyLoad tests -->
|
|
<Option Name="EnableLazyLoadTest" DefaultValue="false" Description="Enable additional test on warm phase that uses LazyLoad."/>
|
|
<Option Name="EnableLazyLoadZenTest" DefaultValue="false" Description="Enable additional test on warm phase that uses LazyLoad with Zen Loader."/>
|
|
|
|
<!-- LazyLoad tests specific arguments -->
|
|
<Property Name="LazyLoadTestArgs" Value="-LazyLoadImports"/>
|
|
<Property Name="LazyLoadZenTestArgs" Value="$(LazyLoadTestArgs) -zenloader" />
|
|
|
|
<!-- Gauntlet arguments for all runs -->
|
|
<Property Name="GauntletArgs" Value="-build=editor -UseEditor -verbose -tempdir="$(RootDir)/Tests""/>
|
|
<Property Name="GauntletArgs" Value="$(GauntletArgs) -branch=$(Branch) -ECBranch="$(Branch)" -ECChangelist="$(Change)""/>
|
|
<Property Name="GauntletArgs" Value="$(GauntletArgs) -maxduration=28800"/>
|
|
|
|
<!-- Gauntlet arguments for profile runs -->
|
|
<Property Name="ProfileArgs" Value="-test=EditorTests -testfilter=Project.Iteration.PIE -tracefiletrunc"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -EnablePlugins=$(ExtraPluginsCommaDelims)" If="'$(ExtraPluginsCommaDelims)' != ''"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -SuppressLogWarnings -SuppressLogErrors"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -GameInstanceLostTimerSeconds=3600"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -NoLoadLevelAtStartup -Benchmarking -NODDCCLEANUP"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -NoShaderDistrib -VerboseShaderLogging"/>
|
|
|
|
<!-- options for summarize runs -->
|
|
<Option Name="RunTraceSummary" DefaultValue="false" Description="Summarize the insights trace after the run"/>
|
|
|
|
<!-- Gauntlet arguments for commandlet, summarize runs -->
|
|
<Property Name="CommandletArgs" Value="-notraceserver"/>
|
|
<Property Name="SummarizeArgs" Value=""/>
|
|
<Property Name="SummarizeArgs" Value="-skipbaseline" If="$(RunAndBaseline)"/>
|
|
|
|
<!-- Publish telemetry options -->
|
|
<Option Name="TelemetryConfig" DefaultValue="" Description="The configuration to use when publishing telemetry data to a database"/>
|
|
<Property Name="TelemetryConfig" Value="UETelemetryStaging" If="$(IsBuildMachine) And $(IsPreflight) And '$(TelemetryConfig)' == '' And $(RunTraceSummary)"/>
|
|
<Property Name="TelemetryConfig" Value="UETelemetry" If="$(IsBuildMachine) And '$(TelemetryConfig)' == '' And $(RunTraceSummary)"/>
|
|
|
|
<!-- The main test running macro logic that is expanded with platform and dependency node names -->
|
|
<Macro Name="RunTest" Arguments="TestNameSuffix;Platform;ProjectName;ProjectTarget;NodeName;Phase;Iteration;Args;EditorArgs">
|
|
<Property Name="TestName" Value="EditorPerf$(Phase)$(TestNameSuffix)"/>
|
|
<Property Name="IterationSuffix" Value=""/>
|
|
<Property Name="IterationSuffix" Value="$(Iteration)" If="'$(Iteration)' != '1'"/>
|
|
|
|
<Property Name="TestOutputDir" Value="$(AutomationOutputDir)/$(ProjectName)$(Platform)EditorPerf"/>
|
|
|
|
<Property Name="IterationName" Value="$(ProjectName)$(Platform)$(TestName)$(IterationSuffix)"/>
|
|
<Property Name="TraceFilePath" Value="$(TraceDir)/$(IterationName).utrace"/>
|
|
<Property Name="TelemetryFileName" Value="$(IterationName)Telemetry.csv"/>
|
|
<Property Name="TelemetryFilePath" Value="$(TraceDir)/$(TelemetryFileName)"/>
|
|
|
|
<Property Name="LogOutputParams" Value="-logdir="$(TestOutputDir)""/>
|
|
<Property Name="ReportParams" Value="-WriteTestResultsForHorde -HordeTestDataKey="$(NodeName)$(PreflightSuffix)""/>
|
|
<Property Name="ArtifactName" Value="$(Phase)$(IterationSuffix)$(TestNameSuffix)"/>
|
|
<Property Name="AllGauntletArgs" Value="-Project=$(ProjectTarget) -Platform=$(Platform) $(GauntletArgs) $(ReportParams) $(LogOutputParams) -artifactname="$(ArtifactName)""/>
|
|
<Property Name="RunArgs" Value="$(Args) -editorargs="$(EditorArgs)""/>
|
|
|
|
<!-- Do DDC cleanup outside the editor process, handles Cold cleanup without changing stats -->
|
|
<!-- <Commandlet Project="$(ProjectTarget)" Name="DDCCleanup" Arguments="$(Args) $(CommandletArgs)"/> -->
|
|
|
|
<!-- Run the Gauntlet EditorPerf Tests -->
|
|
<Command Name="RunUnreal" Arguments="$(AllGauntletArgs) $(ProfileArgs) $(RunArgs) -sessionlabel="$(TestName)" -tracefile="$(TraceFilePath)""/>
|
|
|
|
<!-- Translate the utrace file into csv data -->
|
|
<Do If="$(RunTraceSummary)">
|
|
<Commandlet Project="$(ProjectTarget)" Name="SummarizeTrace" Arguments="-inputfile="$(TraceFilePath)" -testname="$(TestName)" $(SummarizeArgs) $(CommandletArgs)"/>
|
|
</Do>
|
|
|
|
<Do If="'$(TelemetryConfig)' != ''">
|
|
<!-- Publish telemetry to the db -->
|
|
<Command Name="PublishUnrealAutomationTelemetry" Arguments="-CSVFile="$(TelemetryFilePath)" -project=$(Project) -changelist=$(Change) -branch=$(Branch) -TelemetryConfig=$(TelemetryConfig)"/>
|
|
</Do>
|
|
</Macro>
|
|
|
|
<Macro Name="UploadTestTraces" Arguments="Platform;ProjectName">
|
|
<!-- Save all files named for this project in the trace directory -->
|
|
<Property Name="TestOutputDir" Value="$(AutomationOutputDir)/$(ProjectName)$(Platform)EditorPerf"/>
|
|
<Copy From="$(TraceDir)/$(ProjectName)$(Platform)EditorPerf*.*" To="$(TestOutputDir)"/>
|
|
</Macro>
|
|
|
|
<!-- This will be set to the names of all nodes we want to execute based on specified platforms/options -->
|
|
<Property Name="RunGraphNodes" Value=""/>
|
|
|
|
<!-- Mimic of the Runner that retrieves the stashed telemetry file and copies it to the depot location -->
|
|
<Macro Name="BaselineResult" Arguments="Platform;Project;Phase">
|
|
<Property Name="TestName" Value="EditorPerf$(Phase)"/>
|
|
<Property Name="IterationName" Value="$(Project)$(Platform)$(TestName)1"/> <!-- Note the 1! We use Iteration 1 for baselines for now -->
|
|
<Property Name="TelemetryFileName" Value="$(IterationName)Telemetry.csv"/>
|
|
<Property Name="LocalTelemetryFilePath" Value="$(BaselineDir)/$(TelemetryFileName)"/>
|
|
<Property Name="NetworkTelemetryFilePath" Value="$(BaselineAutomationNetworkOutputDir)/$(TelemetryFileName)"/>
|
|
<Copy From="$(NetworkTelemetryFilePath)" To="$(LocalTelemetryFilePath)" Overwrite="true"/>
|
|
<Do If="!$(IsBuildMachine)">
|
|
<Spawn Exe="p4" Arguments="reconcile -ea $(LocalTelemetryFilePath)"/>
|
|
</Do>
|
|
</Macro>
|
|
|
|
<!-- This will be set to the names of all nodes we want to execute based on specified platforms/options -->
|
|
<Property Name="BaselineGraphNodes" Value=""/>
|
|
|
|
<!-- ForEach Platform to run, generate graph nodes -->
|
|
<ForEach Name="Platform" Values="$(Platforms)">
|
|
|
|
<!-- ForEach Project to run, generate the graph nodes -->
|
|
<ForEach Name="Project" Values="$(Projects)">
|
|
|
|
<!-- We parse the Editor target name from within [] in case it's not $(Project)Editor -->
|
|
<Property Name="EditorTarget" Value="$(Project)Editor"/>
|
|
<Regex Pattern="(.*)\[(.*)\]" Capture="Project;EditorTarget" Input="$(Project)" Optional="true"/>
|
|
|
|
<!-- We parse the Project target name from within {} in case it's not $(Project) (i.e. Fortnite plugins projects: Juno, DelMar ) -->
|
|
<Property Name="ProjectTarget" Value="$(Project)"/>
|
|
<Regex Pattern="(.*)\{(.*)\}" Capture="Project;ProjectTarget" Input="$(Project)" Optional="true"/>
|
|
|
|
<!-- Project Map Args-->
|
|
<Property Name="ProjectCombinedArgs" Value="$($(Project)SpecificArgs) $($(Project)MapArgs) $(AdditionalRuntimeArgs)"/>
|
|
|
|
<!-- Use as base string for directories and key for node names -->
|
|
<Property Name="OutputName" Value="$(Project)$(Platform)EditorPerf"/>
|
|
|
|
<!-- Compile the Editor -->
|
|
<Property Name="CompileNodeName" Value="Compile $(Project) $(Platform)"/>
|
|
<Property Name="AgentModifier" Value=""/>
|
|
<Property Name="AgentModifier" Value=" $(Project)" If="!$(SingleAgentCompile)"/>
|
|
<Agent Name="Compile Editor Agent $(Platform)$(AgentModifier" Type="$($(Platform)CompileAgentType)">
|
|
<Node Name="$(CompileNodeName)">
|
|
<SetVersion Change="$(Change)" Branch="$(EscapedBranch)" If="$(IsBuildMachine)"/>
|
|
<Compile Target="ShaderCompileWorker" Platform="$(Platform)" Configuration="Development"/>
|
|
<Compile Target="CrashReportClientEditor" Platform="$(Platform)" Project="$(ProjectTarget)" Configuration="Shipping"/>
|
|
<Compile Target="$(EditorTarget)" Platform="$(Platform)" Project="$(ProjectTarget)" Configuration="Development" Arguments="$(EditorCompileArgs)"/>
|
|
</Node>
|
|
</Agent>
|
|
<Label Category="$(CompileCategory)" Name="$(Project) Editor Compile" Requires="$(CompileNodeName)"/>
|
|
|
|
<!-- Run the Tests -->
|
|
<Property Name="RunNodeRequires" Value="$(CompileNodeName)"/>
|
|
<Property Name="RunNodeList" Value=""/> <!-- Each node in this the nested loops below, they need to depend on predecessors -->
|
|
<Property Name="UploadNodeList" Value=""/>
|
|
<Agent Name="EditorPerf Agent $(Platform) $(Project)" Type="EditorPerf$(Platform)">
|
|
<ForEach Name="Phase" Values="$(Phases)">
|
|
<Do If="$(EnableBasePhaseTests)">
|
|
<ForEach Name="Iteration" Values="$(Iterations)">
|
|
<!-- Only ever do one iteration of incremental, because it will warm up the workspace -->
|
|
<Do If="'$(Phase)' != 'Incr' or '$(Iteration)' == '1'">
|
|
<Property Name="IterationSuffix" Value=""/>
|
|
<Property Name="IterationSuffix" Value="$(Iteration)" If="'$(Iteration)' != '1'"/>
|
|
<Property Name="RunNodeName" Value="Run $(OutputName) $(Phase)$(IterationSuffix)"/>
|
|
<Node Name="$(RunNodeName)" Requires="$(RunNodeRequires);$(RunNodeList)">
|
|
<Expand Name="RunTest" TestNameSuffix="" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeName)" Phase="$(Phase)" Iteration="$(Iteration)" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeName)"/>
|
|
</Do>
|
|
</ForEach>
|
|
</Do>
|
|
<!-- Don't run Zen tests on incremental runs -->
|
|
<Do If="'$(Phase)' != 'Incr'">
|
|
<!-- Zen Loader TestRun if enabled -->
|
|
<Property Name="RunNodeZenName" Value="Run $(OutputName) $(Phase) Zen"/>
|
|
<Node Name="$(RunNodeZenName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableZenLoaderTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="Zen" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeZenName)" Phase="$(Phase)" Iteration="1" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs) $(ZenLoaderTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeZenName)" If="$(EnableZenLoaderTest)"/>
|
|
<!-- Zen Loader Async TestRun if enabled -->
|
|
<Property Name="RunNodeZenAsyncName" Value="Run $(OutputName) $(Phase) Zen Async"/>
|
|
<Node Name="$(RunNodeZenAsyncName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableZenAsyncThreadTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="ZenAsync" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeZenAsyncName)" Phase="$(Phase)" Iteration="1" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs) $(ZenLoaderAsyncTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeZenAsyncName)" If="$(EnableZenAsyncThreadTest)"/>
|
|
|
|
<!-- Zen Store DDC TestRun if enabled -->
|
|
<Property Name="RunNodeZenStoreDDCName" Value="Run $(OutputName) $(Phase) Zen Store DDC"/>
|
|
<Node Name="$(RunNodeZenStoreDDCName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableZenStoreDDCTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="ZenAsync" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeZenStoreDDCName)" Phase="$(Phase)" Iteration="1" Args="$(ZenStoreDDCPhaseArgs)" EditorArgs="$(ProjectCombinedArgs) $(ZenStoreDDCTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeZenStoreDDCName)" If="$(EnableZenStoreDDCTest)"/>
|
|
</Do>
|
|
<!-- Warm only test runs e.g LazyLoad -->
|
|
<Do If="'$(Phase)' == 'Warm'">
|
|
<!-- Legacy LazyLoad TestRun if enabled -->
|
|
<Property Name="RunNodeLazyLoadName" Value="Run $(OutputName) $(Phase) LazyLoad"/>
|
|
<Node Name="$(RunNodeLazyLoadName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableLazyLoadTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="Zen" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeLazyLoadName)" Phase="$(Phase)" Iteration="1" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs) $(LazyLoadTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeLazyLoadName)" If="$(EnableLazyLoadTest)"/>
|
|
<!-- Zen LazyLoad TestRun if enabled -->
|
|
<Property Name="RunNodeLazyLoadZenName" Value="Run $(OutputName) $(Phase) LazyLoad Zen"/>
|
|
<Node Name="$(RunNodeLazyLoadZenName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableLazyLoadZenTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="Zen" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeLazyLoadZenName)" Phase="$(Phase)" Iteration="1" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs) $(LazyLoadZenTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeLazyLoadZenName)" If="$(EnableLazyLoadZenTest)"/>
|
|
</Do>
|
|
</ForEach>
|
|
<Property Name="RunNodeUploadPhaseTraces" Value="Upload $(OutputName) Traces"/>
|
|
<Node Name="$(RunNodeUploadPhaseTraces)">
|
|
<Expand Name="UploadTestTraces" Platform="$(Platform)" ProjectName="$(Project)"/>
|
|
</Node>
|
|
<Property Name="UploadNodeList" Value="$(RunNodeUploadPhaseTraces)"/>
|
|
</Agent>
|
|
<Label Category="$(RunCategory)" Name="$(Project) Editor Run" Requires="$(RunNodeRequires);$(RunNodeList);$(UploadNodeList)" UgsBadge="$(Project) Editor Run"/>
|
|
<Property Name="RunGraphNodes" Value="$(RunGraphNodes);$(RunNodeList);$(UploadNodeList)"/>
|
|
|
|
<!-- Baseline the Results -->
|
|
<Property Name="BaselineNodeName" Value="Baseline $(OutputName)"/>
|
|
<Property Name="BaselineNodeRequires" Value=""/>
|
|
<Property Name="BaselineNodeRequires" Value="$(RunNodeName)" If="$(RunAndBaseline)"/>
|
|
<Property Name="BaselineGraphNodes" Value="$(BaselineGraphNodes);$(BaselineNodeName)"/>
|
|
<Agent Name="EditorPerf Agent $(Platform) $(Project)" Type="EditorPerf$(Platform)">
|
|
<Node Name="$(BaselineNodeName)" Requires="$(BaselineNodeRequires)">
|
|
<ForEach Name="Phase" Values="$(Phases)">
|
|
<Expand Name="BaselineResult" Platform="$(Platform)" Project="$(Project)" Phase="$(Phase)"/>
|
|
</ForEach>
|
|
</Node>
|
|
</Agent>
|
|
<Label Category="$(BaselineCategory)" Name="$(Project) Perf Baseline" Requires="$(BaselineNodeName)"/>
|
|
|
|
</ForEach> <!-- Projects -->
|
|
|
|
</ForEach> <!-- Platforms -->
|
|
|
|
<!-- These Nodes run the Editor and gather profile data -->
|
|
<Aggregate Name="Run EditorPerf Tests" Requires="$(RunGraphNodes)"/>
|
|
|
|
<!-- These Nodes copies the CSV telemetry files to special location in the depot, thus making them the "baselines" -->
|
|
<Aggregate Name="Baseline EditorPerf Results" Requires="$(BaselineGraphNodes)"/>
|
|
|
|
<!-- This Node submits the baseline CSV files to Perforce -->
|
|
<!--
|
|
<Agent Name="Submission Agent Win64" Type="Win64">
|
|
<Node Name="Submit Baseline To Perforce" Requires="$(BaselineGraphNodes)">
|
|
<Submit Description="[CL $(Change)] Updated EditorPerf baselines" Files="$(BaselineFiles)"/>
|
|
</Node>
|
|
</Agent>
|
|
-->
|
|
|
|
</BuildGraph>
|