Skip to content

[Quality Week] Improve quality of Crossgen2 testing, most notably in context of library tests #74681

Closed
@trylek

Description

@trylek

Over the course of 2 years since we shipped the first preview of Crossgen2 we have identified several testing gaps that bit us in various phases of development. We would like to at least create an action plan how to address them and ideally implement at least part of the work in context of the Core Runtime team Quality Weeks.

The problem

  • Library testing in the runtime repo doesn't target Crossgen2 at all, neither for compiling the framework nor the individual test apps.

  • While CoreCLR does implement Crossgen2 testing, it does so using a raw freshly built Crossgen2, not the NativeAOT-compiled package we ship to customers. Ideally we should test what customers are using both in CoreCLR and in library testing.

  • Implementing support for Crossgen2 in the library tests would let us expand testing in directions that weren't previously possible - e.g. testing of the new feature of "speculative" cross-version inlining - that would have very limited coverage in many of the tiny runtime tests.

Overall approach

To address these issues, we're broadly thinking about the following:

  • Somehow restructuring the runtime build so that both CoreCLR and library testing can leverage the "final" Crossgen2 produced as part of packs.product.

  • Modifying src\tests\build.proj to publish the customer Crossgen2 to CORE_ROOT for the purpose of CoreCLR testing.

  • Modifying library build scripts to provide more flexibility regarding framework and / or test compilation using Crossgen2 and passing additional flags to Crossgen2.

Open issues

  • The proposed build restructuring goes largely against the current build pipeline (build clr + libs, then the packs). We need to figure out something that doesn't place additional burden on runtime developers (too many new switches or steps) and doesn't substantially regress local innerloop (runtime build perf)

  • At this point it's unclear to me whether library testing with Crossgenned framework should also just grab the pack-produced framework package or basically duplicate the step (perhaps by just calling into the already existing SDK target).

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions