You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
* Add bookmark pair to create telemetry scope for LoadAssetAndPIE, whitelist it in project-specific statistics files * Split Stats.csv files into global Engine/Build/IterationProfile.csv and per-project Build/IterationProfile.csv directives (for project privacy) * Global statistics file is now assumed, not necessary to pass into the <Commandlet>. * Run <Commandlet> with Project specified so it can load project-specific statistic entries * Remove -NoEnginePlugins parameter (projects require plugins!) * Always do many hundreds of frames after we request PIE (vs. a time span which can be taken up mostly with preparing to PIE) * Remove GC from the automated test function, it was just legacy and it betrays how realistic the test is * Disable sleep in Editor when it doesn't have focus only in Deterministic mode #rnx #jira none #rb francis.hurteau #preflight 610cb65b0d783d000149b82f #preflight 610caadd72fe2c0001a73f02 #ROBOMERGE-SOURCE: CL 17086203 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v853-17066230) [CL 17086233 by geoff evans in ue5-release-engine-test branch]
203 lines
12 KiB
XML
203 lines
12 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)"/>
|
|
|
|
<!-- 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="Win64"/>
|
|
<Property Name="MacCompileAgentType" Value="TestMac"/>
|
|
<Error Message="No platforms specified" If="'$(Platforms)' == ''"/>
|
|
|
|
<!-- Build Options -->
|
|
<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="-BuildPlugin=$(ExtraPluginsPlusDelims)"/>
|
|
|
|
<!-- Automation uses its own network output directory -->
|
|
<Property Name="AutomationNetworkRootDir" Value="\\epicgames.net\root\Builds\Automation\Reports\IterationProfile"/>
|
|
<Property Name="AutomationNetworkRootDir" Value="/Volumes/Builds/Automation/Reports/IterationProfile" If="'$(HostPlatform)' != 'Win64'"/>
|
|
<Property Name="AutomationReportRootUrl" Value="http://automation.epicgames.net/reports/iterationprofile"/>
|
|
<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="AutomationReportBaseUrl" Value="$(AutomationReportRootUrl)/$(BuildName)"/>
|
|
<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"/>
|
|
<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"/>
|
|
<Error Message="No phases specified" If="'$(Phases)' == ''"/>
|
|
<Property Name="TraceDir" Value="$(RootDir)/Engine/Programs/UnrealInsights/Saved/TraceSessions"/>
|
|
|
|
<!-- Gauntlet arguments for all runs -->
|
|
<Property Name="GauntletArgs" Value="-build=editor -UseEditor -verbose -report -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=Group:Iteration -tracefiletrunc"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -EnablePlugins=$(ExtraPluginsCommaDelims)" If="'$(ExtraPluginsCommaDelims)' != ''"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -TreatLogWarningsAsTestErrors=false -TreatLogErrorsAsTestErrors=false"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -GameInstanceLostTimerSeconds=3600"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -NoLoadLevelAtStartup -Benchmarking"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -NoShaderDistrib -VerboseShaderLogging"/>
|
|
|
|
<!-- Gauntlet arguments for summarize commandlet runs -->
|
|
<Property Name="SummarizeArgs" Value="-notraceserver"/>
|
|
<Property Name="SummarizeArgs" Value="$(SummarizeArgs) -skipbaseline" If="$(RunAndBaseline)"/>
|
|
|
|
<!-- The main test running macro logic that is expanded with platform and dependency node names -->
|
|
<Macro Name="RunTest" Arguments="OutputName;Platform;Project;NodeName;Phase;Args">
|
|
<Property Name="TestName" Value="IterationProfile$(Phase)"/>
|
|
<Property Name="TraceFilePath" Value="$(TraceDir)/$(Project)$(Platform)$(TestName).utrace"/>
|
|
<Property Name="TelemetryFileName" Value="$(Project)$(Platform)$(TestName)Telemetry.csv"/>
|
|
<Property Name="TelemetryFilePath" Value="$(TraceDir)/$(TelemetryFileName)"/>
|
|
<Property Name="ReportExportPath" Value="$(AutomationOutputDir)/$(OutputName)"/>
|
|
<Property Name="ReportParams" Value="-ReportExportPath="$(ReportExportPath)""/>
|
|
<Do If="$(IsBuildMachine)">
|
|
<Property Name="ReportExportURL" Value="$(AutomationReportBaseUrl)/$(OutputName)/index.html"/>
|
|
<Property Name="ReportParams" Value="$(ReportParams) -ReportURL="$(ReportExportURL)" -WriteTestResultsForHorde -HordeTestDataKey="$(NodeName) $(Phase)$(PreflightSuffix)""/>
|
|
</Do>
|
|
<Property Name="LogOutputParams" Value="-logdir="$(AutomationOutputDir)/$(OutputName)""/>
|
|
<Property Name="AllGauntletArgs" Value="-project=$(Project) -platform=$(Platform) $(GauntletArgs) $(ReportParams) $(LogOutputParams) -artifactname="$(Phase)""/>
|
|
|
|
<!-- Run the Gauntlet Iteration Profile Tests -->
|
|
<Command Name="RunUnreal" Arguments="$(AllGauntletArgs) $(ProfileArgs) $(Args) -tracefile="$(TraceFilePath)""/>
|
|
|
|
<!-- Translate the utrace file into csv data -->
|
|
<Commandlet Project="$(Project)" Name="SummarizeTrace" Arguments="-inputfile="$(TraceFilePath)" -testname="$(TestName)" $(SummarizeArgs)"/>
|
|
|
|
<!-- Save all files named for this run in the trace directory -->
|
|
<Copy From="$(TraceDir)/$(Project)$(Platform)$(TestName)*.*" To="$(AutomationOutputDir)"/>
|
|
|
|
<Do If="$(IsBuildMachine)">
|
|
|
|
<Do If="!$(IsPreflight)">
|
|
<!-- Publish telemetry to the db -->
|
|
<Command Name="PublishUnrealAutomationTelemetry" Arguments="-CSVFile="$(TelemetryFilePath)" -project=$(Project) -changelist=$(Change) -branch=$(Branch)"/>
|
|
</Do>
|
|
|
|
</Do>
|
|
</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="IterationProfile$(Phase)"/>
|
|
<Property Name="TelemetryFileName" Value="$(Project)$(Platform)$(TestName)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)">
|
|
|
|
<!-- Project-independent prereq compiles -->
|
|
<Agent Name="Prerequisites Agent $(Platform)" Type="$($(Platform)CompileAgentType)">
|
|
<Node Name="Compile Prerequisites $(Platform)">
|
|
<Compile Target="UnrealHeaderTool" Platform="$(Platform)" Configuration="Development"/>
|
|
<Compile Target="ShaderCompileWorker" Platform="$(Platform)" Configuration="Development"/>
|
|
<Compile Target="CrashReportClient" Platform="$(Platform)" Configuration="Shipping"/>
|
|
<Compile Target="CrashReportClientEditor" Platform="$(Platform)" Configuration="Shipping"/>
|
|
</Node>
|
|
|
|
<!-- ForEach Project to run, generate the compile graph nodes -->
|
|
<ForEach Name="Project" Values="$(Projects)">
|
|
<Node Name="Compile $(Project) Editor $(Platform)" Requires="Compile Prerequisites $(Platform)">
|
|
<Compile Target="$(Project)Editor" Platform="$(Platform)" Configuration="Development" Arguments="$(EditorCompileArgs)"/>
|
|
</Node>
|
|
</ForEach>
|
|
</Agent>
|
|
|
|
<!-- ForEach Project to run, generate the graph nodes -->
|
|
<ForEach Name="Project" Values="$(Projects)">
|
|
|
|
<!-- Project execution -->
|
|
<Agent Name="Automated Test Agent $(Project) $(Platform)" Type="IterationProfile$(Platform)$(Project)">
|
|
<Property Name="OutputName" Value="$(Project)$(Platform)IterationProfile"/>
|
|
<Property Name="RunNodeName" Value="Run $(OutputName)"/>
|
|
<Property Name="RunNodeRequires" Value="Compile Prerequisites $(Platform);Compile $(Project) Editor $(Platform)"/>
|
|
<Property Name="BaselineNodeName" Value="Baseline $(OutputName)"/>
|
|
<Property Name="BaselineNodeRequires" Value=""/>
|
|
<Property Name="BaselineNodeRequires" Value="$(RunNodeName)" If="$(RunAndBaseline)"/>
|
|
|
|
<!-- Run the Tests -->
|
|
<Node Name="$(RunNodeName)" Requires="$(RunNodeRequires)">
|
|
<ForEach Name="Phase" Values="$(Phases)">
|
|
<Expand Name="RunTest" OutputName="$(OutputName)" Platform="$(Platform)" Project="$(Project)" NodeName="$(RunNodeName)" Phase="$(Phase)" Args="$($(Phase)Args)"/>
|
|
</ForEach>
|
|
</Node>
|
|
<Property Name="RunGraphNodes" Value="$(RunGraphNodes);$(RunNodeName)"/>
|
|
|
|
<!-- Baseline the Results -->
|
|
<Node Name="$(BaselineNodeName)" Requires="$(BaselineNodeRequires)">
|
|
<ForEach Name="Phase" Values="$(Phases)">
|
|
<Expand Name="BaselineResult" Platform="$(Platform)" Project="$(Project)" Phase="$(Phase)"/>
|
|
</ForEach>
|
|
</Node>
|
|
<Property Name="BaselineGraphNodes" Value="$(BaselineGraphNodes);$(BaselineNodeName)"/>
|
|
|
|
<Label Category="Test" Name="$(Project) Iteration Profile $(Platform)" Requires="$(RunNodeName)"/>
|
|
</Agent>
|
|
|
|
</ForEach> <!-- Projects -->
|
|
|
|
</ForEach> <!-- Platforms -->
|
|
|
|
<!-- These Nodes run the Editor and gather profile data -->
|
|
<Aggregate Name="Run Iteration Profile Tests" Requires="$(RunGraphNodes)"/>
|
|
|
|
<!-- These Nodes copies the CSV telemetry files to special location in the depot, thus making them the "baselines" -->
|
|
<Aggregate Name="Baseline Iteration Profile 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 IterationProfile baselines" Files="$(BaselineFiles)"/>
|
|
</Node>
|
|
</Agent>
|
|
-->
|
|
|
|
</BuildGraph>
|