-
Notifications
You must be signed in to change notification settings - Fork 5k
[Android] Run CoreCLR functional tests on Android #112283
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
Changes from all commits
d1a6018
0ff724c
6d38b25
956e00d
5a8042e
63cd36e
388c626
2cc3984
13dbb57
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||
---|---|---|---|---|---|---|
|
@@ -118,3 +118,35 @@ jobs: | |||||
parameters: | ||||||
creator: dotnet-bot | ||||||
testRunNamePrefixSuffix: Mono_$(_BuildConfig) | ||||||
|
||||||
# | ||||||
# Android emulators | ||||||
# Build the whole product using CoreCLR and run libraries tests | ||||||
# | ||||||
- template: /eng/pipelines/common/platform-matrix.yml | ||||||
parameters: | ||||||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||||||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||||||
buildConfig: Release | ||||||
runtimeFlavor: coreclr | ||||||
platforms: | ||||||
- android_x64 | ||||||
- android_arm64 | ||||||
Comment on lines
+133
to
+134
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do we have arm64 emulators setup? I thought that by default these will go to devices, see runtime/eng/pipelines/libraries/helix-queues-setup.yml Lines 96 to 97 in a4f9ec2
Comparing the logs between x64 and am64, I would say that the arm64 are run on devices https://helixr1107v0xdeko0k025g8.blob.core.windows.net/dotnet-runtime-refs-pull-112283-merge-8bd807b9687245838c/Android.Device_Emulator.JIT.Test/1/console.36c43a9c.log?helixlogtype=result. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Yes, it seems that arm64 run on devices so we can move it to extra-platforms-android. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I'm also wondering, if we have the same runs in I think we can have just |
||||||
variables: | ||||||
# map dependencies variables to local variables | ||||||
- name: librariesContainsChange | ||||||
value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] | ||||||
- name: coreclrContainsChange | ||||||
value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] | ||||||
jobParameters: | ||||||
testGroup: innerloop | ||||||
nameSuffix: AllSubsets_CoreCLR | ||||||
isExtraPlatforms: ${{ parameters.isExtraPlatformsBuild }} | ||||||
buildArgs: -s clr.runtime+clr.alljits+clr.corelib+clr.nativecorelib+clr.tools+clr.packages+libs+libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:TestAssemblies=false | ||||||
timeoutInMinutes: 180 | ||||||
# extra steps, run tests | ||||||
postBuildSteps: | ||||||
- template: /eng/pipelines/libraries/helix.yml | ||||||
parameters: | ||||||
creator: dotnet-bot | ||||||
testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) |
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -964,6 +964,47 @@ extends: | |
eq(variables['monoContainsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
|
||
# | ||
# Android devices | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Devices or emulators? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. This should be x64 emulator and arm64 device. |
||
# Build the whole product using CoreCLR and run libraries tests | ||
# | ||
- template: /eng/pipelines/common/platform-matrix.yml | ||
parameters: | ||
jobTemplate: /eng/pipelines/common/global-build-job.yml | ||
helixQueuesTemplate: /eng/pipelines/libraries/helix-queues-setup.yml | ||
buildConfig: Release | ||
runtimeFlavor: coreclr | ||
platforms: | ||
- android_x64 | ||
- android_arm64 | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If these indeed run on devices (see my other comment), we need to make sure we have enough devices so that we can run them on PRs by default and not block other Android jobs. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. How can we test the load? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I think we should monitor the |
||
variables: | ||
# map dependencies variables to local variables | ||
- name: librariesContainsChange | ||
value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'] ] | ||
- name: coreclrContainsChange | ||
value: $[ stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_coreclr.containsChange'] ] | ||
jobParameters: | ||
testGroup: innerloop | ||
nameSuffix: AllSubsets_CoreCLR | ||
buildArgs: -s clr.runtime+clr.alljits+clr.corelib+clr.nativecorelib+clr.tools+clr.packages+libs++libs.tests+host+packs -c $(_BuildConfig) /p:ArchiveTests=true /p:TestAssemblies=false | ||
timeoutInMinutes: 480 | ||
condition: >- | ||
or( | ||
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_libraries.containsChange'], true), | ||
eq(stageDependencies.EvaluatePaths.evaluate_paths.outputs['SetPathVars_installer.containsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
# extra steps, run tests | ||
postBuildSteps: | ||
- template: /eng/pipelines/libraries/helix.yml | ||
parameters: | ||
creator: dotnet-bot | ||
testRunNamePrefixSuffix: CoreCLR_$(_BuildConfig) | ||
condition: >- | ||
or( | ||
eq(variables['librariesContainsChange'], true), | ||
eq(variables['coreclrContainsChange'], true), | ||
eq(variables['isRollingBuild'], true)) | ||
|
||
# | ||
# iOS/tvOS devices - Full AOT + AggressiveTrimming to reduce size | ||
# Build the whole product using Mono and run libraries tests | ||
|
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -723,7 +723,7 @@ | |
BuildInParallel="false" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup Condition="'$(ArchiveTests)' == 'true' and '$(RunSmokeTestsOnly)' != 'true' and '$(RunGrpcTestsOnly)' != 'true' and '$(TargetOS)' == 'android'"> | ||
<ItemGroup Condition="'$(ArchiveTests)' == 'true' and '$(RunSmokeTestsOnly)' != 'true' and '$(RunGrpcTestsOnly)' != 'true' and '$(TargetOS)' == 'android' and '$(RuntimeFlavor)' == 'Mono'"> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Why are we removing this condition? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. We are adding the condition to separate mono and coreclr |
||
<ProjectReference Include="$(MonoProjectRoot)sample\Android\AndroidSampleApp.csproj" | ||
BuildInParallel="false" /> | ||
<ProjectReference Include="$(RepoRoot)\src\tests\FunctionalTests\Android\**\*.Test.csproj" | ||
|
@@ -759,6 +759,11 @@ | |
AdditionalProperties="%(AdditionalProperties);_IsPublishing=true;Configuration=Release;PublishDir=$(XUnitLogCheckerLibrariesOutDir);ROOTFS_DIR=$(ROOTFS_DIR);RuntimeIdentifier=$(OutputRID)" /> | ||
</ItemGroup> | ||
|
||
<ItemGroup Condition="'$(ArchiveTests)' == 'true' and '$(TargetOS)' == 'android' and '$(RuntimeFlavor)' == 'CoreCLR'"> | ||
<ProjectReference Include="$(RepoRoot)\src\tests\FunctionalTests\Android\Device_Emulator\JIT\Android.Device_Emulator.JIT.Test.csproj" | ||
BuildInParallel="false" /> | ||
</ItemGroup> | ||
|
||
<Target Name="GenerateMergedCoverageReport" | ||
AfterTargets="Test" | ||
DependsOnTargets="GenerateCoverageReport" | ||
|
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.
Are these library tests? I thought that functional tests are usually under the runtime test suit.
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.
Functional tests are under libraries. There might be smoke tests under the runtime tests.
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.
Ah, I thought it was the reverse. The https://github.com/dotnet/runtime/blob/main/src/tests/FunctionalTests/Android/Device_Emulator/JIT/Android.Device_Emulator.JIT.Test.csproj is placed under
src/tests
so I got mistaken that it is part of runtime tests.In case of smoke tests, I think these run functional tests and
System.Runtime.Tests
which comes from libraries.