* Verify that outgoing text frames are fragmented by the maxLength configuration.
*/
@Test
public void testOutgoingFramesByMaxLength() throws IOException
{
OutgoingFramesCapture capture = new OutgoingFramesCapture();
FragmentExtension ext = new FragmentExtension();
ext.setBufferPool(bufferPool);
ext.setPolicy(WebSocketPolicy.newServerPolicy());
ExtensionConfig config = ExtensionConfig.parse("fragment;maxLength=20");
ext.setConfig(config);
ext.setNextOutgoingFrames(capture);
// Quote
List<String> quote = new ArrayList<>();
quote.add("No amount of experimentation can ever prove me right;");
quote.add("a single experiment can prove me wrong.");
quote.add("-- Albert Einstein");
// Write quote as separate frames
for (String section : quote)
{
Frame frame = new TextFrame().setPayload(section);
ext.outgoingFrame(frame, null, BatchMode.OFF);
}
// Expected Frames
List<WebSocketFrame> expectedFrames = new ArrayList<>();
expectedFrames.add(new TextFrame().setPayload("No amount of experim").setFin(false));
expectedFrames.add(new ContinuationFrame().setPayload("entation can ever pr").setFin(false));
expectedFrames.add(new ContinuationFrame().setPayload("ove me right;").setFin(true));
expectedFrames.add(new TextFrame().setPayload("a single experiment ").setFin(false));
expectedFrames.add(new ContinuationFrame().setPayload("can prove me wrong.").setFin(true));
expectedFrames.add(new TextFrame().setPayload("-- Albert Einstein").setFin(true));
// capture.dump();
int len = expectedFrames.size();
capture.assertFrameCount(len);
String prefix;
LinkedList<WebSocketFrame> frames = capture.getFrames();
for (int i = 0; i < len; i++)
{
prefix = "Frame[" + i + "]";
WebSocketFrame actualFrame = frames.get(i);
WebSocketFrame expectedFrame = expectedFrames.get(i);