/*
* Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.netconf.nettyutil.handler;
import static org.junit.Assert.assertEquals;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import org.junit.Test;
public class NetconfChunkAggregatorTest {
private static final String CHUNKED_MESSAGE = "\n#4\n"
+ "\n"
+ " \n"
+ ""
+ "\n##\n";
private static final String EXPECTED_MESSAGE = "\n"
+ " \n"
+ "";
private static final String CHUNKED_MESSAGE_ONE = "\n#101\n" + EXPECTED_MESSAGE + "\n##\n";
private final NetconfChunkAggregator agr = new NetconfChunkAggregator(4096);
@Test
public void testMultipleChunks() throws Exception {
final var output = new ArrayList<>();
final var input = Unpooled.copiedBuffer(CHUNKED_MESSAGE.getBytes(StandardCharsets.UTF_8));
agr.decode(null, input, output);
assertEquals(1, output.size());
final var chunk = (ByteBuf) output.get(0);
assertEquals(EXPECTED_MESSAGE, chunk.toString(StandardCharsets.UTF_8));
}
@Test
public void testOneChunks() throws Exception {
final var output = new ArrayList<>();
final var input = Unpooled.copiedBuffer(CHUNKED_MESSAGE_ONE.getBytes(StandardCharsets.UTF_8));
agr.decode(null, input, output);
assertEquals(1, output.size());
final ByteBuf chunk = (ByteBuf) output.get(0);
assertEquals(EXPECTED_MESSAGE, chunk.toString(StandardCharsets.UTF_8));
}
}