-
Notifications
You must be signed in to change notification settings - Fork 4.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[mono][tests] Parallel AOT compilation of runtime tests on iOS platforms #86089
[mono][tests] Parallel AOT compilation of runtime tests on iOS platforms #86089
Conversation
Tagging subscribers to this area: @directhex Issue DetailsThis PR aims to move AOT compilation of the runtime tests to Helix.
|
@steveisok @akoeplinger @ivanpovazan @mdh1418 This pull request is ready for review. I am triaging failing tests by fixing or disabling them, but it should not affect the functionality. List of follow-up tasks is in #84254. @SamMonoRT Currently, there are 28 test suites (apps) that can be run on iOS, out of which 7 are failing. I will try to fix or disable the failing tests and run the remaining ones. Afterward, I suggest we review other disabled test suites for AOT compilation and prioritize those with higher impact. |
/azp run runtime-ioslike,runtime-ioslikesimulator |
No commit pushedDate could be found for PR 86089 in repo dotnet/runtime |
/azp run runtime-ioslike,runtime-ioslikesimulator |
Azure Pipelines successfully started running 2 pipeline(s). |
/azp run runtime-ioslikesimulator |
This comment was marked as outdated.
This comment was marked as outdated.
Azure Pipelines successfully started running 1 pipeline(s). |
/azp run runtime-ioslikesimulator |
No commit pushedDate could be found for PR 86089 in repo dotnet/runtime |
/azp run runtime-ioslikesimulator |
Azure Pipelines successfully started running 1 pipeline(s). |
ping here :) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Apart from a few comments/questions looks good to me!
eng/testing/tests.ioslike.targets
Outdated
<!-- | ||
Checks if the directory name "AppleAssembliesToBundle" is equal to the "AssemblyName", | ||
if they match, consider it as the root directory and copy the files there, | ||
otherwise, copy the files to a subdirectory. | ||
--> | ||
<BundleFiles Condition="'%(AppleAssembliesToBundle._IsNative)' != 'true' and ($([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName('%(AppleAssembliesToBundle.Identity)')))) == '$(AssemblyName)' or '$(CustomMain)' != 'true')" | ||
Include="@(AppleAssembliesToBundle)" TargetDir="publish" /> | ||
<BundleFiles Condition="'%(AppleAssembliesToBundle._IsNative)' != 'true' and $([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName('%(AppleAssembliesToBundle.Identity)')))) != '$(AssemblyName)' and '$(CustomMain)' == 'true'" | ||
Include="@(AppleAssembliesToBundle)" TargetDir="publish\$([System.IO.Path]::GetFileName($([System.IO.Path]::GetDirectoryName('%(AppleAssembliesToBundle.Identity)'))))" /> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a question: Why does it matter if $(CustomMain)
is specified or not here?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The same target is used for the library and runtime tests and the condition checks if the directory is equals to the assemblyName. In case of runtime tests that is true, but for library tests that creates recursive dirs.
Probably better to use more descriptive variable.
src/tests/build.proj
Outdated
<Copy SourceFiles="@(RecursiveCopyHack)" DestinationFolder="$(FinalPath)/%(RecursiveDir)" /> | ||
<RemoveDir Directories="$(AppBundlePath)" /> | ||
<Message Importance="High" Text="App: $(FinalPath)" /> | ||
<CustomTask EntryPoints="@(EntryPoints)" RunScriptCommand="$(RunScriptCommand)" AppName="$(Category)" Condition="'$(BuildTestsOnHelix)' == 'true'"> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
nit: I don't have a good suggestion, but I think the task should have a more meaningful name.
Maybe something like UpdateRunScriptToHandleMultipleEntryPoints
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Of course, I missed that.
Merging this PR to enhance the apple mobile tests coverage. If additional feedback is provided, it will be addressed in a follow-up. |
LGTM! Awesome work! |
Description
This PR aims to move the AOT compilation of runtime tests to the Helix and enable the following testing groups on apple mobile platforms:
tracing_eventpipe
,tracing_eventlistener
,reflection_regression
,reflection_StaticInterfaceMembers
,reflection_GenericAttribute
,reflection_DefaultInterfaceMethods
,baseservices_mono
,baseservices_exceptions
,baseservices_compilerservices
,baseservices_TieredCompilation
,Regressions_coreclr
,Loader_classloader
,Loader_StartupHooks
,JIT_RyuJIT
,JIT_PGO
,JIT_Math
,JIT_Intrinsics
,Interop_DllImportSearchPaths
,JIT_Intrinsics
,GC_Scenarios
,GC_Regressions
,GC_LargeMemor
,GC_Features
,GC_Coverage
,GC_API
,Exceptions_UnwindFpBleedTest
,CoreMangLib_system
.The Helix payload is generated using the runtime pipeline. Then, the libraries pipeline is utilized to AOT compile and execute the tests on Helix. The
build-runtime-tests-and-send-to-helix.yml
is updated with thecompileOnHelix
parameter, which if set, uses thelibraries/helix.yml
template instead of the runtimesend-to-helix-step.yml
template. The runtime and libraries pipelines are updated to support AOT compilation of runtime tests on Helix.Important notes:
This PR consistently hits Failed USB connection via port 54050, error 61, in tvOS arm64 Release AllSubsets_Mono #82637