|
2 | 2 | <Import Project="Scenarios.Common.props" /> |
3 | 3 |
|
4 | 4 | <PropertyGroup> |
5 | | - <IncludeXHarnessCli>true</IncludeXHarnessCli> |
| 5 | + <_IsInnerLoop Condition="'$(RunKind)' == 'maui_scenarios_ios_innerloop'">true</_IsInnerLoop> |
| 6 | + <IncludeXHarnessCli Condition="'$(_IsInnerLoop)' != 'true'">true</IncludeXHarnessCli> |
6 | 7 | </PropertyGroup> |
7 | 8 |
|
8 | | - <PropertyGroup> |
| 9 | + <PropertyGroup Condition="'$(_IsInnerLoop)' != 'true'"> |
9 | 10 | <AfterPreparePayloadWorkItemCommand>$(Python) post.py</AfterPreparePayloadWorkItemCommand> |
10 | 11 | <PreparePayloadOutDirectoryName>scenarios_out</PreparePayloadOutDirectoryName> |
11 | 12 | <PreparePayloadWorkItemBaseDirectory Condition="'$(TargetsWindows)' == 'true'">$(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)\</PreparePayloadWorkItemBaseDirectory> |
12 | 13 | <PreparePayloadWorkItemBaseDirectory Condition="'$(TargetsWindows)' != 'true'">$(CorrelationPayloadDirectory)$(PreparePayloadOutDirectoryName)/</PreparePayloadWorkItemBaseDirectory> |
13 | | - |
| 14 | + |
14 | 15 | <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'mono'">/p:UseMonoRuntime=true</_MSBuildArgs> |
15 | 16 | <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false</_MSBuildArgs> |
16 | 17 |
|
17 | | - <!-- Mono FullAOT and CoreCLR R2R are considered as default configurations, so no need for explicit properties --> |
18 | | - |
19 | | - <!-- We have to set the following two variables until https://github.com/dotnet/runtime/pull/124604 flows to us --> |
| 18 | + <!-- We have to set the following two variables until https://github.com/dotnet/runtime/pull/124604 flows to us --> |
20 | 19 | <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">$(_MSBuildArgs);/p:PublishReadyToRunStripDebugInfo=false;/p:PublishReadyToRunStripInliningInfo=false</_MSBuildArgs> |
21 | 20 |
|
22 | | - <!-- CoreCLR Interpreter --> |
23 | 21 | <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr' and '$(CodegenType)' == 'Interpreter'">$(_MSBuildArgs);/p:PublishReadyToRun=false</_MSBuildArgs> |
24 | | - <!-- CoreCLR NativeAOT --> |
25 | 22 | <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr' and '$(CodegenType)' == 'NativeAOT'">$(_MSBuildArgs);/p:PublishAot=true;/p:PublishAotUsingRuntimePack=true</_MSBuildArgs> |
| 23 | + </PropertyGroup> |
26 | 24 |
|
| 25 | + <PropertyGroup Condition="'$(_IsInnerLoop)' == 'true'"> |
| 26 | + <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'mono'">/p:UseMonoRuntime=true</_MSBuildArgs> |
| 27 | + <_MSBuildArgs Condition="'$(RuntimeFlavor)' == 'coreclr'">/p:UseMonoRuntime=false</_MSBuildArgs> |
| 28 | + <iOSRid Condition="'$(iOSRid)' == ''">iossimulator-x64</iOSRid> |
| 29 | + <_MSBuildArgs>$(_MSBuildArgs) /p:RuntimeIdentifier=$(iOSRid)</_MSBuildArgs> |
| 30 | + <_MSBuildArgs Condition="'$(iOSRid)' == 'ios-arm64'">$(_MSBuildArgs) /p:EnableCodeSigning=false</_MSBuildArgs> |
| 31 | + <_MSBuildArgs>$(_MSBuildArgs) /p:MtouchLink=None</_MSBuildArgs> |
| 32 | + <RunConfigsString>$(RuntimeFlavor)_Default</RunConfigsString> |
| 33 | + <InnerLoopIterations Condition="'$(InnerLoopIterations)' == ''">3</InnerLoopIterations> |
| 34 | + <_MacEnvVars>export DOTNET_ROOT=$HELIX_CORRELATION_PAYLOAD/dotnet;export DOTNET_CLI_TELEMETRY_OPTOUT=1;export DOTNET_MULTILEVEL_LOOKUP=0;export NUGET_PACKAGES=$HELIX_WORKITEM_ROOT/.packages;export PATH=$HELIX_CORRELATION_PAYLOAD/dotnet:$PATH</_MacEnvVars> |
27 | 35 | </PropertyGroup> |
28 | 36 |
|
29 | 37 | <Target Name="RemoveDotnetFromCorrelationStaging" BeforeTargets="BeforeTest"> |
30 | 38 | <Message Text="Removing Dotnet Packs from Correlation Staging" Importance="high" /> |
31 | 39 | <RemoveDir Directories="$(CorrelationPayloadDirectory)dotnet/packs" /> |
32 | | - <!-- Remove scenario build intermediates to reduce payload size (published output is in scenarios_out/) --> |
33 | | - <RemoveDir Directories="@(MAUIiOSScenario -> '%(PayloadDirectory)/app/obj')" /> |
34 | | - <RemoveDir Directories="@(MAUIiOSScenario -> '%(PayloadDirectory)/app/bin')" /> |
| 40 | + <RemoveDir Condition="'$(_IsInnerLoop)' != 'true'" Directories="@(MAUIiOSScenario -> '%(PayloadDirectory)/app/obj')" /> |
| 41 | + <RemoveDir Condition="'$(_IsInnerLoop)' != 'true'" Directories="@(MAUIiOSScenario -> '%(PayloadDirectory)/app/bin')" /> |
35 | 42 | </Target> |
36 | 43 |
|
37 | 44 | <ItemDefinitionGroup> |
38 | 45 | <HelixWorkItem> |
39 | | - <Timeout>00:30</Timeout> |
| 46 | + <Timeout Condition="'$(_IsInnerLoop)' != 'true'">00:30</Timeout> |
| 47 | + <Timeout Condition="'$(_IsInnerLoop)' == 'true'">02:30</Timeout> |
40 | 48 | </HelixWorkItem> |
41 | 49 | </ItemDefinitionGroup> |
42 | 50 |
|
43 | | - <ItemGroup> |
| 51 | + <ItemGroup Condition="'$(_IsInnerLoop)' != 'true'"> |
44 | 52 | <MAUIiOSScenario Include=".NET iOS Default Template"> |
45 | 53 | <ScenarioDirectoryName>netios</ScenarioDirectoryName> |
46 | 54 | <PayloadDirectory>$(ScenariosDir)%(ScenarioDirectoryName)</PayloadDirectory> |
|
67 | 75 | </MAUIiOSScenario> |
68 | 76 | </ItemGroup> |
69 | 77 |
|
70 | | - <ItemGroup> |
| 78 | + <ItemGroup Condition="'$(_IsInnerLoop)' != 'true'"> |
71 | 79 | <PreparePayloadWorkItem Include="@(MAUIiOSScenario)"> |
72 | 80 | <!-- Select the highest installed versioned Xcode bundle and avoid runner-image symlink aliases as they do not work with iOS SDK --> |
73 | 81 | <Command>XCODE_PATH=`find /Applications -maxdepth 1 -type d -name 'Xcode_*.app' | sort -t_ -k2 -V | tail -1` && echo "Selected Xcode: $XCODE_PATH" && sudo xcode-select -s "$XCODE_PATH" && $(Python) pre.py publish -f $(PERFLAB_Framework)-ios --self-contained -c $(BuildConfig) -r ios-arm64 --msbuild="$(_MSBuildArgs)" --binlog $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName)/%(PreparePayloadWorkItem.ScenarioDirectoryName).binlog -o $(PreparePayloadWorkItemBaseDirectory)%(PreparePayloadWorkItem.ScenarioDirectoryName) && rm -rf app/obj app/bin && cd ../ && zip -r %(PreparePayloadWorkItem.ScenarioDirectoryName).zip %(PreparePayloadWorkItem.ScenarioDirectoryName)</Command> |
74 | 82 | <WorkingDirectory>%(PreparePayloadWorkItem.PayloadDirectory)</WorkingDirectory> |
75 | 83 | </PreparePayloadWorkItem> |
76 | 84 | </ItemGroup> |
77 | 85 |
|
78 | | - <ItemGroup> |
| 86 | + <ItemGroup Condition="'$(_IsInnerLoop)' != 'true'"> |
79 | 87 | <HelixWorkItem Include="@(MAUIiOSScenario -> 'SOD - %(Identity) IPA Size')"> |
80 | 88 | <PreCommands>cp -r $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/%(HelixWorkItem.ScenarioDirectoryName) $HELIX_WORKITEM_ROOT/pub</PreCommands> |
81 | 89 | <Command>$(Python) test.py sod --scenario-name "%(Identity)" $(ScenarioArgs)</Command> |
|
124 | 132 | <![CDATA[ |
125 | 133 | # PreCommands |
126 | 134 | export XHARNESSPATH=$XHARNESS_CLI_PATH |
127 | | - |
| 135 | +
|
128 | 136 | cp -v $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/mauiios/MauiiOSDefault.ipa $HELIX_WORKITEM_ROOT/mauiios/MauiiOSDefault.zip |
129 | 137 | mkdir $HELIX_WORKITEM_ROOT/mauiios/pub |
130 | 138 | cp -v $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/mauiios/versions.json $HELIX_WORKITEM_ROOT/mauiios/pub/versions.json |
|
152 | 160 | <![CDATA[ |
153 | 161 | # PreCommands |
154 | 162 | export XHARNESSPATH=$XHARNESS_CLI_PATH |
155 | | - |
| 163 | +
|
156 | 164 | cp -v $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/mauisamplecontentios/MauiSampleContentiOSDefault.ipa $HELIX_WORKITEM_ROOT/mauisamplecontentios/MauiSampleContentiOSDefault.zip |
157 | 165 | mkdir $HELIX_WORKITEM_ROOT/mauisamplecontentios/pub |
158 | 166 | cp -v $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/mauisamplecontentios/versions.json $HELIX_WORKITEM_ROOT/mauisamplecontentios/pub/versions.json |
|
172 | 180 | ]]> |
173 | 181 | </CustomCommands> |
174 | 182 | </XHarnessAppBundleToTest> |
175 | | - <!-- Now also disabled for normal mono runs. (Reenable for mono and native aot once fixed). Tracking issue: https://github.com/dotnet/performance/issues/3148 --> |
176 | | - <!-- <XHarnessAppBundleToTest Condition="'$(RuntimeFlavor)' == 'mono'" Include="Device Startup - iOS Maui Blazor Default Template"> |
177 | | - <AppBundlePath>$(ScenariosDir)mauiblazorios.zip</AppBundlePath> |
178 | | - <WorkItemTimeout>00:15:00</WorkItemTimeout> |
179 | | - <TestTarget>ios-device</TestTarget> |
180 | | - <CustomCommands> |
181 | | - <![CDATA[ |
182 | | - # PreCommands |
183 | | - export XHARNESSPATH=$XHARNESS_CLI_PATH |
184 | | -
|
185 | | - cp -v $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/mauiblazorios/MauiBlazoriOSDefault.ipa $HELIX_WORKITEM_ROOT/mauiblazorios/MauiBlazoriOSDefault.zip |
186 | | - mkdir $HELIX_WORKITEM_ROOT/mauiblazorios/pub |
187 | | - cp -v $HELIX_CORRELATION_PAYLOAD/$(PreparePayloadOutDirectoryName)/mauiblazorios/versions.json $HELIX_WORKITEM_ROOT/mauiblazorios/pub/versions.json |
188 | | - unzip -d $HELIX_WORKITEM_ROOT/mauiblazorios $HELIX_WORKITEM_ROOT/mauiblazorios/MauiBlazoriOSDefault.zip |
189 | | - mv $HELIX_WORKITEM_ROOT/mauiblazorios/Payload/MauiBlazoriOSDefault.app $HELIX_WORKITEM_ROOT/mauiblazorios/MauiBlazoriOSDefault.app |
190 | | - cp -f embedded.mobileprovision $HELIX_WORKITEM_ROOT/mauiblazorios/MauiBlazoriOSDefault.app |
191 | | - cd $HELIX_WORKITEM_ROOT/mauiblazorios |
192 | | - sign MauiBlazoriOSDefault.app |
193 | | -
|
194 | | - # Testing commands |
195 | | - $(Python) test.py devicestartup -1-device-type ios -1-package-path MauiBlazoriOSDefault.app -1-package-name net.dot.mauiblazortesting -1-scenario-name "%(Identity)" -1-use-fully-drawn-time -1-fully-drawn-magic-string __MAUI_Blazor_WebView_OnAfterRender__ -1-startup-iterations 5 $(ScenarioArgs) |
196 | | - ((result=$?)) |
197 | | -
|
198 | | - # Post commands |
199 | | - $(Python) post.py |
200 | | - exit $result |
201 | | - ]]> |
202 | | - </CustomCommands> |
203 | | - </XHarnessAppBundleToTest> --> |
204 | 183 | </ItemGroup> |
205 | 184 |
|
| 185 | + <ItemGroup Condition="'$(_IsInnerLoop)' == 'true'"> |
| 186 | + <MAUIiOSInnerLoopScenario Include="MAUI iOS Inner Loop"> |
| 187 | + <ScenarioDirectoryName>mauiiosinnerloop</ScenarioDirectoryName> |
| 188 | + <PayloadDirectory>$(ScenariosDir)%(ScenarioDirectoryName)</PayloadDirectory> |
| 189 | + </MAUIiOSInnerLoopScenario> |
| 190 | + </ItemGroup> |
| 191 | + |
| 192 | + <ItemGroup Condition="'$(_IsInnerLoop)' == 'true'"> |
| 193 | + <PreparePayloadWorkItem Include="@(MAUIiOSInnerLoopScenario)"> |
| 194 | + <Command>XCODE_PATH=`find /Applications -maxdepth 1 -type d -name 'Xcode_*.app' | sort -t_ -k2 -V | tail -1` && echo "Selected Xcode: $XCODE_PATH" && sudo xcode-select -s "$XCODE_PATH" && $(Python) pre.py default -f $(PERFLAB_Framework)-ios</Command> |
| 195 | + <WorkingDirectory>%(PreparePayloadWorkItem.PayloadDirectory)</WorkingDirectory> |
| 196 | + </PreparePayloadWorkItem> |
| 197 | + </ItemGroup> |
| 198 | + |
| 199 | + <ItemGroup Condition="'$(_IsInnerLoop)' == 'true' and '$(iOSRid)' != 'ios-arm64'"> |
| 200 | + <HelixWorkItem Include="@(MAUIiOSInnerLoopScenario -> 'Inner Loop Simulator - %(Identity)')"> |
| 201 | + <PreCommands>$(_MacEnvVars);export IOS_RID=$(iOSRid);$(Python) setup_helix.py $(PERFLAB_Framework)-ios "$(_MSBuildArgs)" || exit $?</PreCommands> |
| 202 | + <Command>$(Python) test.py iosinnerloop --csproj-path app/MauiiOSInnerLoop.csproj --edit-src "src/MainPage.xaml.cs;src/MainPage.xaml" --edit-dest "app/Pages/MainPage.xaml.cs;app/Pages/MainPage.xaml" --bundle-id com.companyname.mauiiosinnerloop -f $(PERFLAB_Framework)-ios -c Debug --msbuild-args "$(_MSBuildArgs)" --device-type simulator --inner-loop-iterations $(InnerLoopIterations) --scenario-name "%(Identity)" $(ScenarioArgs)</Command> |
| 203 | + <PostCommands>export IOS_RID=$(iOSRid);$(Python) post.py</PostCommands> |
| 204 | + <DownloadFilesFromResults>output.log</DownloadFilesFromResults> |
| 205 | + </HelixWorkItem> |
| 206 | + </ItemGroup> |
| 207 | + |
| 208 | + <ItemGroup Condition="'$(_IsInnerLoop)' == 'true' and '$(iOSRid)' == 'ios-arm64'"> |
| 209 | + <HelixWorkItem Include="@(MAUIiOSInnerLoopScenario -> 'Inner Loop Device - %(Identity)')"> |
| 210 | + <PreCommands>$(_MacEnvVars);export IOS_RID=$(iOSRid);$(Python) setup_helix.py $(PERFLAB_Framework)-ios "$(_MSBuildArgs)" || exit $?</PreCommands> |
| 211 | + <Command>$(Python) test.py iosinnerloop --csproj-path app/MauiiOSInnerLoop.csproj --edit-src "src/MainPage.xaml.cs;src/MainPage.xaml" --edit-dest "app/Pages/MainPage.xaml.cs;app/Pages/MainPage.xaml" --bundle-id com.companyname.mauiiosinnerloop -f $(PERFLAB_Framework)-ios -c Debug --msbuild-args "$(_MSBuildArgs)" --device-type device --inner-loop-iterations $(InnerLoopIterations) --scenario-name "%(Identity)" $(ScenarioArgs)</Command> |
| 212 | + <PostCommands>export IOS_RID=$(iOSRid);$(Python) post.py</PostCommands> |
| 213 | + <DownloadFilesFromResults>output.log</DownloadFilesFromResults> |
| 214 | + </HelixWorkItem> |
| 215 | + </ItemGroup> |
206 | 216 |
|
207 | | - <!-- |
208 | | - This target is to work around the XHarness command that depend on scripts in ORIGPYPATH |
209 | | - being run before we get to run our normal Post commands. AddXHarnessCLI is the XHarness |
210 | | - Target so we just make sure we add this after that. |
211 | | - --> |
212 | | - <Target Name="ResetPYTHONPATHBeforeXHarnessCommand" AfterTargets="AddXHarnessCLI"> |
| 217 | + <Target Name="ResetPYTHONPATHBeforeXHarnessCommand" AfterTargets="AddXHarnessCLI" Condition="'$(_IsInnerLoop)' != 'true'"> |
213 | 218 | <PropertyGroup> |
214 | 219 | <HelixPostCommands>export PYTHONPATH=$ORIGPYPATH;$(HelixPostCommands)</HelixPostCommands> |
215 | 220 | </PropertyGroup> |
|
0 commit comments