1 /*** 2 * 3 * Copyright 2004 Hiram Chirino 4 * 5 * Licensed under the Apache License, Version 2.0 (the "License"); 6 * you may not use this file except in compliance with the License. 7 * You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 * 17 **/ 18 package org.activeio; 19 20 import java.io.IOException; 21 import java.net.URISyntaxException; 22 23 import junit.framework.TestCase; 24 25 import org.activeio.packet.ByteArrayPacket; 26 import org.activeio.packet.EOSPacket; 27 28 /*** 29 */ 30 abstract public class ChannelRequestTestSupport extends TestCase implements RequestListener { 31 32 private ChannelServer server; 33 34 public void test() throws IOException { 35 final RequestChannel channel = createClientRequestChannel(); 36 try { 37 channel.start(); 38 sendRequest(channel, 1001); 39 sendRequest(channel, 1002); 40 sendRequest(channel, 1003); 41 sendRequest(channel, 1004); 42 sendRequest(channel, 1005); 43 } finally { 44 channel.dispose(); 45 } 46 } 47 48 private void sendRequest(final RequestChannel channel, int packetSize) throws IOException { 49 Packet request = new ByteArrayPacket(fill(new byte[packetSize],(byte)1)); 50 Packet response = channel.request(request, 1000 * 30*1000); 51 assertNotNull(response); 52 assertEquals(packetSize, response.remaining()); 53 } 54 55 private byte[] fill(byte[] bs, byte b) { 56 for (int i = 0; i < bs.length; i++) { 57 bs[i] = b; 58 } 59 return bs; 60 } 61 62 public Packet onRequest(Packet request) { 63 return new ByteArrayPacket(fill(new byte[request.remaining()],(byte)2)); 64 } 65 66 public void onRquestError(IOException error) { 67 error.printStackTrace(); 68 } 69 70 protected void setUp() throws Exception { 71 server = createChannelServer(this); 72 server.start(); 73 } 74 75 protected void tearDown() throws Exception { 76 server.dispose(); 77 } 78 79 abstract protected RequestChannel createClientRequestChannel() throws IOException; 80 abstract protected ChannelServer createChannelServer(final RequestListener requestListener) throws IOException, URISyntaxException;}