public String assertReadString(int length) throws Exception { return new String(assertReadBytes(length), 0, length, "UTF-8"); }
@Override protected String assertReadString(int len) throws Exception { return client.assertReadString(len); }
@Override public boolean checkDisconnected() { return client.checkDisconnected(); }
@Override protected void assertConnect(String term) throws Exception { client.setOptionHandler(new EchoOptionHandler(false, false, true, true)); if (binary) { client.setOptionHandler(new SimpleOptionHandler(0, false, false, true, true)); } if (term != null) { client.setOptionHandler(new TerminalTypeOptionHandler(term, false, false, true, false)); } client.connect("localhost", 4000); }
@Test public void testWillUnknownOption() throws Exception { server.start(new Supplier<TelnetHandler>() { @Override public TelnetHandler get() { return new TelnetHandler(); } }); client.registerNotifHandler(new BiConsumer<Integer, Integer>() { @Override public void accept(Integer negotiation_code, Integer option_code) { if (option_code == 47) { assertEquals(TelnetNotificationHandler.RECEIVED_DONT, negotiation_code); testComplete(); } } }); client.setOptionHandler(new SimpleOptionHandler(47, true, false, false, false)); client.connect("localhost", 4000); await(); }
client.setOptionHandler(optionHandler); client.connect("localhost", 4000); latch1.await(30, TimeUnit.SECONDS); client.writeDirectAndFlush(new byte[]{TelnetConnection.BYTE_IAC, TelnetConnection.BYTE_SB, 31, 0, 80, 0, 24, TelnetConnection.BYTE_IAC, TelnetConnection.BYTE_SE}); latch2.await(30, TimeUnit.SECONDS); client.writeDirectAndFlush(new byte[]{TelnetConnection.BYTE_IAC, TelnetConnection.BYTE_SB, 31, 0, (byte) 180, 0, (byte) 160, TelnetConnection.BYTE_IAC, TelnetConnection.BYTE_SE}); await();
@Test public void testReceive() throws Exception { server.start(() -> new TelnetHandler() { @Override protected void onData(byte[] data) { assertEquals(7, data.length); assertEquals((byte) 0, data[0]); assertEquals((byte) 1, data[1]); assertEquals((byte) 2, data[2]); assertEquals((byte) 3, data[3]); assertEquals((byte) 127, data[4]); assertEquals((byte) 0x80, data[5]); assertEquals((byte) 0x81, data[6]); testComplete(); } }); client.connect("localhost", 4000).write(new byte[]{0, 1, 2, 3, 127, (byte) 0x80, (byte) 0x81}).flush(); await(); }
@Test public void testClientDisconnect() throws Exception { server.start(() -> new TelnetHandler() { @Override protected void onClose() { testComplete(); } }); try { client.connect("localhost", 4000); } finally { client.disconnect(); } await(); }
@Test public void testSend() throws Exception { server.start(() -> new TelnetHandler() { @Override protected void onOpen(TelnetConnection conn) { conn.write(new byte[]{0, 1, 2, 3, 127, (byte) 0x80, (byte) 0x81, -1}); } }); client.connect("localhost", 4000); byte[] data = client.assertReadBytes(8); assertEquals((byte)0, data[0]); assertEquals((byte)1, data[1]); assertEquals((byte)2, data[2]); assertEquals((byte)3, data[3]); assertEquals((byte)127, data[4]); assertEquals((byte)0, data[5]); assertEquals((byte)1, data[6]); assertEquals((byte)127, data[7]); }
public TelnetClientRule registerNotifHandler(final BiConsumer<Integer, Integer> handler) { checkNotConnected(); client.registerNotifHandler(new TelnetNotificationHandler() { @Override public void receivedNegotiation(int i, int i1) { handler.accept(i, i1); } }); return this; }
@Test public void testOpen() throws Exception { server.start(() -> new TelnetHandler() { @Override protected void onOpen(TelnetConnection conn) { testComplete(); } }); client.connect("localhost", 4000); await(); }
@Override protected void assertDisconnect(boolean clean) throws Exception { client.disconnect(clean); }
@Override public void testSize() throws Exception { wsHandler = new WindowSizeOptionHandler(80, 24, false, false, true, true); client.setOptionHandler(wsHandler); super.testSize(); }
@Test public void testDoUnknownOption() throws Exception { server.start(new Supplier<TelnetHandler>() { @Override public TelnetHandler get() { return new TelnetHandler(); } }); client.registerNotifHandler(new BiConsumer<Integer, Integer>() { @Override public void accept(Integer negotiation_code, Integer option_code) { if (option_code == 47) { assertEquals(TelnetNotificationHandler.RECEIVED_WONT, negotiation_code); testComplete(); } } }); client.setOptionHandler(new SimpleOptionHandler(47, false, true, false, false)); client.connect("localhost", 4000); await(); }
client.setOptionHandler(new SimpleOptionHandler(0, false, false, true, false)); client.connect("localhost", 4000); latch.await(); client.writeDirectAndFlush((byte)-1, (byte)-1); await();
@Override protected void assertConnect(String term) throws Exception { client.setOptionHandler(new EchoOptionHandler(false, false, true, true)); if (binary) { client.setOptionHandler(new SimpleOptionHandler(0, false, false, true, true)); } if (term != null) { client.setOptionHandler(new TerminalTypeOptionHandler(term, false, false, true, false)); } client.connect("localhost", 4000); }
@Test public void testReceive() throws Exception { server.start(() -> new TelnetHandler() { @Override protected void onData(byte[] data) { assertEquals(7, data.length); assertEquals((byte) 0, data[0]); assertEquals((byte) 1, data[1]); assertEquals((byte) 2, data[2]); assertEquals((byte) 3, data[3]); assertEquals((byte) 127, data[4]); assertEquals((byte) 0x80, data[5]); assertEquals((byte) 0x81, data[6]); testComplete(); } }); client.connect("localhost", 4000).write(new byte[]{0, 1, 2, 3, 127, (byte) 0x80, (byte) 0x81}).flush(); await(); }
@Test public void testClientDisconnect() throws Exception { server.start(() -> new TelnetHandler() { @Override protected void onClose() { testComplete(); } }); try { client.connect("localhost", 4000); } finally { client.disconnect(); } await(); }