diff --git a/azure-pipelines.yml b/azure-pipelines.yml
index 3c85b206967..791fb4fef6e 100644
--- a/azure-pipelines.yml
+++ b/azure-pipelines.yml
@@ -302,6 +302,21 @@ jobs:
projectFile: scenarios.proj
channels:
- release/6.0
+
+ # Maui Android scenario benchmarks
+ - template: /eng/performance/scenarios.yml
+ parameters:
+ osName: windows
+ architecture: x64
+ osVersion: 19H1
+ pool:
+ vmImage: 'windows-2022'
+ queue: Windows.10.Amd64.Pixel.Perf
+ machinePool: Pixel
+ kind: maui_scenarios_android
+ projectFile: maui_scenarios_android.proj
+ channels:
+ - release/6.0
# # Windows x64 micro benchmarks
# - template: /eng/performance/benchmark_jobs.yml
diff --git a/eng/performance/PreparePayloadWorkItems.targets b/eng/performance/PreparePayloadWorkItems.targets
new file mode 100644
index 00000000000..2615b211813
--- /dev/null
+++ b/eng/performance/PreparePayloadWorkItems.targets
@@ -0,0 +1,7 @@
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/eng/performance/Scenarios.Common.props b/eng/performance/Scenarios.Common.props
new file mode 100644
index 00000000000..2ae44748780
--- /dev/null
+++ b/eng/performance/Scenarios.Common.props
@@ -0,0 +1,30 @@
+
+
+
+ %(Identity)
+
+
+
+
+
+ 4:00
+
+
+
+
+ $(_Framework.Substring($([MSBuild]::Subtract($(_Framework.Length), 3))))
+
+
+
+ $(WorkItemDirectory)\src\scenarios\
+ $(HelixPreCommands);set PYTHONPATH=%HELIX_CORRELATION_PAYLOAD%\scripts%3B%HELIX_CORRELATION_PAYLOAD%
+ win-$(Architecture)
+
+
+
+ $(WorkItemDirectory)/src/scenarios/
+ $(HelixPreCommands);sudo apt-get update;chmod +x $HELIX_CORRELATION_PAYLOAD/startup/perfcollect
+ $(HelixPreCommands);export PYTHONPATH=$HELIX_CORRELATION_PAYLOAD/scripts:$HELIX_CORRELATION_PAYLOAD
+ linux-$(Architecture)
+
+
\ No newline at end of file
diff --git a/eng/performance/blazor_scenarios.proj b/eng/performance/blazor_scenarios.proj
index 3937e7fee99..f85d90c6ac9 100644
--- a/eng/performance/blazor_scenarios.proj
+++ b/eng/performance/blazor_scenarios.proj
@@ -79,4 +79,6 @@
+
+
diff --git a/eng/performance/maui_scenarios_android.proj b/eng/performance/maui_scenarios_android.proj
new file mode 100644
index 00000000000..c1e8a86e6fa
--- /dev/null
+++ b/eng/performance/maui_scenarios_android.proj
@@ -0,0 +1,82 @@
+
+
+
+
+
+ true
+ 1.0.0-prerelease.21566.2
+ %HELIX_CORRELATION_PAYLOAD%\microsoft.dotnet.xharness.cli\$(MicrosoftDotNetXHarnessCLIVersion)\tools\net6.0\any\Microsoft.DotNet.XHarness.CLI.dll
+
+
+
+ $(Python) post.py
+ scenarios_out
+ $(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)\
+ $(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)/
+
+
+
+
+
+
+
+
+
+ 00:30
+
+
+
+
+
+ mauiandroid
+ $(ScenariosDir)%(ScenarioDirectoryName)
+ com.companyname.mauiandroiddefault-Signed
+ com.companyname.mauiandroiddefault
+
+
+ mauiandroidpodcast
+ $(ScenariosDir)%(ScenarioDirectoryName)
+ com.Microsoft.NetConf2021.Maui-Signed
+ com.Microsoft.NetConf2021.Maui
+
+
+ mauiblazorandroid
+ $(ScenariosDir)%(ScenarioDirectoryName)
+ com.companyname.mauiblazorandroiddefault-Signed
+ com.companyname.mauiblazorandroiddefault
+
+
+
+
+
+
+ $(Python) pre.py publish -f $(_Framework)-android -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName) -r android-arm64 --self-contained
+ %(PreparePayloadWorkItem.PayloadDirectory)
+
+
+
+
+
+
+
+ echo on; xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName) %HELIX_WORKITEM_ROOT%\pub\ /E /I /Y
+ $(Python) test.py sod --scenario-name "%(Identity)"
+
+
+ echo on; xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName) %HELIX_WORKITEM_ROOT%\pub\ /E /I /Y; ren %HELIX_WORKITEM_ROOT%\pub\%(HelixWorkItem.ApkName).apk %(HelixWorkItem.ApkName).zip; powershell.exe -nologo -noprofile -command "& {Expand-Archive %HELIX_WORKITEM_ROOT%\pub\%(HelixWorkItem.ApkName).zip -DestinationPath %HELIX_WORKITEM_ROOT%\pub\}"; del %HELIX_WORKITEM_ROOT%\pub\%(HelixWorkItem.ApkName).zip
+ $(Python) test.py sod --scenario-name "%(Identity)"
+
+
+ echo on; set XHARNESSPATH=$(XharnessPath); xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName) %HELIX_WORKITEM_ROOT%\pub\ /E /I /Y
+ $(Python) test.py devicestartup --device-type android --package-path pub\%(HelixWorkItem.ApkName).apk --package-name %(HelixWorkItem.PackageName) --scenario-name "%(Identity)"
+
+
+ echo on; set XHARNESSPATH=$(XharnessPath); xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName) %HELIX_WORKITEM_ROOT%\pub\ /E /I /Y
+ $(Python) test.py devicestartup --device-type android --package-path pub\%(HelixWorkItem.ApkName).apk --package-name %(HelixWorkItem.PackageName) --scenario-name "%(Identity)" --disable-animations
+
+
+
+
+
+
+
diff --git a/eng/performance/scenarios.proj b/eng/performance/scenarios.proj
index 7a70390047e..f8b357a5d0e 100644
--- a/eng/performance/scenarios.proj
+++ b/eng/performance/scenarios.proj
@@ -20,34 +20,78 @@
-
+
4:00
+
+
+ $(Python) post.py
+ scenarios_out
+ $(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)\
+ $(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)/
+
+
+
+
+
+
- $(ScenariosDir)staticconsoletemplate
+ staticconsoletemplate
+ $(ScenariosDir)%(ScenarioDirectoryName)
- $(ScenariosDir)staticvbconsoletemplate
+ staticvbconsoletemplate
+ $(ScenariosDir)%(ScenarioDirectoryName)
-
- $(ScenariosDir)emptyconsoletemplate
+ emptyconsoletemplate
+ $(ScenariosDir)%(ScenarioDirectoryName)
- $(ScenariosDir)emptyvbconsoletemplate
+ emptyvbconsoletemplate
+ $(ScenariosDir)%(ScenarioDirectoryName)
+
+
+ mauidesktop
+ $(ScenariosDir)%(ScenarioDirectoryName)
+
+
+ mauiblazordesktop
+ $(ScenariosDir)%(ScenarioDirectoryName)
+
+
+
+
+ $(Python) pre.py publish -f $(_Framework) -c Release -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)_fdd
+ %(PreparePayloadWorkItem.PayloadDirectory)
+
+
+ $(Python) pre.py publish -f $(_Framework) -c Release -r $(RID) -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)_scd
+ %(PreparePayloadWorkItem.PayloadDirectory)
+
+
+ $(Python) pre.py build -c Release -f $(_Framework) -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)_build
+ %(PreparePayloadWorkItem.PayloadDirectory)
+
+
+ $(Python) pre.py publish -c Release -f $(_Framework)-windows10.0.19041.0 -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)_fdd
+ %(PreparePayloadWorkItem.PayloadDirectory)
+
+
+
+
- $(Python) pre.py publish -f $(_Framework) -c Release
+ xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName)_fdd %HELIX_WORKITEM_ROOT%\pub /E /I /Y
+ cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName)_fdd $HELIX_WORKITEM_ROOT/pub
$(Python) test.py startup --scenario-name "%(Identity)"
@@ -55,7 +99,8 @@
- $(Python) pre.py publish -f $(_Framework) -c Release
+ xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName)_fdd %HELIX_WORKITEM_ROOT%\pub /E /I /Y
+ cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName)_fdd $HELIX_WORKITEM_ROOT/pub
$(Python) test.py sod --scenario-name "%(Identity)"
@@ -63,7 +108,8 @@
- $(Python) pre.py publish -f $(_Framework) -c Release -r $(RID)
+ xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName)_scd %HELIX_WORKITEM_ROOT%\pub /E /I /Y
+ cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName)_scd $HELIX_WORKITEM_ROOT/pub
$(Python) test.py sod --scenario-name "%(Identity)"
@@ -71,38 +117,29 @@
- $(Python) pre.py build -c Release -f $(_Framework)
+ xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName)_build %HELIX_WORKITEM_ROOT%\bin /E /I /Y
+ cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName)_build $HELIX_WORKITEM_ROOT/bin
$(Python) test.py sod --scenario-name "%(Identity)"
-
+
-
- $(ScenariosDir)mauidesktop
- $(Python) pre.py publish -c Release -f $(_Framework)-windows10.0.19041.0
+
+ xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName)_fdd %HELIX_WORKITEM_ROOT%\pub /E /I /Y
+ cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName)_fdd $HELIX_WORKITEM_ROOT/pub
$(Python) test.py sod --scenario-name "%(Identity)"
-
- $(ScenariosDir)mauidesktop
- $(Python) pre.py publish -c Release -f $(_Framework)-windows10.0.19041.0
+
+ xcopy %HELIX_CORRELATION_PAYLOAD%\$(PreparePayloadOutDirectoryName)\%(HelixWorkItem.ScenarioDirectoryName)_fdd %HELIX_WORKITEM_ROOT%\pub /E /I /Y
+ cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName)_fdd $HELIX_WORKITEM_ROOT/pub
$(Python) test.py startup --scenario-name "%(Identity)"
-
-
-
- $(ScenariosDir)mauiblazordesktop
- $(Python) pre.py publish -c Release -f $(_Framework)-windows10.0.19041.0
- $(Python) test.py sod --scenario-name "%(Identity)"
-
-
- $(ScenariosDir)mauiblazordesktop
- $(Python) pre.py publish -c Release -f $(_Framework)-windows10.0.19041.0
- $(Python) test.py startup --scenario-name "%(Identity)"
-
-
+
+
+