It gets suspended after calling Starthere but before calling Get.
The prognosticator thread executes FlowPrognosticationhere, and consumes the WillOnce expectation here. This results in a proper prognostication, but that one is not picked up because the test thread is still suspended.
The prognosticator thread re-executes FlowPrognostication, but it now consumes the WillRepeatedly expectation here.
The test thread finally wakes up and calls Gethere. It now picks a prognostication to which nothing was appended, and is unable to make progress. It loops forever.
The scenario is this:
RefreshPrediction
here.Start
here but before callingGet
.FlowPrognostication
here, and consumes theWillOnce
expectation here. This results in a proper prognostication, but that one is not picked up because the test thread is still suspended.FlowPrognostication
, but it now consumes theWillRepeatedly
expectation here.Get
here. It now picks a prognostication to which nothing was appended, and is unable to make progress. It loops forever.Fix #4010.