Пример #1
0
  @Test
  public void testParse128ByteBinaryCase1_2_5() {
    int length = 128;

    ByteBuffer expected = ByteBuffer.allocate(length + 5);

    expected.put(new byte[] {(byte) 0x82});
    byte b = 0x00; // no masking
    b |= 0x7E;
    expected.put(b);
    expected.putShort((short) length);

    for (int i = 0; i < length; ++i) {
      expected.put("*".getBytes());
    }

    expected.flip();

    Parser parser = new UnitParser(policy);
    IncomingFramesCapture capture = new IncomingFramesCapture();
    parser.setIncomingFramesHandler(capture);
    parser.parse(expected);

    capture.assertNoErrors();
    capture.assertHasFrame(OpCode.BINARY, 1);

    Frame pActual = capture.getFrames().get(0);
    Assert.assertThat("BinaryFrame.payloadLength", pActual.getPayloadLength(), is(length));
    // Assert.assertEquals("BinaryFrame.payload",length,pActual.getPayloadData().length);
  }
Пример #2
0
  @Test
  public void testParse65536ByteBinaryCase1_2_7() {
    int length = 65536;

    ByteBuffer expected = ByteBuffer.allocate(length + 11);

    expected.put(new byte[] {(byte) 0x82});
    byte b = 0x00; // no masking
    b |= 0x7F;
    expected.put(b);
    expected.put(new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00});

    for (int i = 0; i < length; ++i) {
      expected.put("*".getBytes());
    }

    expected.flip();

    WebSocketPolicy policy = new WebSocketPolicy(WebSocketBehavior.SERVER);
    policy.setMaxMessageSize(length);
    Parser parser = new UnitParser(policy);
    IncomingFramesCapture capture = new IncomingFramesCapture();
    parser.setIncomingFramesHandler(capture);
    parser.parse(expected);

    capture.assertNoErrors();
    capture.assertHasFrame(OpCode.BINARY, 1);

    Frame pActual = capture.getFrames().get(0);
    Assert.assertThat("BinaryFrame.payloadLength", pActual.getPayloadLength(), is(length));
    // Assert.assertEquals("BinaryFrame.payload",length,pActual.getPayloadData().length);
  }
  private void assertIncoming(byte[] raw, String... expectedTextDatas) {
    WebSocketPolicy policy = WebSocketPolicy.newClientPolicy();

    DeflateFrameExtension ext = new DeflateFrameExtension();
    ext.setBufferPool(bufferPool);
    ext.setPolicy(policy);

    ExtensionConfig config = ExtensionConfig.parse("deflate-frame");
    ext.setConfig(config);

    // Setup capture of incoming frames
    IncomingFramesCapture capture = new IncomingFramesCapture();

    // Wire up stack
    ext.setNextIncomingFrames(capture);

    Parser parser = new UnitParser(policy);
    parser.configureFromExtensions(Collections.singletonList(ext));
    parser.setIncomingFramesHandler(ext);

    parser.parse(ByteBuffer.wrap(raw));

    int len = expectedTextDatas.length;
    capture.assertFrameCount(len);
    capture.assertHasFrame(OpCode.TEXT, len);

    int i = 0;
    for (WebSocketFrame actual : capture.getFrames()) {
      String prefix = "Frame[" + i + "]";
      Assert.assertThat(prefix + ".opcode", actual.getOpCode(), is(OpCode.TEXT));
      Assert.assertThat(prefix + ".fin", actual.isFin(), is(true));
      Assert.assertThat(
          prefix + ".rsv1", actual.isRsv1(), is(false)); // RSV1 should be unset at this point
      Assert.assertThat(prefix + ".rsv2", actual.isRsv2(), is(false));
      Assert.assertThat(prefix + ".rsv3", actual.isRsv3(), is(false));

      ByteBuffer expected = BufferUtil.toBuffer(expectedTextDatas[i], StandardCharsets.UTF_8);
      Assert.assertThat(
          prefix + ".payloadLength", actual.getPayloadLength(), is(expected.remaining()));
      ByteBufferAssert.assertEquals(prefix + ".payload", expected, actual.getPayload().slice());
      i++;
    }
  }
Пример #4
0
  @Test
  public void testParseEmptyBinaryCase1_2_1() {

    ByteBuffer expected = ByteBuffer.allocate(5);

    expected.put(new byte[] {(byte) 0x82, (byte) 0x00});

    expected.flip();

    Parser parser = new UnitParser(policy);
    IncomingFramesCapture capture = new IncomingFramesCapture();
    parser.setIncomingFramesHandler(capture);
    parser.parse(expected);

    capture.assertNoErrors();
    capture.assertHasFrame(OpCode.BINARY, 1);

    Frame pActual = capture.getFrames().get(0);
    Assert.assertThat("BinaryFrame.payloadLength", pActual.getPayloadLength(), is(0));
    // Assert.assertNull("BinaryFrame.payload",pActual.getPayloadData());
  }