Fleshing out more AB case 4 tests
This commit is contained in:
parent
a97fe106f9
commit
ab89924261
|
@ -162,6 +162,7 @@ public class Fuzzer
|
||||||
{
|
{
|
||||||
for (WebSocketFrame f : send)
|
for (WebSocketFrame f : send)
|
||||||
{
|
{
|
||||||
|
f.setMask(MASK); // make sure we have mask set
|
||||||
// Using lax generator, generate and send
|
// Using lax generator, generate and send
|
||||||
client.writeRaw(generator.generate(f));
|
client.writeRaw(generator.generate(f));
|
||||||
client.flush();
|
client.flush();
|
||||||
|
|
|
@ -1,10 +1,8 @@
|
||||||
package org.eclipse.jetty.websocket.server.ab;
|
package org.eclipse.jetty.websocket.server.ab;
|
||||||
|
|
||||||
import java.nio.ByteBuffer;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.eclipse.jetty.util.BufferUtil;
|
|
||||||
import org.eclipse.jetty.util.StringUtil;
|
import org.eclipse.jetty.util.StringUtil;
|
||||||
import org.eclipse.jetty.websocket.api.StatusCode;
|
import org.eclipse.jetty.websocket.api.StatusCode;
|
||||||
import org.eclipse.jetty.websocket.protocol.CloseInfo;
|
import org.eclipse.jetty.websocket.protocol.CloseInfo;
|
||||||
|
@ -19,17 +17,9 @@ public class TestABCase4 extends AbstractABCase
|
||||||
@Test
|
@Test
|
||||||
public void testCase4_1_1() throws Exception
|
public void testCase4_1_1() throws Exception
|
||||||
{
|
{
|
||||||
ByteBuffer buf = ByteBuffer.allocate(32);
|
List<WebSocketFrame> send = new ArrayList<>();
|
||||||
BufferUtil.clearToFill(buf);
|
send.add(new WebSocketFrame((byte)3)); // intentionally bad
|
||||||
|
|
||||||
// Construct bad frame by hand
|
|
||||||
byte opcode = 3;
|
|
||||||
buf.put((byte)(0x00 | FIN | opcode)); // bad
|
|
||||||
putPayloadLength(buf,0);
|
|
||||||
putMask(buf);
|
|
||||||
BufferUtil.flipToFlush(buf,0);
|
|
||||||
|
|
||||||
// Expectations
|
|
||||||
List<WebSocketFrame> expect = new ArrayList<>();
|
List<WebSocketFrame> expect = new ArrayList<>();
|
||||||
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
||||||
|
|
||||||
|
@ -38,7 +28,7 @@ public class TestABCase4 extends AbstractABCase
|
||||||
{
|
{
|
||||||
fuzzer.connect();
|
fuzzer.connect();
|
||||||
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
||||||
fuzzer.send(buf);
|
fuzzer.send(send);
|
||||||
fuzzer.expect(expect);
|
fuzzer.expect(expect);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
@ -54,18 +44,10 @@ public class TestABCase4 extends AbstractABCase
|
||||||
public void testCase4_1_2() throws Exception
|
public void testCase4_1_2() throws Exception
|
||||||
{
|
{
|
||||||
byte payload[] = StringUtil.getUtf8Bytes("reserved payload");
|
byte payload[] = StringUtil.getUtf8Bytes("reserved payload");
|
||||||
ByteBuffer buf = ByteBuffer.allocate(32);
|
|
||||||
BufferUtil.clearToFill(buf);
|
|
||||||
|
|
||||||
// Construct bad frame by hand
|
List<WebSocketFrame> send = new ArrayList<>();
|
||||||
byte opcode = 4;
|
send.add(new WebSocketFrame((byte)4).setPayload(payload)); // intentionally bad
|
||||||
buf.put((byte)(0x00 | FIN | opcode)); // bad
|
|
||||||
putPayloadLength(buf,payload.length);
|
|
||||||
putMask(buf);
|
|
||||||
buf.put(masked(payload));
|
|
||||||
BufferUtil.flipToFlush(buf,0);
|
|
||||||
|
|
||||||
// Expectations
|
|
||||||
List<WebSocketFrame> expect = new ArrayList<>();
|
List<WebSocketFrame> expect = new ArrayList<>();
|
||||||
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
||||||
|
|
||||||
|
@ -74,7 +56,94 @@ public class TestABCase4 extends AbstractABCase
|
||||||
{
|
{
|
||||||
fuzzer.connect();
|
fuzzer.connect();
|
||||||
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
||||||
fuzzer.send(buf);
|
fuzzer.send(send);
|
||||||
|
fuzzer.expect(expect);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
fuzzer.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send small text, then frame with opcode 5 (reserved), then ping
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testCase4_1_3() throws Exception
|
||||||
|
{
|
||||||
|
List<WebSocketFrame> send = new ArrayList<>();
|
||||||
|
send.add(WebSocketFrame.text("hello"));
|
||||||
|
send.add(new WebSocketFrame((byte)5)); // intentionally bad
|
||||||
|
send.add(WebSocketFrame.ping());
|
||||||
|
|
||||||
|
List<WebSocketFrame> expect = new ArrayList<>();
|
||||||
|
expect.add(WebSocketFrame.text("hello")); // echo
|
||||||
|
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
||||||
|
|
||||||
|
Fuzzer fuzzer = new Fuzzer(this);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fuzzer.connect();
|
||||||
|
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
||||||
|
fuzzer.send(send);
|
||||||
|
fuzzer.expect(expect);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
fuzzer.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send small text, then frame with opcode 6 (reserved) w/payload, then ping
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testCase4_1_4() throws Exception
|
||||||
|
{
|
||||||
|
List<WebSocketFrame> send = new ArrayList<>();
|
||||||
|
send.add(WebSocketFrame.text("hello"));
|
||||||
|
send.add(new WebSocketFrame((byte)6).setPayload("bad")); // intentionally bad
|
||||||
|
send.add(WebSocketFrame.ping());
|
||||||
|
|
||||||
|
List<WebSocketFrame> expect = new ArrayList<>();
|
||||||
|
expect.add(WebSocketFrame.text("hello")); // echo
|
||||||
|
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
||||||
|
|
||||||
|
Fuzzer fuzzer = new Fuzzer(this);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fuzzer.connect();
|
||||||
|
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
||||||
|
fuzzer.send(send);
|
||||||
|
fuzzer.expect(expect);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
fuzzer.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Send small text, then frame with opcode 7 (reserved) w/payload, then ping
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testCase4_1_5() throws Exception
|
||||||
|
{
|
||||||
|
List<WebSocketFrame> send = new ArrayList<>();
|
||||||
|
send.add(WebSocketFrame.text("hello"));
|
||||||
|
send.add(new WebSocketFrame((byte)7).setPayload("bad")); // intentionally bad
|
||||||
|
send.add(WebSocketFrame.ping());
|
||||||
|
|
||||||
|
List<WebSocketFrame> expect = new ArrayList<>();
|
||||||
|
expect.add(WebSocketFrame.text("hello")); // echo
|
||||||
|
expect.add(new CloseInfo(StatusCode.PROTOCOL).asFrame());
|
||||||
|
|
||||||
|
Fuzzer fuzzer = new Fuzzer(this);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
fuzzer.connect();
|
||||||
|
fuzzer.setSendMode(Fuzzer.SendMode.BULK);
|
||||||
|
fuzzer.send(send);
|
||||||
fuzzer.expect(expect);
|
fuzzer.expect(expect);
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
|
|
Loading…
Reference in New Issue