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] [TestFixtureSetUp]
public void FixtureInit() public void FixtureInit()
{ {
// Don't allow tests to be bamboozled by asynchronous events. Execute everything on the same thread.
Util.FireAndForgetMethod = FireAndForgetMethod.None;
using ( using (
Stream resource Stream resource
= GetType().Assembly.GetManifestResourceStream( = 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] [SetUp]
public override void SetUp() public override void SetUp()
{ {
@ -106,14 +117,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP.Tests
args.requestSequence = 1; args.requestSequence = 1;
llim.EnqueueReq(args); llim.EnqueueReq(args);
llim.ProcessImageQueue(20);
// 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);
}
Assert.That(tc.SentImageDataPackets.Count, Is.EqualTo(1)); Assert.That(tc.SentImageDataPackets.Count, Is.EqualTo(1));
} }