Search in sources :

Example 6 with PingFrame

use of org.eclipse.jetty.http2.frames.PingFrame in project jetty.project by eclipse.

the class PingGenerateParseTest method testGenerateParseOneByteAtATime.

@Test
public void testGenerateParseOneByteAtATime() throws Exception {
    PingGenerator generator = new PingGenerator(new HeaderGenerator());
    final List<PingFrame> frames = new ArrayList<>();
    Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() {

        @Override
        public void onPing(PingFrame frame) {
            frames.add(frame);
        }
    }, 4096, 8192);
    byte[] payload = new byte[8];
    new Random().nextBytes(payload);
    // Iterate a few times to be sure generator and parser are properly reset.
    for (int i = 0; i < 2; ++i) {
        ByteBufferPool.Lease lease = new ByteBufferPool.Lease(byteBufferPool);
        generator.generatePing(lease, payload, true);
        frames.clear();
        for (ByteBuffer buffer : lease.getByteBuffers()) {
            while (buffer.hasRemaining()) {
                parser.parse(ByteBuffer.wrap(new byte[] { buffer.get() }));
            }
        }
        Assert.assertEquals(1, frames.size());
        PingFrame frame = frames.get(0);
        Assert.assertArrayEquals(payload, frame.getPayload());
        Assert.assertTrue(frame.isReply());
    }
}
Also used : MappedByteBufferPool(org.eclipse.jetty.io.MappedByteBufferPool) ByteBufferPool(org.eclipse.jetty.io.ByteBufferPool) ArrayList(java.util.ArrayList) PingGenerator(org.eclipse.jetty.http2.generator.PingGenerator) ByteBuffer(java.nio.ByteBuffer) Parser(org.eclipse.jetty.http2.parser.Parser) Random(java.util.Random) HeaderGenerator(org.eclipse.jetty.http2.generator.HeaderGenerator) Test(org.junit.Test)

Example 7 with PingFrame

use of org.eclipse.jetty.http2.frames.PingFrame in project jetty.project by eclipse.

the class PingGenerateParseTest method testGenerateParse.

@Test
public void testGenerateParse() throws Exception {
    PingGenerator generator = new PingGenerator(new HeaderGenerator());
    final List<PingFrame> frames = new ArrayList<>();
    Parser parser = new Parser(byteBufferPool, new Parser.Listener.Adapter() {

        @Override
        public void onPing(PingFrame frame) {
            frames.add(frame);
        }
    }, 4096, 8192);
    byte[] payload = new byte[8];
    new Random().nextBytes(payload);
    // Iterate a few times to be sure generator and parser are properly reset.
    for (int i = 0; i < 2; ++i) {
        ByteBufferPool.Lease lease = new ByteBufferPool.Lease(byteBufferPool);
        generator.generatePing(lease, payload, true);
        frames.clear();
        for (ByteBuffer buffer : lease.getByteBuffers()) {
            while (buffer.hasRemaining()) {
                parser.parse(buffer);
            }
        }
    }
    Assert.assertEquals(1, frames.size());
    PingFrame frame = frames.get(0);
    Assert.assertArrayEquals(payload, frame.getPayload());
    Assert.assertTrue(frame.isReply());
}
Also used : MappedByteBufferPool(org.eclipse.jetty.io.MappedByteBufferPool) ByteBufferPool(org.eclipse.jetty.io.ByteBufferPool) ArrayList(java.util.ArrayList) PingGenerator(org.eclipse.jetty.http2.generator.PingGenerator) ByteBuffer(java.nio.ByteBuffer) Parser(org.eclipse.jetty.http2.parser.Parser) Random(java.util.Random) HeaderGenerator(org.eclipse.jetty.http2.generator.HeaderGenerator) Test(org.junit.Test)

Example 8 with PingFrame

use of org.eclipse.jetty.http2.frames.PingFrame in project jetty.project by eclipse.

the class PingTest method testPing.

@Test
public void testPing() throws Exception {
    start(new ServerSessionListener.Adapter());
    final byte[] payload = new byte[8];
    new Random().nextBytes(payload);
    final CountDownLatch latch = new CountDownLatch(1);
    Session session = newClient(new Session.Listener.Adapter() {

        @Override
        public void onPing(Session session, PingFrame frame) {
            Assert.assertTrue(frame.isReply());
            Assert.assertArrayEquals(payload, frame.getPayload());
            latch.countDown();
        }
    });
    PingFrame frame = new PingFrame(payload, false);
    session.ping(frame, Callback.NOOP);
    Assert.assertTrue(latch.await(5, TimeUnit.SECONDS));
}
Also used : ServerSessionListener(org.eclipse.jetty.http2.api.server.ServerSessionListener) Random(java.util.Random) PingFrame(org.eclipse.jetty.http2.frames.PingFrame) CountDownLatch(java.util.concurrent.CountDownLatch) ServerSessionListener(org.eclipse.jetty.http2.api.server.ServerSessionListener) Session(org.eclipse.jetty.http2.api.Session) Test(org.junit.Test)

Example 9 with PingFrame

use of org.eclipse.jetty.http2.frames.PingFrame in project jetty.project by eclipse.

the class PingBodyParser method onPing.

private boolean onPing(byte[] payload) {
    PingFrame frame = new PingFrame(payload, hasFlag(Flags.ACK));
    reset();
    notifyPing(frame);
    return true;
}
Also used : PingFrame(org.eclipse.jetty.http2.frames.PingFrame)

Aggregations

Test (org.junit.Test)7 ByteBuffer (java.nio.ByteBuffer)6 PingFrame (org.eclipse.jetty.http2.frames.PingFrame)6 Parser (org.eclipse.jetty.http2.parser.Parser)6 ByteBufferPool (org.eclipse.jetty.io.ByteBufferPool)6 ServerSessionListener (org.eclipse.jetty.http2.api.server.ServerSessionListener)4 MappedByteBufferPool (org.eclipse.jetty.io.MappedByteBufferPool)4 ArrayList (java.util.ArrayList)3 HashMap (java.util.HashMap)3 Random (java.util.Random)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 PrefaceFrame (org.eclipse.jetty.http2.frames.PrefaceFrame)3 SettingsFrame (org.eclipse.jetty.http2.frames.SettingsFrame)3 HeaderGenerator (org.eclipse.jetty.http2.generator.HeaderGenerator)3 PingGenerator (org.eclipse.jetty.http2.generator.PingGenerator)3 OutputStream (java.io.OutputStream)2 Socket (java.net.Socket)2 HttpServlet (javax.servlet.http.HttpServlet)2 Session (org.eclipse.jetty.http2.api.Session)2 GoAwayFrame (org.eclipse.jetty.http2.frames.GoAwayFrame)2