dotnet / dotnet/msbuild

[Multithreaded MSBuild] Design and run tests

Open
#12,478 0 comments 0 reactions 0 assignees View on GitHub
Area: Tests Epic triaged
Dominant language
C#
Stars
5.5k
Forks
1.5k
Avg merge
1d 8h
Merged PRs (30d)
141

Description

Multithreaded builds fail in ways that ordinary tests do not catch: race conditions that only appear under load, and tasks that pass in a multi-process test but break when they share a process. This epic builds the test coverage that finds those problems before users do.

## Steps

- [x] [#12124](https://github.com/dotnet/msbuild/issues/12124) Use AI to review MT feature code and find race conditions.
- [x] [#12640](https://github.com/dotnet/msbuild/issues/12640) [#12919](https://github.com/dotnet/msbuild/issues/12919) [#13153](https://github.com/dotnet/msbuild/issues/13153) Add end-to-end multithreaded tests to the MSBuild PR gate
- [ ] [#12920](https://github.com/dotnet/msbuild/issues/12920) Build and run infrastructure to reproduce and diagnose race conditions [size M] [Milestone: version 18.13]
- [ ] Fix found issues [Milestone: SDK 11.0.200]

## Stakeholders

The MSBuild team, who need confidence that `-mt` is correct before it is on by default.

## Definition of done

The test infrastructure does not highlight any MT-related bugs.

Original description and test scenarios

Design and implement tests to find rare race conditions in the multithreaded MSBuild implementation. Fix found issues.

Specific scenarios of interest:
* simple console app (e.g. `dotnet new console`)
* useful to help track the end-to-end perf of the 'getting started' experience
* MSBuild repo itself
* We do fairly non-trivial things with custom, local tasks, etc
* Orchard Code
* representative of large-ish .NET SDK-style workspaces
* A non-SDK-style workspace/project build
* should show great impact of MT because most Tasks are provided by MSBuild - earlier visibility into potential gains
* A workspace that uses static graph
* Shouldn't impact _execution_, which is what multithreaded is mostly concerned with, but a good thing to have verified
* A workspace that uses the project cache plugin
* Shouldn't impact multithreaded mode because the project cache plugin entirely replaces calls to build a specific project, but a good thing to have verified

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.