For LLImageManagerTests, make tests execute under synchronous fire and forget conditions.

I generally prefer this approach for regression tests because of the complexity of accounting for different threading conditions.
TeleportWork
Justin Clark-Casey (justincc) 2013-08-05 23:15:30 +01:00
parent 139dcf1246
commit f9dc5815c4
1 changed files with 12 additions and 8 deletions

View File

@ -54,6 +54,9 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
[TestFixtureSetUp]
public void FixtureInit()
{
// Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread.
Util.FireAndForgetMethod = FireAndForgetMethod.None;
using (
Stream resource
= GetType().Assembly.GetManifestResourceStream(
@ -73,6 +76,14 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
}
}
[TestFixtureTearDown]
public void TearDown()
{
// We must set this back afterwards, otherwise later tests will fail since they're expecting multiple
// threads. Possibly, later tests should be rewritten not to worry about such things.
Util.FireAndForgetMethod = Util.DefaultFireAndForgetMethod;
}
[SetUp]
public override void SetUp()
{
@ -106,14 +117,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
args.requestSequence = 1;
llim.EnqueueReq(args);
// We now have to wait and hit the processing wheel, because the decoding is async
int i = 10;
while (i-- > 0)
{
llim.ProcessImageQueue(20);
Thread.Sleep(100);
}
llim.ProcessImageQueue(20);
Assert.That(tc.SentImageDataPackets.Count, Is.EqualTo(1));
}