提交 da52a753 编写于 作者: V Vlad Ilyushchenko

NET: made unit test more robust

上级 e9aac75d
...@@ -33,11 +33,12 @@ import java.util.concurrent.BrokenBarrierException; ...@@ -33,11 +33,12 @@ import java.util.concurrent.BrokenBarrierException;
import java.util.concurrent.CountDownLatch; import java.util.concurrent.CountDownLatch;
import java.util.concurrent.CyclicBarrier; import java.util.concurrent.CyclicBarrier;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicLong;
public class NetTest { public class NetTest {
@Test @Test
public void testNoLinger() throws InterruptedException { public void testNoLinger() throws InterruptedException, BrokenBarrierException {
bindAcceptConnectClose(); bindAcceptConnectClose();
bindAcceptConnectClose(); bindAcceptConnectClose();
} }
...@@ -84,7 +85,7 @@ public class NetTest { ...@@ -84,7 +85,7 @@ public class NetTest {
} }
} }
private void bindAcceptConnectClose() throws InterruptedException { private void bindAcceptConnectClose() throws InterruptedException, BrokenBarrierException {
int port = 9992; int port = 9992;
long fd = Net.socketTcp(true); long fd = Net.socketTcp(true);
Assert.assertTrue(fd > 0); Assert.assertTrue(fd > 0);
...@@ -95,16 +96,27 @@ public class NetTest { ...@@ -95,16 +96,27 @@ public class NetTest {
StringSink sink = new StringSink(); StringSink sink = new StringSink();
CountDownLatch haltLatch = new CountDownLatch(1); CountDownLatch haltLatch = new CountDownLatch(1);
CyclicBarrier barrier = new CyclicBarrier(2);
AtomicBoolean threadFailed = new AtomicBoolean(false);
new Thread(() -> { new Thread(() -> {
long clientfd = Net.accept(fd); try {
Net.appendIP4(sink, Net.getPeerIP(clientfd)); barrier.await();
Net.configureNoLinger(clientfd); long clientfd = Net.accept(fd);
Net.close(clientfd); Net.appendIP4(sink, Net.getPeerIP(clientfd));
haltLatch.countDown(); Net.configureNoLinger(clientfd);
Net.close(clientfd);
haltLatch.countDown();
} catch (Exception e) {
threadFailed.set(true);
e.printStackTrace();
} finally {
haltLatch.countDown();
}
}).start(); }).start();
barrier.await();
long clientFd = Net.socketTcp(true); long clientFd = Net.socketTcp(true);
long sockAddr = Net.sockaddr("127.0.0.1", port); long sockAddr = Net.sockaddr("127.0.0.1", port);
Assert.assertEquals(0, Net.connect(clientFd, sockAddr)); Assert.assertEquals(0, Net.connect(clientFd, sockAddr));
...@@ -113,6 +125,7 @@ public class NetTest { ...@@ -113,6 +125,7 @@ public class NetTest {
Net.close(fd); Net.close(fd);
TestUtils.assertEquals("127.0.0.1", sink); TestUtils.assertEquals("127.0.0.1", sink);
Assert.assertFalse(threadFailed.get());
} }
@Test @Test
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册