Skip to content
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

NUnit 3.8+ does not finish running tests #2395

Closed
DavidZidar opened this issue Aug 29, 2017 · 41 comments · Fixed by #2476
Closed

NUnit 3.8+ does not finish running tests #2395

DavidZidar opened this issue Aug 29, 2017 · 41 comments · Fixed by #2476
Assignees
Labels
is:bug pri:critical Use this to indicate a hotfix may be necessary
Milestone

Comments

@DavidZidar
Copy link

DavidZidar commented Aug 29, 2017

There seems to be some kind of deadlock going on since NUnit 3.8.0 (I have tried 3.8.1 as well). My tests run fine but when all tests are done NUnit never completes the test run and one CPU remains maxed out until the process is killed.

I am experiencing the same problem with both the console runner and the runner in CodeRush for Roslyn.

I attached a debugger to nunit-agent.exe and this is how my threads look like while this is happening, thread 6488 in my screenshot is the one using all the CPU.

image

@ChrisMaddock
Copy link
Member

@DavidZidar Can you add details of how you're parallelising your tests? By fixtures/test-cases? Do you have a mix of parallel and non-parallel items?

This sounds like it could be related to #2261, which was in 3.8.

@jnm2
Copy link
Contributor

jnm2 commented Aug 29, 2017

Ah... I think I saw this yesterday running tests via ReSharper with 3.8.0.

@DavidZidar
Copy link
Author

I'm using [assembly: Parallelizable(ParallelScope.Fixtures)] in combination with some tests that can not be run in parallell that use the new [NonParallelizable] attribute.

I tried running the console runner with --workers=1 but it made no difference.

@ChrisMaddock
Copy link
Member

ChrisMaddock commented Aug 29, 2017

@DavidZidar

The mix of parallel fixtures and nonparallel items sounds key. Would be really helpful if you could experiment removing a few attributes - and see if you can find a minimum reproducible example.

@DavidZidar
Copy link
Author

I found one offending nonparallizable test fixture that for some reason had 2x [SetUp] methods and one [TearDown], it also had a [OneTimeSetUp] and a [OneTimeTearDown]. When I deleted this class the CodeRush test runner seems to finish every time but the console runner still keeps freezing most of the time although now it has run to completion at least twice.

Unfortunately I am unable to reproduce this problem in a new project and this project is fairly large and I can't share any of the code.

Also, now that I am running my tests over and over again some other tests marked with [NonParallelizable] fail randomly every once in a while like they are being run in parallell even though they are not supposed to be.

@DavidZidar
Copy link
Author

DavidZidar commented Aug 29, 2017

I tried one more thing, I deleted all 23 test fixtures with the [NonParallelizable] attribute but this just made things even worse. Now CodeRush doesn't even make it through 10% of the tests before locking up. I am not sure how far the console runner makes it. There are about 370 fixtures and 3000 tests in total.

@Maradaehne
Copy link

Maradaehne commented Aug 29, 2017

I Experienced the same behavior since version 3.8.0. After a downgrade to version 3.7.1. everything works fine again. I used the resharper test runner and the visual studio test runner. Both had the same behavior. If I run all tests the execution seems get into a deadlock. If I run the tests separate all tests will be executed properly.

My Tests look like this. They simply create a userControl and check if the datacontext can be created correctly by the prism viewmodellocator

    [Apartment(ApartmentState.STA)]
    public class GuiCreationTests
    {
        private TestBootstrapper testBootStrapper;

        private App app;

        [SetUp]
        public void SetupTests()
        {
            testBootStrapper = new TestBootstrapper();
            testBootStrapper.Run();

            if (Application.Current == null)
            {
                app = new App();
                app.InitializeComponent();
            }
        }

        [Test]
        public void CreateMemoryViewWithDataContextCorrectly()
        {
            ViewShouldHaveCorrectDataContext<MemoryView, MemoryViewModel>();
        }

        [Test]
        public void CreateSensorsViewWithDataContextCorrectly()
        {
            ViewShouldHaveCorrectDataContext<SensorsView, SensorsViewModel>();
        }

        [Test]
        public void CreateRegisterViewWithDataContextCorrectly()
        {
            ViewShouldHaveCorrectDataContext<RegisterView, RegisterViewModel>();
        }

        [Test]
        public void CreateRegimeViewWithDataContextCorrectly()
        {
            ViewShouldHaveCorrectDataContext<RegimeView, RegimeViewModel>();
        }

        [Test]
        public void CreateFlashViewWithDataContextCorrectly()
        {
            ViewShouldHaveCorrectDataContext<FlashView, FlashViewModel>();
        }

        private void ViewShouldHaveCorrectDataContext<TView, TViewModel>()
            where TView : UserControl, new() where TViewModel : BaseViewModel
        {
            var sut = (UserControl)new TView();
            sut.DataContext.Should().NotBeNull();
            sut.DataContext.Should().BeOfType<TViewModel>();
        }
    }

@CharliePoole
Copy link
Contributor

@Maradaehne Are you using any kind of parallelism in the tests?

@Maradaehne
Copy link

In the moment i guess there should be no parallelism. I need to check whether the viewmodels create a task tomorrow when i am at work. If it's what you wanted to know.

@CharliePoole
Copy link
Contributor

I was referring to NUnit parallelism. The sample code doesn't have any ParallelAttribute specified, but it could be present at a higher level, as an assembly attribute, for example.

@Maradaehne
Copy link

No I did not use the ParallelAttribute. Sorry I am new to nUnit and was not aware of this attribute.

@CharliePoole
Copy link
Contributor

@Maradaehne You're piggy-backing on an issue about parallelism here. 😄 So your problem is something different. We can try a few fixes here first but if they don't work you should file a separate issue.

It looks to me as if your problem is either related to use of the STA or your TestBootstrapper is doing something that causes it. What's the purpose of that call? Why do you want it to run multiple times? Does it continue to run? (In which case, you need to terminate it)

WRT the STA, create a small test that verifies it is actually running in the STA, as called for on the fixture. It probably is, absent parallel execution, but let's make sure.

@raubreysmith
Copy link

Hi just to jump in on this as our tests have also started hanging with NUnit 3.8+, we're also using [assembly: Parallelizable(ParallelScope.Fixtures)]. As of yet we haven't tried the NonParallelizable attribute.

I'll have to explore the setup and teardown methods used to see if that helps. There is some test inheritance at play so it is a little messy.

@ChrisMaddock
Copy link
Member

I hope this will also be fixed by #2445

If anyone would be able to test out the fix - it can be downloaded from Appveyor here: https://ci.appveyor.com/project/CharliePoole/nunit/build/3.9.0-ci-04450-issue-2438/artifacts

@ChrisMaddock ChrisMaddock added is:bug pri:critical Use this to indicate a hotfix may be necessary and removed confirm labels Sep 17, 2017
@ChrisMaddock ChrisMaddock added this to the 3.8.2 milestone Sep 17, 2017
@ChrisMaddock ChrisMaddock self-assigned this Sep 17, 2017
@DavidZidar
Copy link
Author

I just tested the 3.9.0-ci-04450-issue-2438 build and while it seems to improve things quite a lot it's not there yet.

The CodeRush test runner seems to complete every time now, so that's good but a few of our tests with the Parallelizable(ParallelScope.None) attribute still fail randomly and these tests have been working fine for months while using NUnit 3.5.0.

The console runner still locks up every once in a while.

@ChrisMaddock
Copy link
Member

Thanks @DavidZidar. @rprouse found some additional issues with that PR, I think we have more to look at.

As before - if you're able to break out any reproducible examples, that would be invaluable. We've fixed the issue as it manifested in #2438 - but it sounds like your larger test suite may be hitting different scenarios.

@ChrisMaddock
Copy link
Member

ChrisMaddock commented Sep 18, 2017

I'm also intrigued as to your nonparallel tests running in parallel. Can you produce some logs, using --trace=Verbose. You can annonymise as required, but these should give us a view as to what's happening if your non-parallel tests are running in parallel. (Please also include which tests should be non-parallel, that may not be clear from the logs!)

Edit: Please do this against the 3.9.0-ci build - that's hopefully moving in the right direction.

@DavidZidar
Copy link
Author

Sorry I wasn't clear, some assertions are randomly failing in some of my tests that really shouldn't be failing unless they are being run in parallel and some tests throw NullReferenceException when they really shouldn't.

For instance, some of our tests need to configure DependencyResolver.Current from MVC and one such test is sometimes failing with NullReferenceException when it is using the resolver like it was set back to null or reconfigured with different services for some other test.

A question, are tests marked with Parallelizable(ParallelScope.None) guaranteed to be the only test currently executing per process? Because it seems like maybe some other setup or teardown method has been invoked in between this particular test setup and execution.

@ChrisMaddock
Copy link
Member

Thanks for clarifying. 🙂

A question, are tests marked with Parallelizable(ParallelScope.None) guaranteed to be the only test currently executing per process? Because it seems like maybe some other setup or teardown method has been invoked in between this particular test setup and execution.

That's the theory, yes. It seems like there may be some problems with this in 3.8 however, with the changes to allow test cases to run in parallel.

Two things:

  1. Can you clarify how you're using Parallelizable(ParallelScope.None) - is it on test fixtures, or individual tests?
  2. As above - it should be possible to look at a log file, and verify that the tests being incorrectly run in parallel is definitely your problem. (It sounds very likely, but it would be good to double check before we dig further!)

@DavidZidar
Copy link
Author

We are only using the attribute on fixtures, not individual tests

Here is a single anonymized test-suite node of a test with a failing assertion that really should not fail.

              <test-suite type="TestFixture" id="0-1815" name="" fullname="" classname="" runstate="Runnable" testcasecount="11" result="Failed" site="Child" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.219772" total="11" passed="10" failed="1" warnings="0" inconclusive="0" skipped="0" asserts="11">
                <properties>
                  <property name="ParallelScope" value="None" />
                </properties>
                <failure>
                  <message><![CDATA[One or more child tests had errors]]></message>
                </failure>
                <test-case id="0-1817" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="1397646013" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.017836" asserts="1" />
                <test-case id="0-1818" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="841770727" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.012288" asserts="1" />
                <test-case id="0-1816" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="419323190" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.016657" asserts="1" />
                <test-case id="0-1826" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="1469933891" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.007956" asserts="1" />
                <test-case id="0-1822" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="1086752121" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.021974" asserts="1" />
                <test-case id="0-1824" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="1083353855" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.005639" asserts="1" />
                <test-case id="0-1823" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="1593973579" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.004108" asserts="1" />
                <test-case id="0-1825" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="999831506" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.022739" asserts="1" />
                <test-case id="0-1819" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="2106953889" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.009117" asserts="1" />
                <test-case id="0-1821" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="85741110" result="Passed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.007146" asserts="1" />
                <test-case id="0-1820" name="" fullname="" methodname="" classname="" runstate="Runnable" seed="379361616" result="Failed" start-time="2017-09-18 16:01:01Z" end-time="2017-09-18 16:01:01Z" duration="0.023703" asserts="1">
                  <failure>
                    <message><![CDATA[  Expected: 0
  But was:  2
]]></message>
                    <stack-trace><![CDATA[   at SomeTest() in SomeTest.cs:line 104
]]></stack-trace>
                  </failure>
                  <assertions>
                    <assertion result="Failed">
                      <message><![CDATA[  Expected: 0
  But was:  2
]]></message>
                      <stack-trace><![CDATA[   at SomeTest() in SomeTest.cs:line 104
]]></stack-trace>
                    </assertion>
                  </assertions>
                </test-case>
              </test-suite>

Interestingly the start and stop time is the same on all of them, though I'm not sure if that means anything. NUnit 3.5 seems to behave the same.

@ChrisMaddock
Copy link
Member

Sorry, I don't think I was clear with my log comment.

Pass the argument --trace=Verbose on your NUnit Console command line. This will create a number of .log files - one of these will detail which tests were run on which worker threads, in which order, and how they were parallelised. The number in the square bracket relates to the worker number - see the example below:

12:54:30.324 Debug [10] Dispatcher: Using Direct strategy for Test
12:54:30.324 Debug [10] Dispatcher: Using Parallel strategy for Test(1)
12:54:30.324 Debug [10] Dispatcher: Using Parallel strategy for Test(2)
12:54:30.324 Info  [ 4] TestWorker: Worker#1 executing Test(1)
12:54:30.324 Info  [ 8] TestWorker: Worker#5 executing Test(2)
12:54:30.324 Debug [10] Dispatcher: Using Parallel strategy for Test(3)
12:54:30.324 Debug [10] Dispatcher: Using Parallel strategy for Test(4)
12:54:30.324 Info  [ 5] TestWorker: Worker#2 executing Test(3)
12:54:30.324 Info  [11] TestWorker: Worker#8 executing Test(4)

From this file, you should be able to see if the tests you expect to be non-parallel, are being run in parallel with other tests, or not.

@DavidZidar
Copy link
Author

Oh, right. I didn't see the log files at first.

Here is an anonymized snippet, the failing test was running in thread 22 and it seems to be using "Direct strategy" for all the tests in this particular fixture even though the fixture is marked with Parallelizable(ParallelScope.None).

09:44:03.978 Info  [22] TestWorker: Worker#NP executing ShouldBeNonParallelTests
09:44:03.978 Info  [22] Dispatcher: Saving Queue State for ShouldBeNonParallelTests
09:44:03.978 Debug [22] WorkItemQueue: ParallelQueue.1 pausing
09:44:03.978 Info  [22] WorkItemQueue: ParallelQueue.2 starting
09:44:03.978 Debug [22] WorkItemQueue: ParallelSTAQueue.1 pausing
09:44:03.978 Info  [22] WorkItemQueue: ParallelSTAQueue.2 starting
09:44:03.977 Info  [15] TestWorker: Worker#7 executing SomeOtherTests
09:44:03.978 Debug [22] WorkItemQueue: NonParallelQueue.1 pausing
09:44:03.978 Info  [22] WorkItemQueue: NonParallelQueue.2 starting
09:44:03.978 Debug [22] WorkItemQueue: NonParallelSTAQueue.1 pausing
09:44:03.978 Info  [22] WorkItemQueue: NonParallelSTAQueue.2 starting
09:44:03.978 Debug [18] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [20] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [17] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [ 9] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [15] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [16] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [14] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.978 Debug [ 9] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.977 Info  [19] TestWorker: Worker#11 executing SomeMoreTests
09:44:03.979 Debug [22] Dispatcher: Using Direct strategy for Test_1_from_ShouldBeNonParallelTests
09:44:03.980 Debug [19] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
09:44:03.980 Debug [19] Dispatcher: Using Direct strategy for OtherTestThatCanBeRunInParallel
...
09:44:05.045 Debug [22] Dispatcher: Using NonParallel strategy for ShouldBeNonParallelTests OneTimeTearDown
09:44:05.045 Info  [22] TestWorker: Worker#NP executing ShouldBeNonParallelTests OneTimeTearDown

If this isn't enough maybe I can email you the raw log file in private.

@CharliePoole
Copy link
Contributor

Direct strategy is correct for tests without an attribute. It just means to run on the same thread, without creating a new queue entry.

I assume that the other tests interspersed with thread 22 are Parallel tests in the same fixture.

@DavidZidar
Copy link
Author

Ah, I understand.

No, the tests on the other threads are from other fixtures.

@CharliePoole
Copy link
Contributor

Then we need to figure out why they are running. If the fixture is non-Parallelizable then no others should be running at the same time.

Try...

  1. Using NonParallelizable rather than ParallelScope.None. It should be the same but a bug is possible.

  2. List for us all the parallel attributes on the fixture and the suites that contain it all the way up to the assembly.

@DavidZidar
Copy link
Author

  1. Tried it, made no difference as far as I can tell
  2. AssemblyInfo.cs has [assembly: Parallelizable(ParallelScope.Fixtures)] and now a few fixtures have the NonParallelizable attribute, that's it

@CharliePoole
Copy link
Contributor

That narrows down the problem. Your non-parallel fixture is running in parallel with some other fixture or fixtures. The hanging is a secondary effect.

Ideally, it would be good if you could verify the above, by running with 3.7.1 and examining the output from --trace:Verbose. You should see only the tests from a single non-parallel fixture running together.

If that's the case, we can next examine whether the fixtures run erroneously in parallel with the NP fixture have anything in common or if it's a more general problem in the dispatcher.

@DavidZidar
Copy link
Author

Right, tried running with 3.7.1 and it runs our tests just fine every time. The difference I'm seeing is that 3.7.1 seems to be running all non parallelizable tests in series on a single thread at the very end unlike 3.8+ which seems to run them whenever.

@CharliePoole
Copy link
Contributor

In a simple situation like this (most fixtures parallel with a few non-parallel and no parallelizable test cases) that's what should happen. All the parallelizable fixtures should complete then the non-parallelizable ones.

@ChrisMaddock This seems like the key to me. We made some fixes for the corner cases but it seems like we messed up a very simple case.

@ChrisMaddock ChrisMaddock removed their assignment Sep 22, 2017
@CharliePoole
Copy link
Contributor

@DavidZidar See issue #2454, which seems like a simpler replication of your problem.

@DavidZidar
Copy link
Author

@CharliePoole Very nice, we do indeed have a few SetUpFixtures so it looks like it might be the same issue.

@Suremaker
Copy link
Contributor

Suremaker commented Oct 9, 2017

The same is happening in our project where we use SetUpFixture and [assembly: Parallelizable(ParallelScope.Fixtures)].

On nunit 3.7.1 it works fine. When I tried to update to 3.8.1 tests hangs in Resharper as well as in the console.

@CharliePoole CharliePoole self-assigned this Oct 9, 2017
@jnm2
Copy link
Contributor

jnm2 commented Oct 11, 2017

@Suremaker were you one of the people that was running into the intermittent console runner disappearing and causing a socket exception? I wonder if there is crossover here.

@Suremaker
Copy link
Contributor

@jnm2 I am currently travelling and for 2 weeks I won't be able to check it. Unfortunately I did not check the details when I observed the issue, however it was it was always hanging on each run, after around 12th-16th finished test (so not at the beginning of the run, but always after a specified, constant amount of the run tests)...

@jnm2
Copy link
Contributor

jnm2 commented Oct 12, 2017

Okay, don't worry about it.

@CharliePoole
Copy link
Contributor

It turns out that restoring the queues was starting all queues, so that parallel and non parallel tests were running at the same time. Fixed in #2476.

@qrdemole
Copy link

qrdemole commented Nov 1, 2017

Anybody is able to tell when we could expect a new version release containing this fix?

@CharliePoole
Copy link
Contributor

@rprouse will have to speak to the schedule. But in any case, it would be great if you could try it out to make sure your case was covered completely. The latest dev build on our myget feed should have the change.

@DavidZidar
Copy link
Author

Hi, I just tried build 3.9.0-dev-04639 and while it's working even better still it still is failing every once in a while. The console runner also locked up once.

After checking the trace logs it still seems to be running some tests in parallell even though the fixtures in question are marked with Parallelizable(ParallelScope.None).

@CharliePoole
Copy link
Contributor

Does the incorrect parallel execution start immediately after a non-parallel fixture completes? That's when we restore the queues after having created new isolated queues for the non-parallel fixture.

An excerpt from your log with annotations about how each test is marked would be helpful here.

@rprouse rprouse modified the milestones: 3.8.2, 3.9 Nov 3, 2017
@DavidZidar
Copy link
Author

I'm getting a few hundred lines of startup info, and among them..

16:53:32.469 Debug [22] Dispatcher: Using NonParallel strategy for NonparallelFixture1
...snip...
16:53:32.469 Debug [22] Dispatcher: Using NonParallel strategy for NonparallelFixture2

.. which is correct so far.

The it looks like it begins by running one non parallel test fixture but then starts running parallel tests.

16:53:32.492 Info  [22] TestWorker: Worker#STA_NP executing NonparallelFixture1
16:53:32.492 Info  [22] Dispatcher: Saving Queue State for NonparallelFixture1
16:53:32.492 Debug [22] WorkItemQueue: NonParallelQueue.1 pausing
16:53:32.492 Info  [22] WorkItemQueue: NonParallelQueue.2 starting
16:53:32.492 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture1_Test1
16:53:32.849 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture1_Test2
16:53:32.878 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture1_Test3
16:53:32.879 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture1_Test4
16:53:32.881 Debug [22] Dispatcher: Using NonParallel strategy for NonparallelFixture1 OneTimeTearDown
16:53:32.881 Info  [22] TestWorker: Worker#STA_NP executing NonparallelFixture1 OneTimeTearDown
16:53:32.883 Info  [22] WorkShift: NonParallel shift ending
16:53:32.883 Debug [22] WorkItemQueue: NonParallelQueue.2 pausing
16:53:32.885 Info  [22] Dispatcher: Restoring Queue State
16:53:32.885 Debug [22] WorkItemQueue: ParallelQueue.2 pausing
16:53:32.886 Info  [22] WorkItemQueue: ParallelQueue.1 starting
16:53:32.886 Debug [22] WorkItemQueue: ParallelSTAQueue.2 pausing
16:53:32.886 Info  [22] WorkItemQueue: ParallelSTAQueue.1 starting
16:53:32.886 Info  [15] TestWorker: Worker#7 executing ParallelFixture1
16:53:32.886 Info  [11] TestWorker: Worker#3 executing ParallelFixture2

Then later on it looks like this..

16:53:32.886 Info  [22] TestWorker: Worker#STA_NP executing NonparallelFixture2
16:53:32.886 Info  [22] Dispatcher: Saving Queue State for NonparallelFixture2
16:53:32.886 Debug [22] WorkItemQueue: ParallelQueue.1 pausing
16:53:32.886 Info  [22] WorkItemQueue: ParallelQueue.2 starting
16:53:32.886 Debug [22] WorkItemQueue: ParallelSTAQueue.1 pausing
16:53:32.886 Info  [22] WorkItemQueue: ParallelSTAQueue.2 starting
16:53:32.886 Debug [22] WorkItemQueue: NonParallelQueue.1 pausing
16:53:32.886 Info  [22] WorkItemQueue: NonParallelQueue.2 starting
16:53:32.886 Debug [22] WorkItemQueue: NonParallelSTAQueue.1 pausing
16:53:32.886 Info  [22] WorkItemQueue: NonParallelSTAQueue.2 starting
16:53:32.886 Debug [20] Dispatcher: Using Direct strategy for OtherParallelTest1
16:53:32.886 Debug [18] Dispatcher: Using Direct strategy for OtherParallelTest2
16:53:32.886 Debug [10] Dispatcher: Using Direct strategy for OtherParallelTest3
...snip...
16:53:32.923 Debug [16] Dispatcher: Using Parallel strategy for ParallelFixture3 OneTimeTearDown
16:53:32.923 Info  [16] TestWorker: Worker#8 executing ParallelFixture3 OneTimeTearDown
16:53:32.926 Debug [18] Dispatcher: Using Parallel strategy for ParallelFixture4 OneTimeTearDown
16:53:32.926 Info  [16] TestWorker: Worker#8 executing ParallelFixture4 OneTimeTearDown
16:53:32.926 Debug [16] Dispatcher: Using Direct strategy for OtherParallelTest3 OneTimeTearDown
16:53:32.993 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture2_Test1
16:53:33.018 Debug [15] Dispatcher: Using Direct strategy for OtherParallelTest18
16:53:33.019 Debug [15] Dispatcher: Using Direct strategy for OtherParallelTest19
...snip...
16:53:33.051 Debug [12] Dispatcher: Using Direct strategy for OtherParallelTest35
16:53:33.053 Debug [12] Dispatcher: Using Parallel strategy for ParallelFixture5 OneTimeTearDown
16:53:33.053 Info  [16] TestWorker: Worker#8 executing ParallelFixture5 OneTimeTearDown
16:53:33.056 Debug [15] Dispatcher: Using Parallel strategy for ParallelFixture6 OneTimeTearDown
16:53:33.056 Info  [16] TestWorker: Worker#8 executing ParallelFixture6 OneTimeTearDown
16:53:33.242 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture2_Test2
16:53:33.295 Debug [22] Dispatcher: Using Direct strategy for NonparallelFixture2_Test3

.. and so on.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
is:bug pri:critical Use this to indicate a hotfix may be necessary
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants