### Question:
ShutdownTelnetHandler implements TelnetHandler { @Override public String telnet(Channel channel, String message) throws RemotingException { int sleepMilliseconds = 0; if (StringUtils.isNotEmpty(message)) { String[] parameters = message.split("\\s+"); if (parameters.length == 2 && parameters[0].equals("-t") && StringUtils.isInteger(parameters[1])) { sleepMilliseconds = Integer.parseInt(parameters[1]); } else { return "Invalid parameter,please input like shutdown -t 10000"; } } long start = System.currentTimeMillis(); if (sleepMilliseconds > 0) { try { Thread.sleep(sleepMilliseconds); } catch (InterruptedException e) { return "Failed to invoke shutdown command, cause: " + e.getMessage(); } } StringBuilder buf = new StringBuilder(); DubboShutdownHook.getDubboShutdownHook().unregister(); DubboShutdownHook.getDubboShutdownHook().doDestroy(); long end = System.currentTimeMillis(); buf.append("Application has shutdown successfully"); buf.append("\r\nelapsed: "); buf.append(end - start); buf.append(" ms."); return buf.toString(); }  @Override String telnet(Channel channel, String message);  }### Answer:
@SuppressWarnings("unchecked") @Test public void testInvoke() throws RemotingException { mockChannel = mock(Channel.class); String result = handler.telnet(mockChannel, ""); assertTrue(result.contains("Application has shutdown successfully")); }
@SuppressWarnings("unchecked") @Test public void testInvokeWithTimeParameter() throws RemotingException { mockChannel = mock(Channel.class); int sleepTime = 2000; long start = System.currentTimeMillis(); String result = handler.telnet(mockChannel, "-t " + sleepTime); long end = System.currentTimeMillis(); assertTrue(result.contains("Application has shutdown successfully") && (end - start) > sleepTime); }