| /** |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package org.apache.avro.ipc; |
| |
| import static org.junit.Assert.assertEquals; |
| |
| import java.io.IOException; |
| import java.net.InetSocketAddress; |
| import java.security.KeyStore; |
| import java.security.Security; |
| import java.security.cert.X509Certificate; |
| import java.util.concurrent.CountDownLatch; |
| import java.util.concurrent.Executors; |
| import java.util.concurrent.TimeUnit; |
| |
| import junit.framework.Assert; |
| |
| import org.apache.avro.ipc.specific.SpecificRequestor; |
| import org.apache.avro.ipc.specific.SpecificResponder; |
| import org.apache.avro.test.Mail; |
| import org.apache.avro.test.Message; |
| import org.jboss.netty.channel.ChannelFactory; |
| import org.jboss.netty.channel.ChannelPipeline; |
| import org.jboss.netty.channel.ChannelPipelineFactory; |
| import org.jboss.netty.channel.Channels; |
| import org.jboss.netty.channel.socket.SocketChannel; |
| import org.jboss.netty.channel.socket.nio.NioClientSocketChannelFactory; |
| import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory; |
| import org.jboss.netty.handler.codec.compression.ZlibDecoder; |
| import org.jboss.netty.handler.codec.compression.ZlibEncoder; |
| import org.junit.AfterClass; |
| import static org.junit.Assert.assertEquals; |
| import org.junit.BeforeClass; |
| import org.junit.Test; |
| |
| public class TestNettyServerWithCompression extends TestNettyServer{ |
| |
| |
| protected static Server initializeServer(Responder responder) { |
| ChannelFactory channelFactory = new NioServerSocketChannelFactory( |
| Executors.newCachedThreadPool(), |
| Executors.newCachedThreadPool() |
| ); |
| return new NettyServer(responder, new InetSocketAddress(0), |
| channelFactory, new CompressionChannelPipelineFactory(), |
| null); |
| } |
| |
| protected static Transceiver initializeTransceiver(int serverPort) throws IOException { |
| return new NettyTransceiver(new InetSocketAddress(serverPort), |
| new CompressionChannelFactory(), |
| CONNECT_TIMEOUT_MILLIS); |
| } |
| |
| |
| /** |
| * Factory of Compression-enabled client channels |
| */ |
| private static class CompressionChannelFactory extends NioClientSocketChannelFactory { |
| public CompressionChannelFactory() { |
| super(Executors.newCachedThreadPool(), Executors.newCachedThreadPool()); |
| } |
| |
| @Override |
| public SocketChannel newChannel(ChannelPipeline pipeline) { |
| try { |
| ZlibEncoder encoder = new ZlibEncoder(6); |
| pipeline.addFirst("deflater", encoder); |
| pipeline.addFirst("inflater", new ZlibDecoder()); |
| return super.newChannel(pipeline); |
| } catch (Exception ex) { |
| throw new RuntimeException("Cannot create Compression channel", ex); |
| } |
| } |
| } |
| |
| |
| |
| /** |
| * Factory of Compression-enabled server worker channel pipelines |
| */ |
| private static class CompressionChannelPipelineFactory |
| implements ChannelPipelineFactory { |
| |
| @Override |
| public ChannelPipeline getPipeline() throws Exception { |
| ChannelPipeline pipeline = Channels.pipeline(); |
| ZlibEncoder encoder = new ZlibEncoder(6); |
| pipeline.addFirst("deflater", encoder); |
| pipeline.addFirst("inflater", new ZlibDecoder()); |
| return pipeline; |
| } |
| } |
| } |