You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
Doing so the TSAN log matcher can now generate logs that contain the full TSAN error context in a single log. An TSAN IssueHandler has been added which looks for the summary log event and generates an issue keyed off the summary error reason and the file in error. The goal being to generate an issue per unique TSAN error The TSANLogMatcher has had a test added to ensure we properly log only TSAN errors, and the file was renamed to fix warnings regarding file name and class name must matching. EditorPerf timeouts have been reduced as we were waiting for 8 hours in cases when no tests were running due to errors in the config #jira UE-212560 #rb Ben.Marsh [FYI] Francis.Hurteau [CL 33261211 by kevin macaulayvacher in ue5-main branch]
533 lines
37 KiB
XML
533 lines
37 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"/>
|
|
<EnvVar Name="UE_HORDE_STEPID"/>
|
|
<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"/>
|
|
<Option Name="AdditionalEditorCompileArgs" DefaultValue="" Description="Additional Compile Arguments for the Editor"/>
|
|
|
|
<!-- 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)"/>
|
|
<Property Name="EditorCompileArgs" Value="$(EditorCompileArgs) $(AdditionalEditorCompileArgs)" If="'$(AdditionalEditorCompileArgs)' != ''"/>
|
|
|
|
<!-- Get shared properties -->
|
|
<Include Script="Graph/Tasks/Inc/SharedProperties.xml" />
|
|
|
|
<!-- Automation uses its own network output directory -->
|
|
<Property Name="AutomationNetworkRootDir" Value="$(NetworkReportRoot)\EditorPerf"/>
|
|
<Property Name="AutomationNetworkRootDir" Value="$(NetworkReportRoot)/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)"/>
|
|
|
|
<!-- Options for warm+cold vs cold cache only -->
|
|
<Option Name="IncludeWarmPhase" DefaultValue="true" Description="Whether to include a warm cache phase. Default is true and will run cold and warm tests. If false, only a cold test will run."/>
|
|
<Property Name="Phases" Value="Cold;Warm"/>
|
|
<Property Name="Phases" Value="Cold" If="'$(IncludeWarmPhase)'=='false'"/>
|
|
|
|
<!-- Arguments for tracing -->
|
|
<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."/>
|
|
<Property Name="EnableBasePhaseTests" Value="false" If="$(WithTSAN)"/>
|
|
<Option Name="ColdArgs" DefaultValue="-ddc=Cold -NoAssetRegistryCacheRead" Description="Arguments to unreal for the cold 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"/>
|
|
|
|
<!-- Option for number of PIE iterations to run (per editor launch) -->
|
|
<Property Name="DefaultNumIterationsPie" Value="2" />
|
|
<Option Name="NumIterationsPIE" DefaultValue="$(DefaultNumIterationsPIE)" Description="Specify the number of times to start/stop PIE sessions in a single editor run."/>
|
|
<Do If="'$(NumIterationsPIE)' <= '0'">
|
|
<Warning Message="NumIterationPIE must be greater than 0. Setting to default of $(DefaultNumIterationsPIE)."/>
|
|
<Property Name="NumIterationsPIE" Value="$(DefaultNumIterationsPIE)" />
|
|
</Do>
|
|
<Property Name="ArgIterationsPIE" Value="-ini:Engine:[ConsoleVariables]:project.iteration.pie.testiterations=$(NumIterationsPIE)" />
|
|
|
|
<!-- Used to determine if we will include internal projects -->
|
|
<Option Name="IsLicensee" Restrict="true|false" DefaultValue="false" Description="Define to true if this script is used externally."/>
|
|
|
|
<!-- Internal property to track all projects that have been declared -->
|
|
<Property Name="AllProjects" Value=""/>
|
|
|
|
<!-- A macro that can be used to easily set up a new test project. -->
|
|
<Macro Name="SetupPerfProject" Arguments="ProjectName" OptionalArguments="CopyDefaultsFrom;ProjectTarget;EditorTarget;MapPath;GameSpecificArgs;UseBinariesFrom;ExtraNonCopyableArgs;GauntletTest;GauntletTestArgs">
|
|
<Property Name="$(ProjectName)__ProjectTarget" Value="$(ProjectName)" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__ProjectTarget" Value="$($(CopyDefaultsFrom)__ProjectTarget)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
<Property Name="$(ProjectName)__ProjectTarget" Value="$(ProjectTarget)" If="'$(ProjectTarget)' != ''"/>
|
|
|
|
<Property Name="$(ProjectName)__EditorTarget" Value="$(ProjectName)Editor" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__EditorTarget" Value="$($(CopyDefaultsFrom)__EditorTarget)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
<Property Name="$(ProjectName)__EditorTarget" Value="$(EditorTarget)" If="'$(EditorTarget)' != ''"/>
|
|
|
|
<!-- Stash the MapPath so that we can use it later via CopyDefaultsFrom and construct new MapArgs -->
|
|
<Property Name="$(ProjectName)__BaseMapPath" Value="$(MapPath)" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__BaseMapPath" Value="$($(CopyDefaultsFrom)__BaseMapPath)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
|
|
<Property Name="$(ProjectName)__SpecificArgs" Value="" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__SpecificArgs" Value="$($(CopyDefaultsFrom)__SpecificArgs)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
<Property Name="$(ProjectName)__SpecificArgs" Value="$(GameSpecificArgs)" If="'$(GameSpecificArgs)' != ''"/>
|
|
|
|
<Property Name="$(ProjectName)__UseBinariesFrom" Value="" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__UseBinariesFrom" Value="$(CopyDefaultsFrom)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
<Property Name="$(ProjectName)__UseBinariesFrom" Value="$(UseBinariesFrom)" If="'$(UseBinariesFrom)' != ''"/>
|
|
|
|
<Property Name="$(ProjectName)__GauntletTest" Value="EditorTests" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__GauntletTest" Value="$($(CopyDefaultsFrom)__GauntletTest)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
<Property Name="$(ProjectName)__GauntletTest" Value="$(GauntletTest)" If="'$(GauntletTest)' != ''"/>
|
|
|
|
<Property Name="$(ProjectName)__GauntletTestArgs" Value="" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__GauntletTestArgs" Value="$($(CopyDefaultsFrom)__GauntletTestArgs)" If="'$(CopyDefaultsFrom)' != ''"/>
|
|
<Property Name="$(ProjectName)__GauntletTestArgs" Value="$(GauntletTestArgs)" If="'$(GauntletTestArgs)' != ''"/>
|
|
|
|
<!-- MapArgs is an "indirect" parameter. We don't ever copy it around, instead we always construct it based on BaseMapPath and others parameters -->
|
|
<Property Name="$(ProjectName)__MapArgs" Value="" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__MapArgs" Value="-ini:Engine:[/Script/Engine.AutomationTestSettings]:MapsToPIETest=\"$($(ProjectName)__BaseMapPath)\"" If="'$($(ProjectName)__BaseMapPath)' != '' and '$($(ProjectName)__GauntletTest)'=='EditorTests'" />
|
|
|
|
<!-- Immediately resolve any indirections on UseBinariesFrom. We cannot support them later when we set up the actual nodes. -->
|
|
<Do If="'$($(ProjectName)__UseBinariesFrom)' != ''">
|
|
<Property Name="$(ProjectName)__UseBinariesFrom" Value="$($($(ProjectName)__UseBinariesFrom)__UseBinariesFrom)" If="'$($($(ProjectName)__UseBinariesFrom)__UseBinariesFrom)' != ''"/>
|
|
</Do>
|
|
|
|
<Property Name="$(ProjectName)__ExtraNonCopyableArgs" Value="" CreateInParentScope="true"/>
|
|
<Property Name="$(ProjectName)__ExtraNonCopyableArgs" Value="$(ExtraNonCopyableArgs)" If="'$(ExtraNonCopyableArgs)' != ''"/>
|
|
|
|
<Property Name="AllProjects" Value="$(AllProjects);$(ProjectName)" />
|
|
</Macro>
|
|
|
|
<!-- Inject internal projects default argument at the global scope -->
|
|
<Include Script="../Restricted/NotForLicensees/Build/EditorPerfInternalArgs.xml" If="!$(IsLicensee)" />
|
|
|
|
<!-- Option to retain per-branch asset registry between runs so that warm is representative of user experience -->
|
|
<Property Name="AssetRegistryCache_Folder" Value="$(RootDir)/../../../EditorPerfAssetRegistryCache/$(EscapedBranch)/"/>
|
|
|
|
<!-- Options for extra runtime args -->
|
|
<Option Name="AdditionalRuntimeArgs" DefaultValue="" Description="Additional Arguments to pass to RunTest"/>
|
|
|
|
<!-- Options for extra Zen Loader tests -->
|
|
<Option Name="EnableZenLoaderTest" DefaultValue="true" Description="Enable additional test per phase that uses the Zen Loader."/>
|
|
<Option Name="EnableZenLoaderAsyncThreadTest" DefaultValue="false" Description="Enable additional test per phase that uses the Zen Loader with an async loading thread."/>
|
|
<Option Name="DisableEditorDomainForZenLoaderTests" DefaultValue="true" Description="Explicitly disables editordomain (-noeditordomain) for zen loader tests"/>
|
|
|
|
<!-- Zen Loader tests specifc arguments -->
|
|
<Property Name="ZenLoaderTestArgs" Value="-zenloader"/>
|
|
<Property Name="NoZenLoaderTestArgs" Value="-nozenloader"/>
|
|
<Property Name="ZenLoaderAsyncTestArgs" Value="$(ZenLoaderTestArgs) -asyncloadingthread" />
|
|
|
|
<Property Name="ZenLoaderTestArgs" Value="$(ZenLoaderTestArgs) -noeditordomain" If="$(DisableEditorDomainForZenLoaderTests)" />
|
|
<Property Name="ZenLoaderAsyncTestArgs" Value="$(ZenLoaderAsyncTestArgs) -noeditordomain" If="$(DisableEditorDomainForZenLoaderTests)" />
|
|
|
|
<!-- 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="EnableLazyLoadNoZenLoaderTest" DefaultValue="false" Description="Enable additional test on warm phase that uses LazyLoad with Zen Loader disabled."/>
|
|
<Option Name="EnableLazyLoadZenLoaderTest" DefaultValue="false" Description="Enable additional test on warm phase that uses LazyLoad with Zen Loader enabled."/>
|
|
|
|
<!-- 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 -tempdir="$(RootDir)/Tests""/>
|
|
<Property Name="GauntletArgs" Value="$(GauntletArgs) -branch=$(Branch) -ECBranch="$(Branch)" -ECChangelist="$(Change)""/>
|
|
<Property Name="GauntletArgs" Value="$(GauntletArgs) -verbose -maxduration=7200"/>
|
|
|
|
<!-- Gauntlet arguments for profile runs -->
|
|
<Property Name="ProfileArgs" Value="-tracefiletrunc"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -EnablePlugins=$(ExtraPluginsCommaDelims)" If="'$(ExtraPluginsCommaDelims)' != ''"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -SuppressLogWarnings -SuppressLogErrors"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -GameInstanceLostTimerSeconds=600"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -NoLoadLevelAtStartup -Benchmarking -NODDCCLEANUP"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -NoShaderDistrib -VerboseShaderLogging"/>
|
|
<Property Name="ProfileArgs" Value="$(ProfileArgs) -ResumeOnCriticalFailure"/>
|
|
|
|
<!-- 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)"/>
|
|
<Option Name="ExtraTelemetryArgs" DefaultValue="" Description="Extra arguments passed to the publish telemetry command"/>
|
|
<Property Name="ExtraTelemetryArgs" Value="$(ExtraTelemetryArgs) -JobLink="$(HordeDashboardURL)/job/$(UE_HORDE_JOBID)?step=$(UE_HORDE_STEPID)"" If="'$(HordeDashboardURL)' != ''"/>
|
|
|
|
<!-- The main test running macro logic that is expanded with platform and dependency node names -->
|
|
<Property Name="TestOutputDir" Value=""/>
|
|
<Property Name="RunTestLogPath" Value=""/>
|
|
<Macro Name="RunTest" Arguments="TestNameSuffix;Platform;ProjectName;ProjectTarget;NodeName;Phase;Iteration;Args;EditorArgs">
|
|
<Property Name="TestName" Value="EditorPerf$(Phase)$(TestNameSuffix)"/>
|
|
<Property Name="AssetRegistryCacheRootFolderArg" Value="-AssetRegistryCacheRootFolder="$(AssetRegistryCache_Folder)""/>
|
|
|
|
<Property Name="TestFilterArgs" Value=""/>
|
|
<Property Name="CombinedEditorArgs" Value=""/>
|
|
<Do If="'$($(ProjectName)__GauntletTest)'=='EditorTests'">
|
|
<Property Name="TestFilter" Value="Project.Iteration.PIE"/>
|
|
<Property Name="TestFilterArgs" Value="-runtest=$(TestFilter)"/>
|
|
<Property Name="CombinedEditorArgs" Value="$(EditorArgs) $(TestFilterArgs) $(AssetRegistryCacheRootFolderArg) $(ArgIterationsPIE)"/>
|
|
</Do>
|
|
<Do If="'$($(ProjectName)__GauntletTest)'!='EditorTests'">
|
|
<Property Name="CombinedEditorArgs" Value="$(EditorArgs) $(AssetRegistryCacheRootFolderArg)"/>
|
|
</Do>
|
|
|
|
<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) $($(ProjectName)__GauntletTestArgs) $(ReportParams) $(LogOutputParams) -artifactname="$(ArtifactName)""/>
|
|
|
|
<Property Name="TestArg" Value="-test=$($(ProjectName)__GauntletTest)" />
|
|
<Property Name="RunArgs" Value="$(TestArg) $(TestFilterArgs) $(Args) -editorargs="$(CombinedEditorArgs)""/>
|
|
|
|
<!-- 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) $(ExtraTelemetryArgs)"/>
|
|
</Do>
|
|
</Macro>
|
|
|
|
<Property Name="GenerateTSANReportNodeName" Value=""/>
|
|
<Property Name="GenerateTSANReportNodeList" Value=""/>
|
|
<Macro Name="GenerateTSANReport" Arguments="NodeName;TestOutputDir;Phase;TestNameSuffix">
|
|
<Property Name="LogFilePath" Value="$(TestOutputDir)/$(Phase)$(TestNameSuffix)/Editor/EditorOutput.log"/>
|
|
<Property Name="GenerateTSANReportNodeName" Value="Generate $(NodeName) TSAN Report"/>
|
|
<Node Name="$(GenerateTSANReportNodeName)">
|
|
<Command Name="LogThreadSanitizerOutput" Arguments="-logfile="$(LogFilePath)"" />
|
|
</Node>
|
|
<Property Name="GenerateTSANReportNodeList" Value="$(GenerateTSANReportNodeList); $(GenerateTSANReportNodeName)"/>
|
|
</Macro>
|
|
|
|
<!-- The main editor workflows test running macro logic that is expanded with platform and dependency node names -->
|
|
<Macro Name="RunEditorWorkflowsTest" Arguments="Platform;ProjectName;NodeName">
|
|
<Property Name="TestName" Value="Editor.Workflows"/>
|
|
<Property Name="TestFilterArgs" Value="-runtest=$(TestName)"/>
|
|
|
|
<Property Name="EditorArgs" Value=""/>
|
|
<Property Name="TestOutputDir" Value="$(AutomationOutputDir)/$(ProjectName)$(Platform)EditorWorkflows"/>
|
|
<Property Name="TraceFilePath" Value="$(TraceDir)/$(TestName)/$(ProjectName)$(Platform)EditorWorkflows.utrace" />
|
|
|
|
<Property Name="LogOutputParams" Value="-logdir="$(TestOutputDir)""/>
|
|
<Property Name="ReportParams" Value="-WriteTestResultsForHorde -HordeTestDataKey="$(NodeName)$(PreflightSuffix)""/>
|
|
<Property Name="AllGauntletArgs" Value="-Project=$(ProjectName) -Platform=$(Platform) $(GauntletArgs) $(ReportParams) $(LogOutputParams)"/>
|
|
|
|
<Property Name="TestArg" Value="-test=EditorTests" />
|
|
<Property Name="RunArgs" Value="$(TestArg) $(TestFilterArgs) -editorargs="$(EditorArgs)""/>
|
|
|
|
<Command Name="RunUnreal" Arguments="$(AllGauntletArgs) $(ProfileArgs) $(RunArgs) -sessionlabel="$(TestName)" -tracefile="$(TraceFilePath)"" />
|
|
</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>
|
|
|
|
<Macro Name="UploadEditorWorkflowsPerformanceDataAndTraces" Arguments="Platform;ProjectName">
|
|
<Property Name="TestOutputDir" Value="$(AutomationOutputDir)/$(ProjectName)$(Platform)EditorWorkflows"/>
|
|
<Property Name="TraceFilePath" Value="$(TraceDir)/Editor.Workflows/$(ProjectName)$(Platform)EditorWorkflows.utrace" />
|
|
|
|
<!-- Translate the utrace file into csv data -->
|
|
<Commandlet Project="$(ProjectName)" Name="SummarizeTraceEditorWorkflows" Arguments="-inputfile="$(TraceFilePath)" -testname="Editor.Workflows" $(CommandletArgs)" />
|
|
|
|
<!-- Copy the utrace file and the generated csv performance data to the output directory -->
|
|
<Copy From="$(TraceDir)/Editor.Workflows/*" To="$(TestOutputDir)/Editor.Workflows" Overwrite="true"/>
|
|
|
|
<!-- Copy "index.json" that captures the functional results to the output directory -->
|
|
<Copy From="$(RootDir)/Tests/TestReport/index.json" To="$(TestOutputDir)/Editor.Workflows/index.json" Overwrite="true"/>
|
|
</Macro>
|
|
|
|
<!-- These will be set to the names of all nodes we want to execute based on specified platforms/options -->
|
|
<Property Name="RunGraphNodes" Value=""/>
|
|
<Property Name="RunEditorWorkflowsGraphNodes" 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 that is defined, generate the graph nodes -->
|
|
<ForEach Name="Project" Values="$(AllProjects)">
|
|
|
|
<!-- Each project should be setup by invoking the SetupPerfProject macro which will set up the various variables we'll need for the tests -->
|
|
<Property Name="ProjectCombinedArgs" Value="$($(Project)__SpecificArgs) $($(Project)__MapArgs) $($(Project)__ExtraNonCopyableArgs) $(AdditionalRuntimeArgs)"/>
|
|
<Property Name="ProjectTarget" Value="$($(Project)__ProjectTarget)"/>
|
|
<Property Name="EditorTarget" Value="$($(Project)__EditorTarget)"/>
|
|
|
|
<!-- Use as base string for directories and key for node names -->
|
|
<Property Name="OutputName" Value="$(Project)$(Platform)EditorPerf"/>
|
|
|
|
<!-- Compile the Editor. Set up compilation nodes for all projects that have been defined even if we aren't going to test them. This lets the tested projects depend on non-tested ones. -->
|
|
<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)"/>
|
|
<!-- Store off the name of the compile node so that we can use look it up by Project name from UseBinariesFrom. -->
|
|
<Property Name="$(Project)__CompileNodeName" Value="$(CompileNodeName)"/>
|
|
|
|
<!-- If the project will be run, set up the test nodes -->
|
|
<Do If="ContainsItem('$(Projects)', '$(Project)', ';')=='true'">
|
|
<!-- Run the Tests -->
|
|
<Property Name="RunNodeRequires" Value="$(CompileNodeName)"/>
|
|
<Property Name="RunNodeRequires" Value="$($($(Project)__UseBinariesFrom)__CompileNodeName)" If="'$($(Project)__UseBinariesFrom)'!=''"/>
|
|
<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)">
|
|
<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="NoZenLoader" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeName)" Phase="$(Phase)" Iteration="$(Iteration)" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs) $(NoZenLoaderTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeName)"/>
|
|
<Expand Name="GenerateTSANReport" NodeName="$(RunNodeName)" TestOutputDir="$(TestOutputDir)" Phase="$(Phase)" TestNameSuffix="NoZenLoader" If="$(WithTSAN)"/>
|
|
</ForEach>
|
|
</Do>
|
|
|
|
<!-- Setup Zen Loader tests for this phase -->
|
|
<Do>
|
|
<!--Zen Loader TestRun if enabled-->
|
|
<Property Name="RunNodeZenName" Value="Run $(OutputName) $(Phase) ZenLoader"/>
|
|
<Node Name="$(RunNodeZenName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableZenLoaderTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="ZenLoader" 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)"/>
|
|
<Expand Name="GenerateTSANReport" NodeName="$(RunNodeZenName)" TestOutputDir="$(TestOutputDir)" Phase="$(Phase)" TestNameSuffix="ZenLoader" If="$(EnableZenLoaderTest) And $(WithTSAN)"/>
|
|
|
|
<!--Zen Loader Async TestRun if enabled-->
|
|
<Property Name="RunNodeZenAsyncName" Value="Run $(OutputName) $(Phase) ZenLoader Async"/>
|
|
<Node Name="$(RunNodeZenAsyncName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableZenLoaderAsyncThreadTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="ZenLoaderAsync" 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="$(EnableZenLoaderAsyncThreadTest)"/>
|
|
<Expand Name="GenerateTSANReport" NodeName="$(RunNodeZenAsyncName)" TestOutputDir="$(TestOutputDir)" Phase="$(Phase)" TestNameSuffix="ZenLoaderAsync" If="$(EnableZenLoaderAsyncThreadTest) And $(WithTSAN)"/>
|
|
|
|
<!--Zen Store DDC TestRun if enabled-->
|
|
<Property Name="RunNodeZenStoreDDCName" Value="Run $(OutputName) $(Phase) ZenLoader Store DDC"/>
|
|
<Node Name="$(RunNodeZenStoreDDCName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableZenStoreDDCTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="ZenStoreAsyncDDC" 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)"/>
|
|
<Expand Name="GenerateTSANReport" NodeName="$(RunNodeZenStoreDDCName)" TestOutputDir="$(TestOutputDir)" Phase="$(Phase)" TestNameSuffix="ZenStoreAsyncDDC" If="$(EnableZenStoreDDCTest) And $(WithTSAN)"/>
|
|
</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 NoZenLoader"/>
|
|
<Node Name="$(RunNodeLazyLoadName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableLazyLoadNoZenLoaderTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="NoZenLoader" Platform="$(Platform)" ProjectName="$(Project)" ProjectTarget="$(ProjectTarget)" NodeName="$(RunNodeLazyLoadName)" Phase="$(Phase)" Iteration="1" Args="$($(Phase)Args)" EditorArgs="$(ProjectCombinedArgs) $(LazyLoadTestArgs) $(NoZenLoaderTestArgs)"/>
|
|
</Node>
|
|
<Property Name="RunNodeList" Value="$(RunNodeList);$(RunNodeLazyLoadName)" If="$(EnableLazyLoadNoZenLoaderTest)"/>
|
|
<Expand Name="GenerateTSANReport" NodeName="$(RunNodeLazyLoadName)" TestOutputDir="$(TestOutputDir)" Phase="$(Phase)" TestNameSuffix="NoZenLoader" If="$(EnableLazyLoadNoZenLoaderTest) And $(WithTSAN)"/>
|
|
|
|
<!--Zen LazyLoad TestRun if enabled-->
|
|
<Property Name="RunNodeLazyLoadZenName" Value="Run $(OutputName) $(Phase) LazyLoad ZenLoader"/>
|
|
<Node Name="$(RunNodeLazyLoadZenName)" Requires="$(RunNodeRequires);$(RunNodeList)" If="$(EnableLazyLoadZenLoaderTest)">
|
|
<Expand Name="RunTest" TestNameSuffix="ZenLoader" 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="$(EnableLazyLoadZenLoaderTest)"/>
|
|
<Expand Name="GenerateTSANReport" NodeName="$(RunNodeLazyLoadZenName)" TestOutputDir="$(TestOutputDir)" Phase="$(Phase)" TestNameSuffix="ZenLoader" If="$(EnableLazyLoadZenLoaderTest) And $(WithTSAN)"/>
|
|
</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);$(GenerateTSANReportNodeList);$(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)"/>
|
|
</Do>
|
|
</ForEach> <!-- Projects -->
|
|
|
|
</ForEach> <!-- Platforms -->
|
|
|
|
<!-- Generate graph nodes for each platform to run -->
|
|
<ForEach Name="Platform" Values="$(Platforms)">
|
|
|
|
<Property Name="ProjectName" Value="EngineTest" />
|
|
<!-- Define output name for the EditorWorkflows test -->
|
|
<Property Name="EditorWorkflowsOutputName" Value="$(ProjectName)$(Platform)EditorWorkflows"/>
|
|
<Property Name="CompileNodeName" Value="Compile $(ProjectName) $(Platform) EditorWorkflows"/>
|
|
<Property Name="AgentModifier" Value=""/>
|
|
<Property Name="AgentModifier" Value=" $(ProjectName)" If="!$(SingleAgentCompile)"/>
|
|
|
|
<!-- Compile Agent configuration -->
|
|
<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="$(ProjectName)" Configuration="Shipping"/>
|
|
<Compile Target="$(ProjectName)Editor" Platform="$(Platform)" Project="$(ProjectName)" Configuration="Development" Arguments="$(EditorCompileArgs)"/>
|
|
</Node>
|
|
</Agent>
|
|
<Label Category="$(CompileCategory)" Name="$(ProjectName) Editor Compile" Requires="$(CompileNodeName)"/>
|
|
|
|
<!-- Set up properties for run and upload nodes -->
|
|
<Property Name="RunEditorWorkflowsNodeRequires" Value="$(CompileNodeName)"/>
|
|
<Property Name="UploadEditorWorkflowsNodeList" Value=""/>
|
|
<Property Name="RunEditorWorkflowsNodeList" Value=""/>
|
|
|
|
<!-- Configure EditorWorkflows Agent -->
|
|
<Agent Name="EditorWorkflows Agent $(Platform) $(ProjectName)" Type="EditorPerf$(Platform)">
|
|
<Property Name="RunEditorWorkflowsNodeName" Value="Run $(EditorWorkflowsOutputName)" />
|
|
<Node Name="$(RunEditorWorkflowsNodeName)" Requires="$(RunEditorWorkflowsNodeRequires);$(RunEditorWorkflowsNodeList)">
|
|
<Expand Name="RunEditorWorkflowsTest" Platform="$(Platform)" ProjectName="$(ProjectName)" NodeName="$(RunEditorWorkflowsNodeName)"/>
|
|
</Node>
|
|
|
|
<Property Name="RunEditorWorkflowsNodeList" Value="$(RunEditorWorkflowsNodeList);$(RunEditorWorkflowsNodeName)" />
|
|
<Property Name="RunNodeUploadTraces" Value="Upload $(EditorWorkflowsOutputName) Traces"/>
|
|
|
|
<!-- Set up Node for uploading traces -->
|
|
<Node Name="$(RunNodeUploadTraces)">
|
|
<Expand Name="UploadEditorWorkflowsPerformanceDataAndTraces" Platform="$(Platform)" ProjectName="$(ProjectName)"/>
|
|
</Node>
|
|
|
|
<!-- Update UploadEditorWorkflowsNodeList -->
|
|
<Property Name="UploadEditorWorkflowsNodeList" Value="$(UploadEditorWorkflowsNodeList);$(RunNodeUploadTraces)"/>
|
|
</Agent>
|
|
<Label Category="$(RunCategory)" Name="$(ProjectName) Editor Run" Requires="$(RunEditorWorkflowsNodeRequires);$(RunEditorWorkflowsNodeList);$(UploadEditorWorkflowsNodeList)" UgsBadge="$(ProjectName) Editor Run"/>
|
|
<Property Name="RunEditorWorkflowsGraphNodes" Value="$(RunEditorWorkflowsGraphNodes);$(RunEditorWorkflowsNodeList);$(UploadEditorWorkflowsNodeList)"/>
|
|
</ForEach>
|
|
<!-- End ForEach Platforms -->
|
|
|
|
<!-- These Nodes run the Editor Workflows test and gather profile data -->
|
|
<Aggregate Name="Run EditorWorkflows Tests" Requires="$(RunEditorWorkflowsGraphNodes)"/>
|
|
|
|
<!-- 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>
|