[wasm] Add support for a random test case orderer, for xunit tests#65628
[wasm] Add support for a random test case orderer, for xunit tests#65628radical merged 8 commits intodotnet:mainfrom
Conversation
This is enabled by default for wasm with
`$(XUnitUseRandomizedTestOrderer)=true`.
When the library tests run, they print two messages like:
```
info: Using random seed for test cases: 700149826
info: Using random seed for collections: 700149826
info: Starting: System.Collections.Immutable.Tests.dll
```
These seeds are picked randomly every time the tests are run. To run the
tests with a specific seed, use environment variable
`XUNIT_RANDOM_ORDER_SEED`.
When running with tests, this can be used as:
`WasmXHarnessMonoArgs="--setenv=XUNIT_RANDOM_ORDER_SEED=<seed>`
|
Tagging subscribers to 'arch-wasm': @lewing Issue DetailsThis is enabled by default for wasm with When the library tests run, they print two messages like: These seeds are picked randomly every time the tests are run. To run the When running with tests, this can be used as:
|
|
I couldn't figure out the best area label to add to this PR. If you have write-permissions please help me learn by adding exactly one area label. |
|
I'm not sure where to add the documentation. Thoughts? |
|
/azp run runtime-wasm |
|
Azure Pipelines successfully started running 1 pipeline(s). |
|
Does this make the test order deterministic wrt to a specific seed ? |
|
Yep |
|
Random test failure with v8/linux, but seems to be reliably reproducible with |
|
System.Runtime.Loader.Tests fail randomly, but deterministically with Maybe these tests have some unintended dependence on order? |
`System.Xml.Tests.TCCloseOutput.*` tests seem to depend on the order of
execution.
```
[06:35:14] fail: [FAIL] System.Xml.Tests.TCCloseOutput.CloseOutput_4(utils: XmlWriterUtils { Async = False, WriterType = UTF8Writer }, outputType: "Stream")
[06:35:14] info: System.IO.FileNotFoundException : File Not Found: writer.out
[06:35:14] info: at XmlCoreTest.Common.FilePathUtil.getStream(String filename)
[06:35:14] info: at System.Xml.Tests.TCCloseOutput.CloseOutput_4(XmlWriterUtils utils, String outputType)
[06:35:14] info: at System.Reflection.RuntimeMethodInfo.InvokeWorker(Object obj, BindingFlags invokeAttr, Span`1 parameters)
```
|
/azp run runtime-wasm |
|
Azure Pipelines successfully started running 1 pipeline(s). |
It seems to cause failures like, reproducible with `XUNIT_RANDOM_ORDER_SEED=2106784294`: ``` [06:25:43] fail: [FAIL] System.Runtime.Loader.Tests.SatelliteAssembliesTests.SatelliteLoadsCorrectly_FromName(alc: "Empty", assemblyName: "System.Runtime.Loader.Tests", culture: "en") [06:25:43] info: Assert.Same() Failure [06:25:43] info: Expected: "Default" System.Runtime.Loader.DefaultAssemblyLoadContext #0 [06:25:43] info: Actual: "Empty" System.Runtime.Loader.AssemblyLoadContext #4 [06:25:43] info: at System.Runtime.Loader.Tests.SatelliteAssembliesTests.SatelliteLoadsCorrectly_FromName(String alc, String assemblyName, String culture) [06:25:43] info: at System.Reflection.RuntimeMethodInfo.InvokeWorker(Object obj, BindingFlags invokeAttr, Span`1 parameters) ```
Randomized runs seem to fail with: ``` [03:29:54] info: Starting: System.Runtime.Numerics.Tests.dll [03:29:58] fail: [FAIL] System.Numerics.Tests.cast_toTest.RunDoubleExplicitCastToBigIntegerTests [03:29:58] info: Assert.Equal() Failure [03:29:58] info: ↓ (pos 0) [03:29:58] info: Expected: -0 [03:29:58] info: Actual: 0 [03:29:58] info: ↑ (pos 0) [03:29:58] info: at System.Numerics.Tests.cast_toTest.VerifyDoubleExplicitCastToBigInteger(Double value) [03:29:58] info: at System.Numerics.Tests.cast_toTest.RunDoubleExplicitCastToBigIntegerTests() [03:29:58] info: at System.Reflection.RuntimeMethodInfo.InvokeWorker(Object obj, BindingFlags invokeAttr, Span`1 parameters) ``` Reproducible with `XUNIT_RANDOM_SEED_ORDER=1883302047`.
|
I have disabled random ordering for these for now. But I haven't opened any issues, because I'm not entirely sure if it's a bug. |
|
/azp run runtime-wasm |
|
Azure Pipelines successfully started running 1 pipeline(s). |
src/libraries/System.Runtime.Numerics/tests/System.Runtime.Numerics.Tests.csproj
Outdated
Show resolved
Hide resolved
|
/azp run runtime-wasm |
|
Azure Pipelines successfully started running 1 pipeline(s). |
This is enabled by default for wasm with
$(XUnitUseRandomizedTestOrderer)=true.When the library tests run, they print two messages like:
These seeds are picked randomly every time the tests are run. To run the
tests with a specific seed, use environment variable
XUNIT_RANDOM_ORDER_SEED, which would run the tests in the exact same order.When running tests, the environment variable is automatically passed to
the wasm app.