More logging
This commit is contained in:
parent
a20ab9184e
commit
a682b018b2
@ -24,11 +24,16 @@ import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.ChannelPipelineFactory;
|
||||
import io.netty.channel.Channels;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Keeps sending random data to the specified address.
|
||||
*/
|
||||
public class DiscardClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(DiscardClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -67,7 +72,7 @@ public class DiscardClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length < 2 || args.length > 3) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + DiscardClient.class.getSimpleName() +
|
||||
" <host> <port> [<first message size>]");
|
||||
return;
|
||||
|
@ -24,6 +24,8 @@ import io.netty.channel.ChannelPipeline;
|
||||
import io.netty.channel.ChannelPipelineFactory;
|
||||
import io.netty.channel.Channels;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Sends one message when a connection is open and echoes back any received
|
||||
@ -32,6 +34,9 @@ import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
* the server.
|
||||
*/
|
||||
public class EchoClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(EchoClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -70,7 +75,7 @@ public class EchoClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length < 2 || args.length > 3) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + EchoClient.class.getSimpleName() +
|
||||
" <host> <port> [<first message size>]");
|
||||
return;
|
||||
|
@ -22,12 +22,17 @@ import io.netty.bootstrap.ClientBootstrap;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelFuture;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Sends a sequence of integers to a {@link FactorialServer} to calculate
|
||||
* the factorial of the specified integer.
|
||||
*/
|
||||
public class FactorialClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(FactorialClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -60,8 +65,7 @@ public class FactorialClient {
|
||||
(FactorialClientHandler) channel.getPipeline().getLast();
|
||||
|
||||
// Print out the answer.
|
||||
System.err.format(
|
||||
"Factorial of %,d is: %,d", count, handler.getFactorial());
|
||||
logger.info(String.format("Factorial of %,d is: %,d", count, handler.getFactorial()));
|
||||
|
||||
// Shut down all thread pools to exit.
|
||||
bootstrap.releaseExternalResources();
|
||||
@ -70,7 +74,7 @@ public class FactorialClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length != 3) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + FactorialClient.class.getSimpleName() +
|
||||
" <host> <port> <count>");
|
||||
return;
|
||||
|
@ -54,6 +54,8 @@ import io.netty.handler.codec.http.HttpResponse;
|
||||
import io.netty.handler.codec.http.HttpResponseStatus;
|
||||
import io.netty.handler.ssl.SslHandler;
|
||||
import io.netty.handler.stream.ChunkedFile;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.CharsetUtil;
|
||||
|
||||
/**
|
||||
@ -103,6 +105,9 @@ import io.netty.util.CharsetUtil;
|
||||
* </pre>
|
||||
*/
|
||||
public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpStaticFileServerHandler.class);
|
||||
|
||||
public static final String HTTP_DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss zzz";
|
||||
public static final String HTTP_DATE_GMT_TIMEZONE = "GMT";
|
||||
@ -188,7 +193,7 @@ public class HttpStaticFileServerHandler extends SimpleChannelUpstreamHandler {
|
||||
@Override
|
||||
public void operationProgressed(
|
||||
ChannelFuture future, long amount, long current, long total) {
|
||||
System.out.printf("%s: %d / %d (+%d)%n", path, current, total, amount);
|
||||
logger.info(String.format("%s: %d / %d (+%d)%n", path, current, total, amount));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -29,12 +29,17 @@ import io.netty.handler.codec.http.HttpHeaders;
|
||||
import io.netty.handler.codec.http.HttpMethod;
|
||||
import io.netty.handler.codec.http.HttpRequest;
|
||||
import io.netty.handler.codec.http.HttpVersion;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* A simple HTTP client that prints out the content of the HTTP response to
|
||||
* {@link System#out} to test {@link HttpSnoopServer}.
|
||||
*/
|
||||
public class HttpSnoopClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpSnoopClient.class);
|
||||
|
||||
private final URI uri;
|
||||
|
||||
@ -55,7 +60,7 @@ public class HttpSnoopClient {
|
||||
}
|
||||
|
||||
if (!scheme.equalsIgnoreCase("http") && !scheme.equalsIgnoreCase("https")) {
|
||||
System.err.println("Only HTTP(S) is supported.");
|
||||
logger.error("Only HTTP(S) is supported.");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -105,7 +110,7 @@ public class HttpSnoopClient {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
if (args.length != 1) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + HttpSnoopClient.class.getSimpleName() +
|
||||
" <URL>");
|
||||
return;
|
||||
|
@ -21,9 +21,14 @@ import io.netty.channel.MessageEvent;
|
||||
import io.netty.channel.SimpleChannelUpstreamHandler;
|
||||
import io.netty.handler.codec.http.HttpChunk;
|
||||
import io.netty.handler.codec.http.HttpResponse;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.CharsetUtil;
|
||||
|
||||
public class HttpSnoopClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpSnoopClientHandler.class);
|
||||
|
||||
private boolean readingChunks;
|
||||
|
||||
@ -32,38 +37,35 @@ public class HttpSnoopClientHandler extends SimpleChannelUpstreamHandler {
|
||||
if (!readingChunks) {
|
||||
HttpResponse response = (HttpResponse) e.getMessage();
|
||||
|
||||
System.out.println("STATUS: " + response.getStatus());
|
||||
System.out.println("VERSION: " + response.getProtocolVersion());
|
||||
System.out.println();
|
||||
|
||||
logger.info("STATUS: " + response.getStatus());
|
||||
logger.info("VERSION: " + response.getProtocolVersion());
|
||||
|
||||
if (!response.getHeaderNames().isEmpty()) {
|
||||
for (String name: response.getHeaderNames()) {
|
||||
for (String value: response.getHeaders(name)) {
|
||||
System.out.println("HEADER: " + name + " = " + value);
|
||||
logger.info("HEADER: " + name + " = " + value);
|
||||
}
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
if (response.isChunked()) {
|
||||
readingChunks = true;
|
||||
System.out.println("CHUNKED CONTENT {");
|
||||
logger.info("CHUNKED CONTENT {");
|
||||
} else {
|
||||
ChannelBuffer content = response.getContent();
|
||||
if (content.readable()) {
|
||||
System.out.println("CONTENT {");
|
||||
System.out.println(content.toString(CharsetUtil.UTF_8));
|
||||
System.out.println("} END OF CONTENT");
|
||||
logger.info("CONTENT {");
|
||||
logger.info(content.toString(CharsetUtil.UTF_8));
|
||||
logger.info("} END OF CONTENT");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
HttpChunk chunk = (HttpChunk) e.getMessage();
|
||||
if (chunk.isLast()) {
|
||||
readingChunks = false;
|
||||
System.out.println("} END OF CHUNKED CONTENT");
|
||||
logger.info("} END OF CHUNKED CONTENT");
|
||||
} else {
|
||||
System.out.print(chunk.getContent().toString(CharsetUtil.UTF_8));
|
||||
System.out.flush();
|
||||
logger.info(chunk.getContent().toString(CharsetUtil.UTF_8));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -41,11 +41,14 @@ import io.netty.handler.codec.http.HttpRequest;
|
||||
import io.netty.handler.codec.http.HttpVersion;
|
||||
import io.netty.handler.codec.http.InterfaceHttpData;
|
||||
import io.netty.handler.codec.http.QueryStringEncoder;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
*/
|
||||
public class HttpUploadClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpUploadClient.class);
|
||||
|
||||
private final String baseUri;
|
||||
private final String filePath;
|
||||
|
||||
@ -69,7 +72,7 @@ public class HttpUploadClient {
|
||||
try {
|
||||
uriSimple = new URI(postSimple);
|
||||
} catch (URISyntaxException e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
logger.error("Invalid URI syntax" + e.getCause());
|
||||
return;
|
||||
}
|
||||
String scheme = uriSimple.getScheme() == null? "http" : uriSimple.getScheme();
|
||||
@ -84,7 +87,7 @@ public class HttpUploadClient {
|
||||
}
|
||||
|
||||
if (!scheme.equalsIgnoreCase("http") && !scheme.equalsIgnoreCase("https")) {
|
||||
System.err.println("Only HTTP(S) is supported.");
|
||||
logger.error("Only HTTP(S) is supported.");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -94,12 +97,12 @@ public class HttpUploadClient {
|
||||
try {
|
||||
uriFile = new URI(postFile);
|
||||
} catch (URISyntaxException e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
logger.error("Error: " + e.getMessage());
|
||||
return;
|
||||
}
|
||||
File file = new File(filePath);
|
||||
if (! file.canRead()) {
|
||||
System.err.println("A correct path is needed");
|
||||
logger.error("A correct path is needed");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -176,7 +179,7 @@ public class HttpUploadClient {
|
||||
try {
|
||||
uriGet = new URI(encoder.toString());
|
||||
} catch (URISyntaxException e) {
|
||||
System.err.println("Error: " + e.getMessage());
|
||||
logger.error("Error: " + e.getMessage());
|
||||
bootstrap.releaseExternalResources();
|
||||
return null;
|
||||
}
|
||||
@ -377,7 +380,7 @@ public class HttpUploadClient {
|
||||
|
||||
public static void main(String[] args) {
|
||||
if (args.length != 2) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + HttpUploadClient.class.getSimpleName() +
|
||||
" baseURI filePath");
|
||||
return;
|
||||
|
@ -22,9 +22,14 @@ import io.netty.channel.MessageEvent;
|
||||
import io.netty.channel.SimpleChannelUpstreamHandler;
|
||||
import io.netty.handler.codec.http.HttpChunk;
|
||||
import io.netty.handler.codec.http.HttpResponse;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.CharsetUtil;
|
||||
|
||||
public class HttpUploadClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpUploadClientHandler.class);
|
||||
|
||||
private volatile boolean readingChunks;
|
||||
|
||||
@ -33,38 +38,35 @@ public class HttpUploadClientHandler extends SimpleChannelUpstreamHandler {
|
||||
if (!readingChunks) {
|
||||
HttpResponse response = (HttpResponse) e.getMessage();
|
||||
|
||||
System.out.println("STATUS: " + response.getStatus());
|
||||
System.out.println("VERSION: " + response.getProtocolVersion());
|
||||
System.out.println();
|
||||
logger.info("STATUS: " + response.getStatus());
|
||||
logger.info("VERSION: " + response.getProtocolVersion());
|
||||
|
||||
if (!response.getHeaderNames().isEmpty()) {
|
||||
for (String name: response.getHeaderNames()) {
|
||||
for (String value: response.getHeaders(name)) {
|
||||
System.out.println("HEADER: " + name + " = " + value);
|
||||
logger.info("HEADER: " + name + " = " + value);
|
||||
}
|
||||
}
|
||||
System.out.println();
|
||||
}
|
||||
|
||||
if (response.getStatus().getCode() == 200 && response.isChunked()) {
|
||||
readingChunks = true;
|
||||
System.out.println("CHUNKED CONTENT {");
|
||||
logger.info("CHUNKED CONTENT {");
|
||||
} else {
|
||||
ChannelBuffer content = response.getContent();
|
||||
if (content.readable()) {
|
||||
System.out.println("CONTENT {");
|
||||
System.out.println(content.toString(CharsetUtil.UTF_8));
|
||||
System.out.println("} END OF CONTENT");
|
||||
logger.info("CONTENT {");
|
||||
logger.info(content.toString(CharsetUtil.UTF_8));
|
||||
logger.info("} END OF CONTENT");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
HttpChunk chunk = (HttpChunk) e.getMessage();
|
||||
if (chunk.isLast()) {
|
||||
readingChunks = false;
|
||||
System.out.println("} END OF CHUNKED CONTENT");
|
||||
logger.info("} END OF CHUNKED CONTENT");
|
||||
} else {
|
||||
System.out.print(chunk.getContent().toString(CharsetUtil.UTF_8));
|
||||
System.out.flush();
|
||||
logger.info(chunk.getContent().toString(CharsetUtil.UTF_8));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -58,9 +58,14 @@ import io.netty.handler.codec.http.HttpVersion;
|
||||
import io.netty.handler.codec.http.InterfaceHttpData;
|
||||
import io.netty.handler.codec.http.InterfaceHttpData.HttpDataType;
|
||||
import io.netty.handler.codec.http.QueryStringDecoder;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.CharsetUtil;
|
||||
|
||||
public class HttpUploadServerHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpUploadServerHandler.class);
|
||||
|
||||
private volatile HttpRequest request;
|
||||
|
||||
@ -480,8 +485,7 @@ public class HttpUploadServerHandler extends SimpleChannelUpstreamHandler {
|
||||
@Override
|
||||
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
|
||||
throws Exception {
|
||||
e.getCause().printStackTrace();
|
||||
System.err.println(responseContent.toString());
|
||||
logger.error(responseContent.toString(), e.getCause());
|
||||
e.getChannel().close();
|
||||
}
|
||||
}
|
||||
|
@ -57,8 +57,13 @@ import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
|
||||
import io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker;
|
||||
import io.netty.handler.codec.http.websocketx.WebSocketClientHandshakerFactory;
|
||||
import io.netty.handler.codec.http.websocketx.WebSocketVersion;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
public class WebSocketClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(WebSocketClient.class);
|
||||
|
||||
private final URI uri;
|
||||
|
||||
@ -101,7 +106,7 @@ public class WebSocketClient {
|
||||
});
|
||||
|
||||
// Connect
|
||||
System.out.println("WebSocket Client connecting");
|
||||
logger.info("WebSocket Client connecting");
|
||||
ChannelFuture future =
|
||||
bootstrap.connect(
|
||||
new InetSocketAddress(uri.getHost(), uri.getPort()));
|
||||
@ -111,17 +116,17 @@ public class WebSocketClient {
|
||||
handshaker.handshake(ch).awaitUninterruptibly().rethrowIfFailed();
|
||||
|
||||
// Send 10 messages and wait for responses
|
||||
System.out.println("WebSocket Client sending message");
|
||||
logger.info("WebSocket Client sending message");
|
||||
for (int i = 0; i < 10; i++) {
|
||||
ch.write(new TextWebSocketFrame("Message #" + i));
|
||||
}
|
||||
|
||||
// Ping
|
||||
System.out.println("WebSocket Client sending ping");
|
||||
logger.info("WebSocket Client sending ping");
|
||||
ch.write(new PingWebSocketFrame(ChannelBuffers.copiedBuffer(new byte[]{1, 2, 3, 4, 5, 6})));
|
||||
|
||||
// Close
|
||||
System.out.println("WebSocket Client sending close");
|
||||
logger.info("WebSocket Client sending close");
|
||||
ch.write(new CloseWebSocketFrame());
|
||||
|
||||
// WebSocketClientHandler will close the connection when the server
|
||||
|
@ -49,9 +49,14 @@ import io.netty.handler.codec.http.websocketx.PongWebSocketFrame;
|
||||
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
|
||||
import io.netty.handler.codec.http.websocketx.WebSocketClientHandshaker;
|
||||
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.CharsetUtil;
|
||||
|
||||
public class WebSocketClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(WebSocketClientHandler.class);
|
||||
|
||||
private final WebSocketClientHandshaker handshaker;
|
||||
|
||||
@ -61,7 +66,7 @@ public class WebSocketClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
@Override
|
||||
public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e) throws Exception {
|
||||
System.out.println("WebSocket Client disconnected!");
|
||||
logger.debug("WebSocket Client disconnected!");
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -69,7 +74,7 @@ public class WebSocketClientHandler extends SimpleChannelUpstreamHandler {
|
||||
Channel ch = ctx.getChannel();
|
||||
if (!handshaker.isHandshakeComplete()) {
|
||||
handshaker.finishHandshake(ch, (HttpResponse) e.getMessage());
|
||||
System.out.println("WebSocket Client connected!");
|
||||
logger.debug("WebSocket Client connected!");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -82,11 +87,11 @@ public class WebSocketClientHandler extends SimpleChannelUpstreamHandler {
|
||||
WebSocketFrame frame = (WebSocketFrame) e.getMessage();
|
||||
if (frame instanceof TextWebSocketFrame) {
|
||||
TextWebSocketFrame textFrame = (TextWebSocketFrame) frame;
|
||||
System.out.println("WebSocket Client received message: " + textFrame.getText());
|
||||
logger.info("WebSocket Client received message: " + textFrame.getText());
|
||||
} else if (frame instanceof PongWebSocketFrame) {
|
||||
System.out.println("WebSocket Client received pong");
|
||||
logger.info("WebSocket Client received pong");
|
||||
} else if (frame instanceof CloseWebSocketFrame) {
|
||||
System.out.println("WebSocket Client received closing");
|
||||
logger.info("WebSocket Client received closing");
|
||||
ch.close();
|
||||
}
|
||||
}
|
||||
|
@ -20,6 +20,8 @@ import java.util.concurrent.Executors;
|
||||
|
||||
import io.netty.bootstrap.ServerBootstrap;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* A HTTP server which serves Web Socket requests at:
|
||||
@ -41,6 +43,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannelFactory;
|
||||
* </ul>
|
||||
*/
|
||||
public class WebSocketServer {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(WebSocketServer.class);
|
||||
|
||||
private final int port;
|
||||
|
||||
@ -58,8 +63,8 @@ public class WebSocketServer {
|
||||
// Bind and start to accept incoming connections.
|
||||
bootstrap.bind(new InetSocketAddress(port));
|
||||
|
||||
System.out.println("Web socket server started at port " + port + '.');
|
||||
System.out.println("Open your browser and navigate to http://localhost:" + port + '/');
|
||||
logger.info("Web socket server started at port " + port + '.');
|
||||
logger.info("Open your browser and navigate to http://localhost:" + port + '/');
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
@ -20,6 +20,8 @@ import java.util.concurrent.Executors;
|
||||
|
||||
import io.netty.bootstrap.ServerBootstrap;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* A HTTP server which serves Web Socket requests at:
|
||||
@ -40,6 +42,9 @@ import io.netty.channel.socket.nio.NioServerSocketChannelFactory;
|
||||
* </ul>
|
||||
*/
|
||||
public class WebSocketSslServer {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(WebSocketSslServer.class);
|
||||
|
||||
private final int port;
|
||||
|
||||
@ -57,8 +62,8 @@ public class WebSocketSslServer {
|
||||
// Bind and start to accept incoming connections.
|
||||
bootstrap.bind(new InetSocketAddress(port));
|
||||
|
||||
System.out.println("Web socket server started at port " + port + '.');
|
||||
System.out.println("Open your browser and navigate to https://localhost:" + port + '/');
|
||||
logger.info("Web socket server started at port " + port + '.');
|
||||
logger.info("Open your browser and navigate to https://localhost:" + port + '/');
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
@ -71,13 +76,13 @@ public class WebSocketSslServer {
|
||||
|
||||
String keyStoreFilePath = System.getProperty("keystore.file.path");
|
||||
if (keyStoreFilePath == null || keyStoreFilePath.isEmpty()) {
|
||||
System.out.println("ERROR: System property keystore.file.path not set. Exiting now!");
|
||||
logger.error("ERROR: System property keystore.file.path not set. Exiting now!");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
String keyStoreFilePassword = System.getProperty("keystore.file.password");
|
||||
if (keyStoreFilePassword == null || keyStoreFilePassword.isEmpty()) {
|
||||
System.out.println("ERROR: System property keystore.file.password not set. Exiting now!");
|
||||
logger.error("ERROR: System property keystore.file.password not set. Exiting now!");
|
||||
System.exit(1);
|
||||
}
|
||||
|
||||
|
@ -31,8 +31,13 @@ import io.netty.handler.codec.string.StringEncoder;
|
||||
import io.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
|
||||
import io.netty.handler.logging.LoggingHandler;
|
||||
import io.netty.logging.InternalLogLevel;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
public class LocalExampleMultithreaded {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(LocalExampleMultithreaded.class);
|
||||
|
||||
private final String port;
|
||||
|
||||
@ -69,12 +74,11 @@ public class LocalExampleMultithreaded {
|
||||
// Read commands from array
|
||||
String[] commands = { "First", "Second", "Third", "quit" };
|
||||
for (int j = 0; j < 5 ; j++) {
|
||||
System.err.println("Start " + j);
|
||||
logger.info("Start " + j);
|
||||
ChannelFuture channelFuture = cb.connect(socketAddress);
|
||||
channelFuture.awaitUninterruptibly();
|
||||
if (! channelFuture.isSuccess()) {
|
||||
System.err.println("CANNOT CONNECT");
|
||||
channelFuture.getCause().printStackTrace();
|
||||
logger.error("CANNOT CONNECT", channelFuture.getCause());
|
||||
break;
|
||||
}
|
||||
ChannelFuture lastWriteFuture = null;
|
||||
@ -90,7 +94,7 @@ public class LocalExampleMultithreaded {
|
||||
channelFuture.getChannel().close();
|
||||
// Wait until the connection is closed or the connection attempt fails.
|
||||
channelFuture.getChannel().getCloseFuture().awaitUninterruptibly();
|
||||
System.err.println("End " + j);
|
||||
logger.info("End " + j);
|
||||
}
|
||||
|
||||
// Release all resources
|
||||
|
@ -28,8 +28,13 @@ import io.netty.channel.MessageEvent;
|
||||
import io.netty.handler.codec.string.StringDecoder;
|
||||
import io.netty.handler.codec.string.StringEncoder;
|
||||
import io.netty.handler.execution.ExecutionHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
public class LocalServerPipelineFactory implements ChannelPipelineFactory {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(LocalServerPipelineFactory.class);
|
||||
|
||||
private final ExecutionHandler executionHandler;
|
||||
|
||||
@ -71,7 +76,7 @@ public class LocalServerPipelineFactory implements ChannelPipelineFactory {
|
||||
Channels.close(e.getChannel());
|
||||
return;
|
||||
}
|
||||
System.err.println("SERVER:" + msg);
|
||||
logger.error("SERVER:" + msg);
|
||||
// Write back
|
||||
Channels.write(e.getChannel(), msg);
|
||||
}
|
||||
|
@ -26,12 +26,17 @@ import io.netty.bootstrap.ClientBootstrap;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelFuture;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Sends a list of continent/city pairs to a {@link LocalTimeServer} to
|
||||
* get the local times of the specified cities.
|
||||
*/
|
||||
public class LocalTimeClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(LocalTimeClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -99,10 +104,10 @@ public class LocalTimeClient {
|
||||
}
|
||||
|
||||
private static void printUsage() {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + LocalTimeClient.class.getSimpleName() +
|
||||
" <host> <port> <continent/city_name> ...");
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Example: " + LocalTimeClient.class.getSimpleName() +
|
||||
" localhost 8080 America/New_York Asia/Seoul");
|
||||
}
|
||||
@ -111,7 +116,7 @@ public class LocalTimeClient {
|
||||
List<String> cities = new ArrayList<String>();
|
||||
for (int i = offset; i < args.length; i ++) {
|
||||
if (!args[i].matches("^[_A-Za-z]+/[_A-Za-z]+$")) {
|
||||
System.err.println("Syntax error: '" + args[i] + "'");
|
||||
logger.error("Syntax error: '" + args[i] + "'");
|
||||
printUsage();
|
||||
return null;
|
||||
}
|
||||
|
@ -24,6 +24,8 @@ import io.netty.example.echo.EchoClient;
|
||||
import io.netty.handler.codec.serialization.ClassResolvers;
|
||||
import io.netty.handler.codec.serialization.ObjectDecoder;
|
||||
import io.netty.handler.codec.serialization.ObjectEncoder;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.concurrent.Executors;
|
||||
@ -32,6 +34,9 @@ import java.util.concurrent.Executors;
|
||||
* Modification of {@link EchoClient} which utilizes Java object serialization.
|
||||
*/
|
||||
public class ObjectEchoClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(ObjectEchoClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -68,7 +73,7 @@ public class ObjectEchoClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length < 2 || args.length > 3) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + ObjectEchoClient.class.getSimpleName() +
|
||||
" <host> <port> [<first message size>]");
|
||||
return;
|
||||
|
@ -23,8 +23,13 @@ import io.netty.bootstrap.ServerBootstrap;
|
||||
import io.netty.channel.socket.ClientSocketChannelFactory;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
public class HexDumpProxy {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HexDumpProxy.class);
|
||||
|
||||
private final int localPort;
|
||||
private final String remoteHost;
|
||||
@ -37,7 +42,7 @@ public class HexDumpProxy {
|
||||
}
|
||||
|
||||
public void run() {
|
||||
System.err.println(
|
||||
logger.info(
|
||||
"Proxying *:" + localPort + " to " +
|
||||
remoteHost + ':' + remotePort + " ...");
|
||||
|
||||
@ -60,7 +65,7 @@ public class HexDumpProxy {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Validate command line options.
|
||||
if (args.length != 3) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + HexDumpProxy.class.getSimpleName() +
|
||||
" <local port> <remote host> <remote port>");
|
||||
return;
|
||||
|
@ -28,6 +28,8 @@ import io.netty.channel.socket.DatagramChannelFactory;
|
||||
import io.netty.channel.socket.nio.NioDatagramChannelFactory;
|
||||
import io.netty.handler.codec.string.StringDecoder;
|
||||
import io.netty.handler.codec.string.StringEncoder;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.CharsetUtil;
|
||||
|
||||
/**
|
||||
@ -37,6 +39,9 @@ import io.netty.util.CharsetUtil;
|
||||
* Inspired by <a href="http://java.sun.com/docs/books/tutorial/networking/datagrams/clientServer.html">the official Java tutorial</a>.
|
||||
*/
|
||||
public class QuoteOfTheMomentClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(QuoteOfTheMomentClient.class);
|
||||
|
||||
private final int port;
|
||||
|
||||
@ -86,7 +91,7 @@ public class QuoteOfTheMomentClient {
|
||||
// response is received. If the channel is not closed within 5 seconds,
|
||||
// print an error message and quit.
|
||||
if (!c.getCloseFuture().awaitUninterruptibly(5000)) {
|
||||
System.err.println("QOTM request timed out.");
|
||||
logger.error("QOTM request timed out.");
|
||||
c.close().awaitUninterruptibly();
|
||||
}
|
||||
|
||||
|
@ -19,15 +19,20 @@ import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ExceptionEvent;
|
||||
import io.netty.channel.MessageEvent;
|
||||
import io.netty.channel.SimpleChannelUpstreamHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
public class QuoteOfTheMomentClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(QuoteOfTheMomentClientHandler.class);
|
||||
|
||||
@Override
|
||||
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
|
||||
throws Exception {
|
||||
String msg = (String) e.getMessage();
|
||||
if (msg.startsWith("QOTM: ")) {
|
||||
System.out.println("Quote of the Moment: " + msg.substring(6));
|
||||
logger.info("Quote of the Moment: " + msg.substring(6));
|
||||
e.getChannel().close();
|
||||
}
|
||||
}
|
||||
@ -35,7 +40,7 @@ public class QuoteOfTheMomentClientHandler extends SimpleChannelUpstreamHandler
|
||||
@Override
|
||||
public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
|
||||
throws Exception {
|
||||
e.getCause().printStackTrace();
|
||||
logger.error("Exception caught", e.getCause());
|
||||
e.getChannel().close();
|
||||
}
|
||||
}
|
||||
|
@ -27,6 +27,8 @@ import io.netty.handler.codec.redis.RedisDecoder;
|
||||
import io.netty.handler.codec.redis.RedisEncoder;
|
||||
import io.netty.handler.codec.redis.Reply;
|
||||
import io.netty.handler.queue.BlockingReadHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.InetSocketAddress;
|
||||
@ -36,6 +38,10 @@ import java.util.concurrent.ExecutorService;
|
||||
import java.util.concurrent.Executors;
|
||||
|
||||
public final class RedisClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(RedisClient.class);
|
||||
|
||||
private static final byte[] VALUE = "value".getBytes();
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
@ -56,9 +62,9 @@ public final class RedisClient {
|
||||
Channel channel = redis.getChannel();
|
||||
|
||||
channel.write(new Command("set", "1", "value"));
|
||||
System.out.print(blockingReadHandler.read());
|
||||
logger.info(blockingReadHandler.read().toString());
|
||||
channel.write(new Command("get", "1"));
|
||||
System.out.print(blockingReadHandler.read());
|
||||
logger.info(blockingReadHandler.read().toString());
|
||||
|
||||
int CALLS = 1000000;
|
||||
int PIPELINE = 50;
|
||||
@ -85,7 +91,7 @@ public final class RedisClient {
|
||||
}
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println(CALLS * 1000 / (end - start) + " calls per second");
|
||||
logger.info(CALLS * 1000 / (end - start) + " calls per second");
|
||||
}
|
||||
|
||||
private static void pipelinedIndividualRequests(BlockingReadHandler<Reply> blockingReadHandler, Channel channel, long CALLS, int PIPELINE) throws IOException, InterruptedException {
|
||||
@ -101,7 +107,7 @@ public final class RedisClient {
|
||||
}
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println(CALLS * 1000 / (end - start) + " calls per second");
|
||||
logger.info(CALLS * 1000 / (end - start) + " calls per second");
|
||||
}
|
||||
|
||||
private static void requestResponse(BlockingReadHandler<Reply> blockingReadHandler, Channel channel, int CALLS) throws IOException, InterruptedException {
|
||||
@ -112,7 +118,7 @@ public final class RedisClient {
|
||||
blockingReadHandler.read();
|
||||
}
|
||||
long end = System.currentTimeMillis();
|
||||
System.out.println(CALLS * 1000 / (end - start) + " calls per second");
|
||||
logger.info(CALLS * 1000 / (end - start) + " calls per second");
|
||||
}
|
||||
|
||||
private RedisClient() {
|
||||
|
@ -23,6 +23,8 @@ import io.netty.channel.Channels;
|
||||
import io.netty.channel.sctp.SctpClientSocketChannelFactory;
|
||||
import io.netty.handler.execution.ExecutionHandler;
|
||||
import io.netty.handler.execution.OrderedMemoryAwareThreadPoolExecutor;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
import java.net.InetSocketAddress;
|
||||
import java.util.concurrent.Executors;
|
||||
@ -31,6 +33,9 @@ import java.util.concurrent.Executors;
|
||||
* Simple SCTP Echo Client
|
||||
*/
|
||||
public class SctpClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(SctpClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -77,7 +82,7 @@ public class SctpClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length != 2) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + SctpClient.class.getSimpleName() +
|
||||
" <host> <port>");
|
||||
return;
|
||||
|
@ -26,11 +26,16 @@ import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelFuture;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.example.telnet.TelnetClient;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Simple SSL chat client modified from {@link TelnetClient}.
|
||||
*/
|
||||
public class SecureChatClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(SecureChatClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -96,7 +101,7 @@ public class SecureChatClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length != 2) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + SecureChatClient.class.getSimpleName() +
|
||||
" <host> <port>");
|
||||
return;
|
||||
|
@ -15,9 +15,7 @@
|
||||
*/
|
||||
package io.netty.example.securechat;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelEvent;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelStateEvent;
|
||||
@ -25,14 +23,16 @@ import io.netty.channel.ExceptionEvent;
|
||||
import io.netty.channel.MessageEvent;
|
||||
import io.netty.channel.SimpleChannelUpstreamHandler;
|
||||
import io.netty.handler.ssl.SslHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Handles a client-side channel.
|
||||
*/
|
||||
public class SecureChatClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(
|
||||
SecureChatClientHandler.class.getName());
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(SecureChatClientHandler.class);
|
||||
|
||||
@Override
|
||||
public void handleUpstream(
|
||||
@ -57,14 +57,13 @@ public class SecureChatClientHandler extends SimpleChannelUpstreamHandler {
|
||||
@Override
|
||||
public void messageReceived(
|
||||
ChannelHandlerContext ctx, MessageEvent e) {
|
||||
System.err.println(e.getMessage());
|
||||
logger.error((String) e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exceptionCaught(
|
||||
ChannelHandlerContext ctx, ExceptionEvent e) {
|
||||
logger.log(
|
||||
Level.WARNING,
|
||||
logger.warn(
|
||||
"Unexpected exception from downstream.",
|
||||
e.getCause());
|
||||
e.getChannel().close();
|
||||
|
@ -15,6 +15,8 @@
|
||||
*/
|
||||
package io.netty.example.securechat;
|
||||
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import java.security.InvalidAlgorithmParameterException;
|
||||
import java.security.KeyStore;
|
||||
import java.security.KeyStoreException;
|
||||
@ -31,6 +33,9 @@ import javax.net.ssl.X509TrustManager;
|
||||
* even if it is invalid.
|
||||
*/
|
||||
public class SecureChatTrustManagerFactory extends TrustManagerFactorySpi {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(SecureChatTrustManagerFactory.class);
|
||||
|
||||
private static final TrustManager DUMMY_TRUST_MANAGER = new X509TrustManager() {
|
||||
@Override
|
||||
@ -45,7 +50,7 @@ public class SecureChatTrustManagerFactory extends TrustManagerFactorySpi {
|
||||
// You should do something in the real world.
|
||||
// You will reach here only if you enabled client certificate auth,
|
||||
// as described in SecureChatSslContextFactory.
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"UNKNOWN CLIENT CERTIFICATE: " + chain[0].getSubjectDN());
|
||||
}
|
||||
|
||||
@ -54,7 +59,7 @@ public class SecureChatTrustManagerFactory extends TrustManagerFactorySpi {
|
||||
X509Certificate[] chain, String authType) throws CertificateException {
|
||||
// Always trust - it is an example.
|
||||
// You should do something in the real world.
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"UNKNOWN SERVER CERTIFICATE: " + chain[0].getSubjectDN());
|
||||
}
|
||||
};
|
||||
|
@ -25,11 +25,16 @@ import io.netty.bootstrap.ClientBootstrap;
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelFuture;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Simplistic telnet client.
|
||||
*/
|
||||
public class TelnetClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(TelnetClient.class);
|
||||
|
||||
private final String host;
|
||||
private final int port;
|
||||
@ -95,7 +100,7 @@ public class TelnetClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length != 2) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + TelnetClient.class.getSimpleName() +
|
||||
" <host> <port>");
|
||||
return;
|
||||
|
@ -15,23 +15,23 @@
|
||||
*/
|
||||
package io.netty.example.telnet;
|
||||
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import io.netty.channel.Channel;
|
||||
import io.netty.channel.ChannelEvent;
|
||||
import io.netty.channel.ChannelHandlerContext;
|
||||
import io.netty.channel.ChannelStateEvent;
|
||||
import io.netty.channel.ExceptionEvent;
|
||||
import io.netty.channel.MessageEvent;
|
||||
import io.netty.channel.SimpleChannelUpstreamHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Handles a client-side channel.
|
||||
*/
|
||||
public class TelnetClientHandler extends SimpleChannelUpstreamHandler {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(
|
||||
TelnetClientHandler.class.getName());
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(TelnetClientHandler.class);
|
||||
|
||||
@Override
|
||||
public void handleUpstream(
|
||||
@ -46,14 +46,13 @@ public class TelnetClientHandler extends SimpleChannelUpstreamHandler {
|
||||
public void messageReceived(
|
||||
ChannelHandlerContext ctx, MessageEvent e) {
|
||||
// Print out the line received from the server.
|
||||
System.err.println(e.getMessage());
|
||||
logger.info((String) e.getMessage());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void exceptionCaught(
|
||||
ChannelHandlerContext ctx, ExceptionEvent e) {
|
||||
logger.log(
|
||||
Level.WARNING,
|
||||
logger.warn(
|
||||
"Unexpected exception from downstream.",
|
||||
e.getCause());
|
||||
e.getChannel().close();
|
||||
|
@ -25,6 +25,8 @@ import io.netty.channel.ChannelPipelineFactory;
|
||||
import io.netty.channel.Channels;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.handler.timeout.ReadTimeoutHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.util.HashedWheelTimer;
|
||||
import io.netty.util.Timer;
|
||||
|
||||
@ -35,6 +37,9 @@ import io.netty.util.Timer;
|
||||
* mechanism in Netty.
|
||||
*/
|
||||
public class UptimeClient {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(UptimeClient.class);
|
||||
|
||||
// Sleep 5 seconds before a reconnection attempt.
|
||||
static final int RECONNECT_DELAY = 5;
|
||||
@ -84,7 +89,7 @@ public class UptimeClient {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// Print usage if no argument is specified.
|
||||
if (args.length != 2) {
|
||||
System.err.println(
|
||||
logger.error(
|
||||
"Usage: " + UptimeClient.class.getSimpleName() +
|
||||
" <host> <port>");
|
||||
return;
|
||||
|
@ -28,8 +28,6 @@ import java.util.concurrent.TimeUnit;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import io.netty.bootstrap.ClientBootstrap;
|
||||
import io.netty.bootstrap.ServerBootstrap;
|
||||
@ -51,6 +49,8 @@ import io.netty.channel.socket.ServerSocketChannelFactory;
|
||||
import io.netty.channel.socket.SocketChannel;
|
||||
import io.netty.channel.socket.nio.NioClientSocketChannelFactory;
|
||||
import io.netty.channel.socket.nio.NioServerSocketChannelFactory;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
/**
|
||||
* Tests HTTP tunnel soaking
|
||||
@ -59,8 +59,8 @@ public class HttpTunnelSoakTester {
|
||||
|
||||
private static final int SERVER_PORT = 20100;
|
||||
|
||||
static final Logger LOG = Logger.getLogger(HttpTunnelSoakTester.class
|
||||
.getName());
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(HttpTunnelSoakTester.class);
|
||||
|
||||
private static final long BYTES_TO_SEND = 1024 * 1024 * 1024;
|
||||
|
||||
@ -127,15 +127,14 @@ public class HttpTunnelSoakTester {
|
||||
clientBootstrap.setOption(
|
||||
HttpTunnelClientChannelConfig.PROXY_ADDRESS_OPTION,
|
||||
proxyAddress);
|
||||
System.out.println("Using " + proxyAddress +
|
||||
logger.info("Using " + proxyAddress +
|
||||
" as a proxy for this test run");
|
||||
} else {
|
||||
System.err.println("Failed to resolve proxy address " +
|
||||
logger.error("Failed to resolve proxy address " +
|
||||
proxyAddress);
|
||||
}
|
||||
} else {
|
||||
System.out
|
||||
.println("No proxy specified, will connect to server directly");
|
||||
logger.info("No proxy specified, will connect to server directly");
|
||||
}
|
||||
}
|
||||
|
||||
@ -197,16 +196,16 @@ public class HttpTunnelSoakTester {
|
||||
}
|
||||
|
||||
public void run() throws InterruptedException {
|
||||
LOG.info("binding server channel");
|
||||
logger.info("binding server channel");
|
||||
Channel serverChannel =
|
||||
serverBootstrap.bind(new InetSocketAddress(SERVER_PORT));
|
||||
channels.add(serverChannel);
|
||||
LOG.log(Level.INFO, "server channel bound to {0}",
|
||||
serverChannel.getLocalAddress());
|
||||
logger.info(String.format("server channel bound to {0}",
|
||||
serverChannel.getLocalAddress()));
|
||||
|
||||
SocketChannel clientChannel = createClientChannel();
|
||||
if (clientChannel == null) {
|
||||
LOG.severe("no client channel - bailing out");
|
||||
logger.error("no client channel - bailing out");
|
||||
return;
|
||||
}
|
||||
|
||||
@ -216,37 +215,37 @@ public class HttpTunnelSoakTester {
|
||||
executor.execute(c2sDataSender);
|
||||
|
||||
if (!c2sDataSender.waitForFinish(5, TimeUnit.MINUTES)) {
|
||||
LOG.severe("Data send from client to server failed");
|
||||
logger.error("Data send from client to server failed");
|
||||
}
|
||||
|
||||
if (!s2cDataSender.waitForFinish(5, TimeUnit.MINUTES)) {
|
||||
LOG.severe("Data send from server to client failed");
|
||||
logger.error("Data send from server to client failed");
|
||||
}
|
||||
|
||||
LOG.log(Level.INFO, "Waiting for verification to complete");
|
||||
logger.info("Waiting for verification to complete");
|
||||
if (!c2sVerifier.waitForCompletion(30L, TimeUnit.SECONDS)) {
|
||||
LOG.warning("Timed out waiting for verification of client-to-server stream");
|
||||
logger.warn("Timed out waiting for verification of client-to-server stream");
|
||||
}
|
||||
|
||||
if (!s2cVerifier.waitForCompletion(30L, TimeUnit.SECONDS)) {
|
||||
LOG.warning("Timed out waiting for verification of server-to-client stream");
|
||||
logger.warn("Timed out waiting for verification of server-to-client stream");
|
||||
}
|
||||
|
||||
LOG.info("closing client channel");
|
||||
logger.info("closing client channel");
|
||||
closeChannel(clientChannel);
|
||||
LOG.info("server channel status: " +
|
||||
logger.info("server channel status: " +
|
||||
(serverChannel.isOpen()? "open" : "closed"));
|
||||
LOG.info("closing server channel");
|
||||
logger.info("closing server channel");
|
||||
closeChannel(serverChannel);
|
||||
}
|
||||
|
||||
private void closeChannel(Channel channel) {
|
||||
try {
|
||||
if (!channel.close().await(5L, TimeUnit.SECONDS)) {
|
||||
LOG.warning("Failed to close connection within reasonable amount of time");
|
||||
logger.warn("Failed to close connection within reasonable amount of time");
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
LOG.severe("Interrupted while closing connection");
|
||||
logger.error("Interrupted while closing connection");
|
||||
}
|
||||
|
||||
}
|
||||
@ -258,16 +257,16 @@ public class HttpTunnelSoakTester {
|
||||
clientBootstrap.connect(serverAddress);
|
||||
try {
|
||||
if (!clientChannelFuture.await(1000, TimeUnit.MILLISECONDS)) {
|
||||
LOG.severe("did not connect within acceptable time period");
|
||||
logger.error("did not connect within acceptable time period");
|
||||
return null;
|
||||
}
|
||||
} catch (InterruptedException e) {
|
||||
LOG.severe("Interrupted while waiting for client connect to be established");
|
||||
logger.error("Interrupted while waiting for client connect to be established");
|
||||
return null;
|
||||
}
|
||||
|
||||
if (!clientChannelFuture.isSuccess()) {
|
||||
LOG.log(Level.SEVERE, "did not connect successfully",
|
||||
logger.error("did not connect successfully",
|
||||
clientChannelFuture.getCause());
|
||||
return null;
|
||||
}
|
||||
@ -331,9 +330,9 @@ public class HttpTunnelSoakTester {
|
||||
while (bytesToVerify.readable()) {
|
||||
byte readByte = bytesToVerify.readByte();
|
||||
if (readByte != expectedNext) {
|
||||
LOG.log(Level.SEVERE,
|
||||
logger.error(String.format(
|
||||
"{0}: received a byte out of sequence. Expected {1}, got {2}",
|
||||
new Object[] { name, expectedNext, readByte });
|
||||
new Object[] { name, expectedNext, readByte }));
|
||||
System.exit(-1);
|
||||
return;
|
||||
}
|
||||
@ -416,20 +415,20 @@ public class HttpTunnelSoakTester {
|
||||
@Override
|
||||
public void run() {
|
||||
if (!running.compareAndSet(false, true)) {
|
||||
LOG.log(Level.WARNING,
|
||||
"{0}: Attempt made to run duplicate sender!", name);
|
||||
logger.warn(String.format(
|
||||
"{0}: Attempt made to run duplicate sender!", name));
|
||||
return;
|
||||
}
|
||||
|
||||
if (finishLatch.getCount() == 0) {
|
||||
LOG.log(Level.SEVERE,
|
||||
"{0}: Attempt made to run after completion!", name);
|
||||
logger.error(String.format(
|
||||
"{0}: Attempt made to run after completion!", name));
|
||||
}
|
||||
|
||||
if (firstRun) {
|
||||
firstRun = false;
|
||||
runStartTime = System.currentTimeMillis();
|
||||
LOG.log(Level.INFO, "{0}: sending data", name);
|
||||
logger.info(String.format("{0}: sending data", name));
|
||||
}
|
||||
|
||||
while (totalBytesSent < BYTES_TO_SEND) {
|
||||
@ -447,22 +446,22 @@ public class HttpTunnelSoakTester {
|
||||
|
||||
numWrites ++;
|
||||
if (numWrites % 100 == 0) {
|
||||
LOG.log(Level.INFO,
|
||||
logger.info(String.format(
|
||||
"{0}: {1} writes dispatched, totalling {2} bytes",
|
||||
new Object[] { name, numWrites, totalBytesSent });
|
||||
new Object[] { name, numWrites, totalBytesSent }));
|
||||
}
|
||||
}
|
||||
|
||||
LOG.log(Level.INFO, "{0}: completed send cycle", name);
|
||||
logger.info(String.format("{0}: completed send cycle", name));
|
||||
|
||||
long runEndTime = System.currentTimeMillis();
|
||||
long totalTime = runEndTime - runStartTime;
|
||||
long totalKB = totalBytesSent / 1024;
|
||||
double rate = totalKB / (totalTime / 1000.0);
|
||||
LOG.log(Level.INFO, "{0}: Sent {1} bytes", new Object[] { name,
|
||||
totalBytesSent });
|
||||
LOG.log(Level.INFO, "{0}: Average throughput: {1} KB/s",
|
||||
new Object[] { name, rate });
|
||||
logger.info(String.format("{0}: Sent {1} bytes", new Object[] { name,
|
||||
totalBytesSent }));
|
||||
logger.info(String.format("{0}: Average throughput: {1} KB/s",
|
||||
new Object[] { name, rate }));
|
||||
|
||||
finishLatch.countDown();
|
||||
running.set(false);
|
||||
|
@ -35,6 +35,8 @@ import io.netty.channel.sctp.SctpServerSocketChannelFactory;
|
||||
import io.netty.channel.sctp.codec.SctpFrameDecoder;
|
||||
import io.netty.channel.sctp.codec.SctpFrameEncoder;
|
||||
import io.netty.channel.sctp.handler.SimpleSctpChannelHandler;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
import io.netty.testsuite.util.SctpTestUtil;
|
||||
import io.netty.util.internal.ExecutorUtil;
|
||||
|
||||
@ -53,6 +55,10 @@ import org.junit.BeforeClass;
|
||||
import org.junit.Test;
|
||||
|
||||
public class SctpMultiHomingEchoTest {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(SctpMultiHomingEchoTest.class);
|
||||
|
||||
private static final Random random = new Random();
|
||||
static final byte[] data = new byte[4096];//could not test ultra jumbo frames
|
||||
|
||||
@ -228,7 +234,7 @@ public class SctpMultiHomingEchoTest {
|
||||
|
||||
@Override
|
||||
public void sctpNotificationReceived(ChannelHandlerContext ctx, SctpNotificationEvent event) {
|
||||
System.out.println("SCTP notification event received :" + event);
|
||||
logger.info("SCTP notification event received :" + event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -432,11 +432,10 @@ final class NioProviderMetadata {
|
||||
|
||||
public static void main(String[] args) throws Exception {
|
||||
for (Entry<Object, Object> e: System.getProperties().entrySet()) {
|
||||
System.out.println(e.getKey() + ": " + e.getValue());
|
||||
logger.debug(e.getKey() + ": " + e.getValue());
|
||||
}
|
||||
System.out.println();
|
||||
System.out.println("Hard-coded Constraint Level: " + CONSTRAINT_LEVEL);
|
||||
System.out.println(
|
||||
logger.debug("Hard-coded Constraint Level: " + CONSTRAINT_LEVEL);
|
||||
logger.debug(
|
||||
"Auto-detected Constraint Level: " +
|
||||
new ConstraintLevelAutodetector().autodetect());
|
||||
}
|
||||
|
@ -31,8 +31,14 @@ import io.netty.channel.SimpleChannelUpstreamHandler;
|
||||
import io.netty.channel.local.DefaultLocalClientChannelFactory;
|
||||
import io.netty.channel.local.DefaultLocalServerChannelFactory;
|
||||
import io.netty.channel.local.LocalAddress;
|
||||
import io.netty.logging.InternalLogger;
|
||||
import io.netty.logging.InternalLoggerFactory;
|
||||
|
||||
public class LocalAddressTest {
|
||||
|
||||
private static final InternalLogger logger =
|
||||
InternalLoggerFactory.getInstance(LocalAddressTest.class);
|
||||
|
||||
private static String LOCAL_ADDR_ID = "test.id";
|
||||
|
||||
@Test
|
||||
@ -157,7 +163,7 @@ public class LocalAddressTest {
|
||||
ChannelEvent e)
|
||||
throws Exception {
|
||||
|
||||
System.err.println(String.format("Received upstream event '%s'", e));
|
||||
logger.info(String.format("Received upstream event '%s'", e));
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user