Fixed unit test race
Test was assuming that receiving completed response on client always happened before server processing had completed. Added a spin test.
This commit is contained in:
parent
11d3448e28
commit
8068aeead9
|
@ -22,7 +22,9 @@ import static org.junit.Assert.assertEquals;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
|
import java.util.concurrent.TimeUnit;
|
||||||
import java.util.concurrent.atomic.AtomicInteger;
|
import java.util.concurrent.atomic.AtomicInteger;
|
||||||
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
import javax.servlet.AsyncContext;
|
import javax.servlet.AsyncContext;
|
||||||
import javax.servlet.AsyncEvent;
|
import javax.servlet.AsyncEvent;
|
||||||
|
@ -84,8 +86,8 @@ public class LocalAsyncContextTest
|
||||||
_handler.setCompleteAfter(-1);
|
_handler.setCompleteAfter(-1);
|
||||||
response=process(null);
|
response=process(null);
|
||||||
check(response,"TIMEOUT");
|
check(response,"TIMEOUT");
|
||||||
assertEquals(1,__completed.get());
|
spinAssertEquals(1,__completed::get);
|
||||||
assertEquals(1,__completed1.get());
|
spinAssertEquals(1,__completed1::get);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -218,8 +220,8 @@ public class LocalAsyncContextTest
|
||||||
_handler.setCompleteAfter2(-1);
|
_handler.setCompleteAfter2(-1);
|
||||||
response=process(null);
|
response=process(null);
|
||||||
check(response,"STARTASYNC","DISPATCHED","startasync","STARTASYNC","DISPATCHED");
|
check(response,"STARTASYNC","DISPATCHED","startasync","STARTASYNC","DISPATCHED");
|
||||||
assertEquals(1,__completed.get());
|
spinAssertEquals(1,__completed::get);
|
||||||
assertEquals(0,__completed1.get());
|
spinAssertEquals(0,__completed1::get);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -596,4 +598,33 @@ public class LocalAsyncContextTest
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static <T> void spinAssertEquals(T expected, Supplier<T> actualSupplier)
|
||||||
|
{
|
||||||
|
spinAssertEquals(expected,actualSupplier,10,TimeUnit.SECONDS);
|
||||||
|
}
|
||||||
|
|
||||||
|
static <T> void spinAssertEquals(T expected, Supplier<T> actualSupplier, long waitFor, TimeUnit units)
|
||||||
|
{
|
||||||
|
long now = System.nanoTime();
|
||||||
|
long end = now+units.toNanos(waitFor);
|
||||||
|
T actual=null;
|
||||||
|
while(now < end)
|
||||||
|
{
|
||||||
|
actual=actualSupplier.get();
|
||||||
|
if (actual==null && expected==null ||
|
||||||
|
actual!=null && actual.equals(expected))
|
||||||
|
break;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Thread.sleep(10);
|
||||||
|
}
|
||||||
|
catch (InterruptedException e)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
now = System.nanoTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
assertEquals(expected,actual);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,10 +49,8 @@ import org.eclipse.jetty.server.handler.AbstractHandler;
|
||||||
import org.eclipse.jetty.util.Promise;
|
import org.eclipse.jetty.util.Promise;
|
||||||
import org.eclipse.jetty.util.thread.QueuedThreadPool;
|
import org.eclipse.jetty.util.thread.QueuedThreadPool;
|
||||||
import org.junit.Assert;
|
import org.junit.Assert;
|
||||||
import org.junit.Ignore;
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@Ignore
|
|
||||||
public class HttpChannelAssociationTest extends AbstractTest
|
public class HttpChannelAssociationTest extends AbstractTest
|
||||||
{
|
{
|
||||||
public HttpChannelAssociationTest(Transport transport)
|
public HttpChannelAssociationTest(Transport transport)
|
||||||
|
|
Loading…
Reference in New Issue