use of io.aklivity.zilla.runtime.engine.test.annotation.Configuration in project zilla by aklivity.
the class ClientResetAndAbortIT method shouldShutdownOutputAndInputWhenClientSendsResetAndEnd.
@Test
@Configuration("client.host.json")
@Specification({ "${client}/client.sent.reset.and.end/client" })
@BMRule(name = "shutdownInput", targetClass = "^java.nio.channels.SocketChannel", targetMethod = "shutdownInput()", helper = "io.aklivity.zilla.runtime.binding.tcp.internal.SocketChannelHelper$CountDownHelper", condition = "callerEquals(\"TcpClientFactory$TcpClient.onAppReset\", true, 2)", action = "countDown()")
public void shouldShutdownOutputAndInputWhenClientSendsResetAndEnd() throws Exception {
CountDownLatch shutdownInputCalled = new CountDownLatch(1);
CountDownHelper.initialize(shutdownInputCalled);
try (ServerSocketChannel server = ServerSocketChannel.open()) {
server.setOption(SO_REUSEADDR, true);
server.bind(new InetSocketAddress("127.0.0.1", 8080));
k3po.start();
try (SocketChannel channel = server.accept()) {
ByteBuffer buf = ByteBuffer.allocate(20);
int len = channel.read(buf);
assertEquals(-1, len);
shutdownInputCalled.await();
} finally {
k3po.finish();
}
}
}
use of io.aklivity.zilla.runtime.engine.test.annotation.Configuration in project zilla by aklivity.
the class ServerPartialWriteLimitsIT method shouldWriteWhenMoreDataArrivesWhileAwaitingSocketWritableWithoutOverflowingSlot.
@Test
@Configuration("server.json")
@Specification({ "${server}/server.sent.data.multiple.frames/server", "${client}/server.sent.data.multiple.frames/client" })
public void shouldWriteWhenMoreDataArrivesWhileAwaitingSocketWritableWithoutOverflowingSlot() throws Exception {
AtomicInteger dataFramesReceived = new AtomicInteger();
OnDataHelper.fragmentWrites(generate(() -> dataFramesReceived.incrementAndGet() == 1 ? 5 : dataFramesReceived.get() == 2 ? 6 : ALL));
HandleWriteHelper.fragmentWrites(generate(() -> dataFramesReceived.get() >= 2 ? ALL : 0));
k3po.finish();
}
use of io.aklivity.zilla.runtime.engine.test.annotation.Configuration in project zilla by aklivity.
the class ServerResetAndAbortIT method shouldShutdownInputWhenServerSendsReset.
@Test
@Configuration("server.json")
@Specification({ "${server}/server.sent.reset/server" })
@BMRule(name = "shutdownInput", targetClass = "^java.nio.channels.SocketChannel", targetMethod = "shutdownInput()", helper = "io.aklivity.zilla.runtime.binding.tcp.internal.SocketChannelHelper$CountDownHelper", condition = "callerEquals(\"TcpServerFactory$TcpServer.onAppReset\", true, 2)", action = "countDown()")
public void shouldShutdownInputWhenServerSendsReset() throws Exception {
CountDownLatch shutdownInputCalled = new CountDownLatch(1);
CountDownHelper.initialize(shutdownInputCalled);
k3po.start();
try (SocketChannel channel = SocketChannel.open()) {
channel.connect(new InetSocketAddress("127.0.0.1", 8080));
channel.configureBlocking(false);
channel.write(ByteBuffer.wrap("some data".getBytes()));
try {
k3po.awaitBarrier("READ_ABORTED");
shutdownInputCalled.await();
} catch (IOException e) {
throw e;
}
} finally {
k3po.finish();
}
}
use of io.aklivity.zilla.runtime.engine.test.annotation.Configuration in project zilla by aklivity.
the class ServerResetAndAbortIT method shouldShutdownOutputAndInputWhenServerSendsAbortAndReset.
@Test
@Configuration("server.json")
@Specification({ "${server}/server.sent.abort.and.reset/server" })
@BMRule(name = "shutdownInput", targetClass = "^java.nio.channels.SocketChannel", targetMethod = "shutdownInput()", helper = "io.aklivity.zilla.runtime.binding.tcp.internal.SocketChannelHelper$CountDownHelper", condition = "callerEquals(\"TcpServerFactory$TcpServer.onAppReset\", true, 2)", action = "countDown()")
public void shouldShutdownOutputAndInputWhenServerSendsAbortAndReset() throws Exception {
CountDownLatch shutdownInputCalled = new CountDownLatch(1);
CountDownHelper.initialize(shutdownInputCalled);
k3po.start();
try (SocketChannel channel = SocketChannel.open()) {
channel.connect(new InetSocketAddress("127.0.0.1", 8080));
ByteBuffer buf = ByteBuffer.allocate(20);
int len = channel.read(buf);
assertEquals(-1, len);
shutdownInputCalled.await();
} finally {
k3po.finish();
}
}
use of io.aklivity.zilla.runtime.engine.test.annotation.Configuration in project zilla by aklivity.
the class ServerStatsIT method shouldSendAndReceiveData.
@Test
@Configuration("server.json")
@Specification({ "${server}/client.and.server.sent.data.multiple.frames/server", "${client}/client.and.server.sent.data.multiple.frames/client" })
public void shouldSendAndReceiveData() throws Exception {
k3po.finish();
EngineStats stats = engine.stats("test", "net0");
assertThat(stats.initialOpens(), equalTo(1L));
assertThat(stats.replyOpens(), equalTo(1L));
assertThat(stats.initialBytes(), equalTo(26L));
assertThat(stats.replyBytes(), equalTo(26L));
}
Aggregations