Skip to content

Commit 3b0aab0

Browse files
authored
[PERF][MAUI] Add iOS Startup Scenario (Runtime side) (#67670)
This adds iOS device startup scenario support to the dotnet performance infrastructure. This included adding support for running perf runs on MAC OS devices, adding the flow for the Maui iOS Startup apps, and getting the first XHarness based app runs working.
1 parent 89daf96 commit 3b0aab0

File tree

6 files changed

+167
-31
lines changed

6 files changed

+167
-31
lines changed

eng/pipelines/coreclr/perf.yml

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -257,7 +257,7 @@ jobs:
257257
buildConfig: release
258258
runtimeFlavor: mono
259259
platforms:
260-
- Windows_x64
260+
- OSX_x64
261261
variables:
262262
- name: mauiVersion
263263
value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ]
@@ -267,25 +267,29 @@ jobs:
267267
projectFile: ios_scenarios.proj
268268
runKind: ios_scenarios
269269
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
270-
logicalmachine: 'perfpixel4a'
271-
iosLlvmBuild: False
272-
additionalSetupParameters: "-MauiVersion $env:mauiVersion"
270+
logicalmachine: 'perfiphone12mini'
271+
iOSLlvmBuild: False
272+
additionalSetupParameters: "--mauiversion $(mauiVersion)"
273273

274274
- template: /eng/pipelines/common/platform-matrix.yml
275275
parameters:
276276
jobTemplate: /eng/pipelines/coreclr/templates/perf-job.yml
277277
buildConfig: release
278278
runtimeFlavor: mono
279279
platforms:
280-
- Windows_x64
280+
- OSX_x64
281+
variables:
282+
- name: mauiVersion
283+
value: $[ dependencies.Build_iOS_arm64_release_MACiOSAndroidMaui.outputs['getMauiVersion.mauiVersion'] ]
281284
jobParameters:
282285
testGroup: perf
283286
runtimeType: iOSMono
284287
projectFile: ios_scenarios.proj
285288
runKind: ios_scenarios
286289
runJobTemplate: /eng/pipelines/coreclr/templates/run-scenarios-job.yml
287-
logicalmachine: 'perfpixel4a'
288-
iosLlvmBuild: True
290+
logicalmachine: 'perfiphone12mini'
291+
iOSLlvmBuild: True
292+
additionalSetupParameters: "--mauiversion $(mauiVersion)"
289293

290294
# run mono microbenchmarks perf job
291295
- template: /eng/pipelines/common/platform-matrix.yml

eng/pipelines/coreclr/templates/build-perf-maui-apps.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -178,11 +178,11 @@ steps:
178178
cp MauiTesting.csproj MauiTesting.csproj.bak
179179
sed -i'' -e 's/net6.0-ios;net6.0-maccatalyst/net6.0-ios/g' MauiTesting.csproj
180180
181-
../dotnet publish -bl:MauiiOS.binlog -f net6.0-ios --self-contained -r ios-arm64 -c Release /p:_RequireCodeSigning=false
181+
../dotnet publish -bl:MauiiOS.binlog -f net6.0-ios --self-contained -r ios-arm64 -c Release /p:_RequireCodeSigning=false /p:ApplicationId=net.dot.mauitesting
182182
mv ./bin/Release/net6.0-ios/ios-arm64/publish/MauiTesting.ipa ./MauiiOSDefault.ipa
183183
184184
cp MauiTesting.csproj.bak MauiTesting.csproj
185-
displayName: Build MAUI iOS
185+
displayName: Build MAUI Default iOS
186186
workingDirectory: $(Build.SourcesDirectory)/MauiTesting
187187
188188
- script: |
@@ -192,7 +192,7 @@ steps:
192192
sed -i'' -e 's/net6.0-ios;net6.0-maccatalyst/net6.0-ios/g' Microsoft.NetConf2021.Maui.csproj
193193
194194
../../../dotnet build ../Web/Components/Podcast.Components.Maui.csproj
195-
../../../dotnet publish Microsoft.NetConf2021.Maui.csproj -bl:MauiiOSPodcast.binlog -f net6.0-ios --self-contained -r ios-arm64 -c Release /p:_RequireCodeSigning=false
195+
../../../dotnet publish Microsoft.NetConf2021.Maui.csproj -bl:MauiiOSPodcast.binlog -f net6.0-ios --self-contained -r ios-arm64 -c Release /p:_RequireCodeSigning=false /p:ApplicationId=net.dot.netconf2021.maui
196196
mv ./bin/Release/net6.0-ios/ios-arm64/publish/Microsoft.NetConf2021.Maui.ipa ./MauiiOSPodcast.ipa
197197
198198
cp Microsoft.NetConf2021.Maui.csproj.bak Microsoft.NetConf2021.Maui.csproj

eng/pipelines/coreclr/templates/perf-job.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ jobs:
100100
${{ if eq(parameters.runtimeType, 'AndroidMono') }}:
101101
extraSetupParameters: -Architecture ${{ parameters.archType }} -AndroidMono
102102
${{ if eq(parameters.runtimeType, 'iosMono') }}:
103-
extraSetupParameters: -Architecture ${{ parameters.archType }} -iOSMono -iOSLlvmBuild:$${{ parameters.iOSLlvmBuild }}
103+
extraSetupParameters: --architecture ${{ parameters.archType }} --iosmono --iosllvmbuild ${{ parameters.iOSLlvmBuild }}
104104

105105
variables: ${{ parameters.variables }}
106106

eng/pipelines/coreclr/templates/run-scenarios-job.yml

Lines changed: 38 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -65,37 +65,47 @@ jobs:
6565
- ${{ if eq(parameters.osGroup, 'windows') }}:
6666
- HelixPreCommandWindows: 'set ORIGPYPATH=%PYTHONPATH%;py -3 -m venv %HELIX_WORKITEM_PAYLOAD%\.venv;call %HELIX_WORKITEM_PAYLOAD%\.venv\Scripts\activate.bat;set PYTHONPATH=;py -3 -m pip install -U pip;py -3 -m pip install --user azure.storage.blob==12.0.0 --force-reinstall;py -3 -m pip install --user azure.storage.queue==12.0.0 --force-reinstall;set "PERFLAB_UPLOAD_TOKEN=$(PerfCommandUploadToken)"'
6767
- HelixPostCommandsWindows: 'set PYTHONPATH=%ORIGPYPATH%'
68-
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osSubGroup, '_musl')) }}:
68+
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osGroup, 'OSX'), ne(parameters.osSubGroup, '_musl')) }}:
6969
- HelixPreCommandLinux: 'export ORIGPYPATH=$PYTHONPATH;export CRYPTOGRAPHY_ALLOW_OPENSSL_102=true;sudo apt-get -y install python3-venv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install --user azure.storage.blob==12.0.0 --force-reinstall;pip3 install --user azure.storage.queue==12.0.0 --force-reinstall;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
7070
- HelixPostCommandsLinux: 'export PYTHONPATH=$ORIGPYPATH'
71-
- ${{ if and(ne(parameters.osGroup, 'windows'), eq(parameters.osSubGroup, '_musl')) }}:
71+
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osGroup, 'OSX'), eq(parameters.osSubGroup, '_musl')) }}:
7272
- HelixPreCommandMusl: 'export ORIGPYPATH=$PYTHONPATH;sudo apk add py3-virtualenv;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install --user azure.storage.blob==12.0.0 --force-reinstall;pip3 install --user azure.storage.queue==12.0.0 --force-reinstall;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
7373
- HelixPostCommandsMusl: 'export PYTHONPATH=$ORIGPYPATH'
74+
- ${{ if eq(parameters.osGroup, 'OSX') }}:
75+
- HelixPreCommandOSX: 'export ORIGPYPATH=$PYTHONPATH;export CRYPTOGRAPHY_ALLOW_OPENSSL_102=true;python3 -m venv $HELIX_WORKITEM_PAYLOAD/.venv;source $HELIX_WORKITEM_PAYLOAD/.venv/bin/activate;export PYTHONPATH=;python3 -m pip install -U pip;pip3 install azure.storage.blob==12.0.0 --force-reinstall;pip3 install azure.storage.queue==12.0.0 --force-reinstall;export PERFLAB_UPLOAD_TOKEN="$(PerfCommandUploadTokenLinux)"'
76+
- HelixPostCommandOSX: 'export PYTHONPATH=$ORIGPYPATH'
7477

7578
# extra private job settings
7679
- ${{ if and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest')) }}:
7780
- ${{ if eq(parameters.osGroup, 'windows') }}:
7881
- AdditionalHelixPreCommands: $(HelixPreCommandWindows)
7982
- AdditionalHelixPostCommands: $(HelixPostCommandsWindows)
8083
- IsInternal: -Internal
81-
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osSubGroup, '_musl')) }}:
84+
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osGroup, 'OSX'), ne(parameters.osSubGroup, '_musl')) }}:
8285
- AdditionalHelixPreCommands: $(HelixPreCommandLinux)
8386
- AdditionalHelixPostCommands: $(HelixPostCommandsLinux)
8487
- IsInternal: --internal
85-
- ${{ if and(ne(parameters.osGroup, 'windows'), eq(parameters.osSubGroup, '_musl')) }}:
88+
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osGroup, 'OSX'), eq(parameters.osSubGroup, '_musl')) }}:
8689
- AdditionalHelixPreCommands: $(HelixPreCommandMusl)
8790
- AdditionalHelixPostCommands: $(HelixPostCommandsMusl)
8891
- IsInternal: --internal
92+
- ${{ if eq(parameters.osGroup, 'OSX') }}:
93+
- AdditionalHelixPreCommands: $(HelixPreCommandOSX)
94+
- AdditionalHelixPostCommands: $(HelixPostCommandOSX)
95+
- IsInternal: --internal
8996
- group: DotNet-HelixApi-Access
9097
- group: dotnet-benchview
9198

9299
- ${{ if not(and(ne(variables['System.TeamProject'], 'public'), notin(variables['Build.Reason'], 'PullRequest'))) }}:
93100
- ${{ if eq(parameters.osGroup, 'windows') }}:
94101
- AdditionalHelixPreCommands: $(HelixPreCommandWindows)
95102
- AdditionalHelixPostCommands: $(HelixPostCommandsWindows)
96-
- ${{ if ne(parameters.osGroup, 'windows') }}:
103+
- ${{ if and(ne(parameters.osGroup, 'windows'), ne(parameters.osGroup, 'OSX')) }}:
97104
- AdditionalHelixPreCommands: $(HelixPreCommandLinux)
98105
- AdditionalHelixPostCommands: $(HelixPostCommandsLinux)
106+
- ${{ if eq(parameters.osGroup, 'OSX') }}:
107+
- AdditionalHelixPreCommands: $(HelixPreCommandOSX)
108+
- AdditionalHelixPostCommands: $(HelixPostCommandOSX)
99109

100110
- ${{ if ne(parameters.runtimeType, 'wasm') }}:
101111
- ExtraSetupArguments: --install-dir $(PayloadDirectory)/dotnet
@@ -121,15 +131,15 @@ jobs:
121131
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
122132
continueOnError: ${{ parameters.continueOnError }}
123133
- script: $(Build.SourcesDirectory)/eng/testing/performance/performance-setup.sh $(IsInternal) --framework $(_Framework) --kind ${{ parameters.runKind }} --logicalmachine ${{ parameters.logicalMachine }} ${{ parameters.extraSetupParameters }} ${{ parameters.additionalSetupParameters }}
124-
displayName: Performance Setup (Linux)
134+
displayName: Performance Setup (Linux/MAC)
125135
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
126136
continueOnError: ${{ parameters.continueOnError }}
127137
# run ci-setup
128138
- script: $(Python) $(PerformanceDirectory)\scripts\ci_setup.py $(SetupArguments) $(ExtraSetupArguments) --output-file $(WorkItemDirectory)\machine-setup.cmd
129139
displayName: Run ci setup script (Windows)
130140
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
131141
- script: $(Python) $(PerformanceDirectory)/scripts/ci_setup.py $(SetupArguments) $(ExtraSetupArguments) --output-file $(WorkItemDirectory)/machine-setup.sh
132-
displayName: Run ci setup script (Linux)
142+
displayName: Run ci setup script (Linux/MAC)
133143
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
134144
# copy wasm packs if running on wasm
135145
- script: >-
@@ -144,7 +154,7 @@ jobs:
144154
displayName: Copy scenario support files (Windows)
145155
condition: and(succeeded(), eq(variables['Agent.Os'], 'Windows_NT'))
146156
- script: cp -r $(PerformanceDirectory)/scripts $(WorkItemDirectory)/scripts/ && cp -r $(PerformanceDirectory)/src/scenarios/shared $(WorkItemDirectory)/shared/ && cp -r $(PerformanceDirectory)/src/scenarios/staticdeps/ $(WorkItemDirectory)/staticdeps/
147-
displayName: Copy scenario support files (Linux)
157+
displayName: Copy scenario support files (Linux/MAC)
148158
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
149159
# build Startup
150160
- script: $(PayloadDirectory)\dotnet\dotnet.exe publish -c Release -o $(WorkItemDirectory)\Startup -f net6.0 -r win-$(Architecture) $(PerformanceDirectory)\src\tools\ScenarioMeasurement\Startup\Startup.csproj
@@ -156,7 +166,12 @@ jobs:
156166
displayName: Build Startup tool (Linux)
157167
env:
158168
PERFLAB_TARGET_FRAMEWORKS: net6.0
159-
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
169+
condition: and(succeeded(), eq(variables['Agent.Os'], 'Linux'))
170+
- script: $(PayloadDirectory)/dotnet/dotnet publish -c Release -o $(WorkItemDirectory)/startup -f net6.0 -r osx-$(Architecture) $(PerformanceDirectory)/src/tools/ScenarioMeasurement/Startup/Startup.csproj
171+
displayName: Build Startup tool (MAC)
172+
env:
173+
PERFLAB_TARGET_FRAMEWORKS: net6.0
174+
condition: and(succeeded(), eq(variables['Agent.Os'], 'Darwin'))
160175
# build SizeOnDisk
161176
- script: $(PayloadDirectory)\dotnet\dotnet.exe publish -c Release -o $(WorkItemDirectory)\SOD -f net6.0 -r win-$(Architecture) $(PerformanceDirectory)\src\tools\ScenarioMeasurement\SizeOnDisk\SizeOnDisk.csproj
162177
displayName: Build SizeOnDisk tool (Windows)
@@ -167,7 +182,20 @@ jobs:
167182
displayName: Build SizeOnDisk tool (Linux)
168183
env:
169184
PERFLAB_TARGET_FRAMEWORKS: net6.0
170-
condition: and(succeeded(), ne(variables['Agent.Os'], 'Windows_NT'))
185+
condition: and(succeeded(), eq(variables['Agent.Os'], 'Linux'))
186+
- script: $(PayloadDirectory)/dotnet/dotnet publish -c Release -o $(WorkItemDirectory)/SOD -f net6.0 -r osx-$(Architecture) $(PerformanceDirectory)/src/tools/ScenarioMeasurement/SizeOnDisk/SizeOnDisk.csproj
187+
displayName: Build SizeOnDisk tool (MAC)
188+
env:
189+
PERFLAB_TARGET_FRAMEWORKS: net6.0
190+
condition: and(succeeded(), eq(variables['Agent.Os'], 'Darwin'))
191+
192+
# Zip the workitem directory (for xharness based workitems)
193+
- task: ArchiveFiles@2
194+
inputs:
195+
rootFolderOrFile: '$(WorkItemDirectory)'
196+
includeRootFolder: false
197+
archiveFile: '$(WorkItemDirectory).zip'
198+
verbose: True
171199

172200
# run perf testing in helix
173201
- template: /eng/pipelines/coreclr/templates/perf-send-to-helix.yml

eng/testing/performance/ios_scenarios.proj

Lines changed: 61 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
<Project Sdk="Microsoft.DotNet.Helix.Sdk" DefaultTargets="Test">
2+
<PropertyGroup>
3+
<IncludeXHarnessCli>true</IncludeXHarnessCli>
4+
</PropertyGroup>
25
<PropertyGroup Condition="'$(AGENT_OS)' != 'Windows_NT'">
36
<Python>python3</Python>
47
<HelixPreCommands>$(HelixPreCommands);chmod +x $HELIX_WORKITEM_PAYLOAD/SOD/SizeOnDisk</HelixPreCommands>
8+
<HelixPreCommands>$(HelixPreCommands);chmod +x $HELIX_WORKITEM_PAYLOAD/startup/Startup</HelixPreCommands>
59
</PropertyGroup>
610

711
<ItemGroup>
@@ -26,39 +30,87 @@
2630
<ItemGroup>
2731
<HelixWorkItem Include="SOD - iOS HelloWorld .app Size">
2832
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
29-
<PreCommands>cd $(ScenarioDirectory)helloios;xcopy %HELIX_CORRELATION_PAYLOAD%\iosHelloWorld\$(LlvmPath) .\app/e/i;$(Python) pre.py --name app</PreCommands>
33+
<PreCommands>cd $(ScenarioDirectory)helloios;cp -rf $HELIX_CORRELATION_PAYLOAD/iosHelloWorld/$(LlvmPath) ./app;$(Python) pre.py --name app</PreCommands>
3034
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot;</Command>
3135
<PostCommands>$(Python) post.py</PostCommands>
3236
</HelixWorkItem>
33-
<HelixWorkItem Include="SOD - Maui iOS IPA Size" Condition="'$(iOSLlvmBuild)' == 'False'">
37+
<HelixWorkItem Include="SOD - Maui MacCatalyst .app Size" Condition="'$(iOSLlvmBuild)' == 'False'">
3438
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
35-
<PreCommands>cd $(ScenarioDirectory)mauiios;copy %HELIX_CORRELATION_PAYLOAD%\MauiiOSDefaultIPA\MauiiOSDefault.ipa .;$(Python) pre.py --name MauiiOSDefault.ipa</PreCommands>
39+
<PreCommands>cd $(ScenarioDirectory)mauiios;cp -rf $HELIX_CORRELATION_PAYLOAD/MauiMacCatalystDefault ./app;$(Python) pre.py --name app</PreCommands>
3640
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot;</Command>
3741
<PostCommands>$(Python) post.py</PostCommands>
3842
</HelixWorkItem>
39-
<HelixWorkItem Include="SOD - Maui iOS IPA Size Unzipped" Condition="'$(iOSLlvmBuild)' == 'False'">
43+
<HelixWorkItem Include="SOD - Maui iOS IPA Size" Condition="'$(iOSLlvmBuild)' == 'False'">
4044
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
41-
<PreCommands>cd $(ScenarioDirectory)mauiios;copy %HELIX_CORRELATION_PAYLOAD%\MauiiOSDefaultIPA\MauiiOSDefault.ipa .;$(Python) pre.py --unzip --name MauiiOSDefault.ipa</PreCommands>
45+
<PreCommands>cd $(ScenarioDirectory)mauiios;cp $HELIX_CORRELATION_PAYLOAD/MauiiOSDefault.ipa .;$(Python) pre.py --name MauiiOSDefault.ipa</PreCommands>
4246
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot;</Command>
4347
<PostCommands>$(Python) post.py</PostCommands>
4448
</HelixWorkItem>
45-
<HelixWorkItem Include="SOD - Maui MacCatalyst .app Size" Condition="'$(iOSLlvmBuild)' == 'False'">
49+
<HelixWorkItem Include="SOD - Maui iOS IPA Size Unzipped" Condition="'$(iOSLlvmBuild)' == 'False'">
4650
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
47-
<PreCommands>cd $(ScenarioDirectory)mauiios;xcopy %HELIX_CORRELATION_PAYLOAD%\MauiMacCatalystDefault .\app/e/i;$(Python) pre.py --name app</PreCommands>
51+
<PreCommands>cd $(ScenarioDirectory)mauiios;cp $HELIX_CORRELATION_PAYLOAD/MauiiOSDefault.ipa .;$(Python) pre.py --unzip --name MauiiOSDefault.ipa</PreCommands>
4852
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot;</Command>
4953
<PostCommands>$(Python) post.py</PostCommands>
5054
</HelixWorkItem>
5155
<HelixWorkItem Include="SOD - Maui iOS Podcast IPA Size" Condition="'$(iOSLlvmBuild)' == 'False'">
5256
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
53-
<PreCommands>cd $(ScenarioDirectory)mauiios;copy %HELIX_CORRELATION_PAYLOAD%\MauiiOSPodcastIPA\MauiiOSPodcast.ipa .;$(Python) pre.py --name MauiiOSPodcast.ipa</PreCommands>
57+
<PreCommands>cd $(ScenarioDirectory)mauiios;cp $HELIX_CORRELATION_PAYLOAD/MauiiOSPodcast.ipa .;$(Python) pre.py --name MauiiOSPodcast.ipa</PreCommands>
5458
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot;</Command>
5559
<PostCommands>$(Python) post.py</PostCommands>
5660
</HelixWorkItem>
5761
<HelixWorkItem Include="SOD - Maui iOS Podcast IPA Size Unzipped" Condition="'$(iOSLlvmBuild)' == 'False'">
5862
<PayloadDirectory>$(WorkItemDirectory)</PayloadDirectory>
59-
<PreCommands>cd $(ScenarioDirectory)mauiios;copy %HELIX_CORRELATION_PAYLOAD%\MauiiOSPodcastIPA\MauiiOSPodcast.ipa .;$(Python) pre.py --unzip --name MauiiOSPodcast.ipa</PreCommands>
63+
<PreCommands>cd $(ScenarioDirectory)mauiios;cp $HELIX_CORRELATION_PAYLOAD/MauiiOSPodcast.ipa .;$(Python) pre.py --unzip --name MauiiOSPodcast.ipa</PreCommands>
6064
<Command>$(Python) test.py sod --scenario-name &quot;%(Identity)&quot;</Command>
6165
<PostCommands>$(Python) post.py</PostCommands>
6266
</HelixWorkItem>
67+
<XHarnessAppBundleToTest Include="Device Startup - iOS Maui Default" Condition="'$(iOSLlvmBuild)' == 'False'">
68+
<AppBundlePath>$(WorkItemDirectory).zip</AppBundlePath>
69+
<WorkItemTimeout>00:05:00</WorkItemTimeout>
70+
<TestTarget>ios-device</TestTarget>
71+
<CustomCommands>
72+
<![CDATA[
73+
# PreCommands
74+
export XHARNESSPATH=$XHARNESS_CLI_PATH
75+
76+
cp -r $HELIX_CORRELATION_PAYLOAD/MauiTesting.app $(ScenarioDirectory)mauiios/MauiTesting.app
77+
cp -f embedded.mobileprovision $(ScenarioDirectory)mauiios/MauiTesting.app
78+
cd $(ScenarioDirectory)mauiios
79+
sign MauiTesting.app
80+
81+
$(Python) pre.py --name MauiTesting.app
82+
83+
# Testing commands
84+
$(Python) test.py devicestartup --device-type ios --package-path MauiTesting.app --package-name net.dot.mauitesting --scenario-name "%(Identity)"
85+
86+
# Post commands
87+
$(Python) post.py
88+
]]>
89+
</CustomCommands>
90+
</XHarnessAppBundleToTest>
91+
<XHarnessAppBundleToTest Include="Device Startup - iOS Maui Podcast" Condition="'$(iOSLlvmBuild)' == 'False'">
92+
<AppBundlePath>$(WorkItemDirectory).zip</AppBundlePath>
93+
<WorkItemTimeout>00:05:00</WorkItemTimeout>
94+
<TestTarget>ios-device</TestTarget>
95+
<CustomCommands>
96+
<![CDATA[
97+
# PreCommands
98+
export XHARNESSPATH=$XHARNESS_CLI_PATH
99+
100+
cp -r $HELIX_CORRELATION_PAYLOAD/Microsoft.NetConf2021.Maui.app $(ScenarioDirectory)mauiios/Microsoft.NetConf2021.Maui.app
101+
cp -f embedded.mobileprovision $(ScenarioDirectory)mauiios/Microsoft.NetConf2021.Maui.app
102+
cd $(ScenarioDirectory)mauiios
103+
sign Microsoft.NetConf2021.Maui.app
104+
105+
$(Python) pre.py --name Microsoft.NetConf2021.Maui.app
106+
107+
# Testing commands
108+
$(Python) test.py devicestartup --device-type ios --package-path Microsoft.NetConf2021.Maui.app --package-name net.dot.netconf2021.maui --scenario-name "%(Identity)"
109+
110+
# Post commands
111+
$(Python) post.py
112+
]]>
113+
</CustomCommands>
114+
</XHarnessAppBundleToTest>
63115
</ItemGroup>
64116
</Project>

0 commit comments

Comments
 (0)