Skip to content

stress dependencies download duplication/confusion #36797

@BruceForstall

Description

@BruceForstall

To run GCStress testing, for x86 and x64, the CoreDisTools library must be downloaded and placed into the runtime directory (or on the path). This is done by the src\coreclr\tests\setup-stress-dependencies.cmd/sh scripts, invoked by the src\coreclr\build-test.cmd/sh scripts.

In the CI system, this step is done many times, sometimes where the result isn't used, so it is confusing where the correct location is that does the required work.

For example, in the "runtime-coreclr gcstress0x3-gcstress0xc" pipeline, consider the Windows x64 case:

  • Job: CoreCLR Product Build Windows_NT x64 checked
    • "Build native test components" invokes F:\workspace\_work\1\s/src/coreclr\build-test.cmd skipmanaged checked x64 -priority=1 skipgeneratelayout which runs src\coreclr\tests\setup-stress-dependencies.cmd and puts coredistools.dll
      in artifacts\bin\coreclr\Windows_NT.x64.Checked
    • "Zip product build" archives it with the rest of the product
  • Job: CoreCLR Common Pri1 Test Build Windows_NT x64 checked
    • "Build managed test components" invokes F:\workspace\_work\1\s/src/coreclr\build-test.cmd skipnative skipgeneratelayout skiptestwrappers checked x64 -priority=1 ci /p:LibrariesConfiguration=Release which runs src\coreclr\tests\setup-stress-dependencies.cmd but the result appears to be unused.
  • Job: CoreCLR Pri1 Runtime Tests Run Windows_NT x64 checked
    • "Unzip product build"
      • unzips the product, including coredistools.dll, into artifacts\bin\coreclr\Windows_NT.x64.Checked
    • "Copy native test components to test output folder"
      • invokes F:\workspace\_work\1\s/src/coreclr\build-test.cmd copynativeonly checked x64 -priority=1 /p:LibrariesConfiguration=Release which runs src\coreclr\tests\setup-stress-dependencies.cmd. This overwrites the version that was downloaded in the "Unzip product build" step.
    • "Generate test wrappers"
      • invokes F:\workspace\_work\1\s/src/coreclr\build-test.cmd buildtestwrappersonly checked x64 -priority=1 /p:LibrariesConfiguration=Release which runs src\coreclr\tests\setup-stress-dependencies.cmd. This overwrites the version that was created in the "Copy native test components to test output folder" step.

I can't figure out where we create the tests\Core_Root directory, and copy in the product files, so I can't tell which of these steps is required, and which is not.

(Doesn't anyone know how/when Core_Root is created?)

It seems like we should only do this coredistools download once. Maybe it should be its own step, with its own archive/unzip steps, to make it more clear.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions