You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by ac...@apache.org on 2017/01/09 15:24:43 UTC

[07/34] qpid-proton git commit: PROTON-1385: remove proton-j from the existing repo, it now has its own repo at: https://git-wip-us.apache.org/repos/asf/qpid-proton-j.git

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java
deleted file mode 100644
index 10a64d4..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/CapitalisingDummySslEngine.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- *
- * 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.qpid.proton.engine.impl.ssl;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-
-import java.nio.ByteBuffer;
-
-import javax.net.ssl.SSLEngineResult;
-import javax.net.ssl.SSLEngineResult.HandshakeStatus;
-import javax.net.ssl.SSLEngineResult.Status;
-import javax.net.ssl.SSLException;
-
-
-
-/**
- * A simpler implementation of an SSLEngine that has predictable human-readable output, and that allows us to
- * easily trigger {@link Status#BUFFER_OVERFLOW} and {@link Status#BUFFER_UNDERFLOW}.
- *
- * Using a true SSLEngine for this would be impractical.
- */
-public class CapitalisingDummySslEngine implements ProtonSslEngine
-{
-    static final int SHORT_ENCODED_CHUNK_SIZE = 2;
-    static final int MAX_ENCODED_CHUNK_SIZE = 5;
-    private static final char ENCODED_TEXT_BEGIN = '<';
-    private static final char ENCODED_TEXT_END = '>';
-    private static final char ENCODED_TEXT_INNER_CHAR = '-';
-
-    private static final int CLEAR_CHUNK_SIZE = 2;
-    private static final char CLEARTEXT_PADDING = '_';
-    private SSLException _nextException;
-    private int _applicationBufferSize = CLEAR_CHUNK_SIZE;
-    private int _packetBufferSize = MAX_ENCODED_CHUNK_SIZE;
-    private int _unwrapCount;
-
-    /**
-     * Converts a_ to <-A->.  z_ is special and encodes as <> (to give us packets of different lengths).
-     * If dst is not sufficiently large ({@value #SHORT_ENCODED_CHUNK_SIZE} in our encoding), we return
-     * {@link Status#BUFFER_OVERFLOW}, and the src and dst ByteBuffers are unchanged.
-     */
-    @Override
-    public SSLEngineResult wrap(ByteBuffer src, ByteBuffer dst)
-            throws SSLException
-    {
-        int consumed = 0;
-        int produced = 0;
-        final Status resultStatus;
-
-        if (src.remaining() >= CLEAR_CHUNK_SIZE)
-        {
-            src.mark();
-
-            char uncapitalisedChar = (char) src.get();
-            char underscore = (char) src.get();
-
-            validateClear(uncapitalisedChar, underscore);
-
-            boolean useShortEncoding = uncapitalisedChar == 'z';
-            int encodingLength = useShortEncoding ? SHORT_ENCODED_CHUNK_SIZE : MAX_ENCODED_CHUNK_SIZE;
-            boolean overflow = dst.remaining() < encodingLength;
-
-            if (overflow)
-            {
-                src.reset();
-                resultStatus = Status.BUFFER_OVERFLOW;
-            }
-            else
-            {
-                consumed = CLEAR_CHUNK_SIZE;
-
-                char capitalisedChar = Character.toUpperCase(uncapitalisedChar);
-
-                dst.put((byte)ENCODED_TEXT_BEGIN);
-                if (!useShortEncoding)
-                {
-                    dst.put((byte)ENCODED_TEXT_INNER_CHAR);
-                    dst.put((byte)capitalisedChar);
-                    dst.put((byte)ENCODED_TEXT_INNER_CHAR);
-                }
-                dst.put((byte)ENCODED_TEXT_END);
-                produced = encodingLength;
-
-                resultStatus = Status.OK;
-            }
-        }
-        else
-        {
-            resultStatus = Status.OK;
-        }
-
-        return new SSLEngineResult(resultStatus, HandshakeStatus.NOT_HANDSHAKING, consumed, produced);
-    }
-
-    /**
-     * Converts <-A-><-B-><-C-> to a_. <> is special and decodes as z_
-     * Input such as "<A" will causes a {@link Status#BUFFER_UNDERFLOW} result status.
-     */
-    @Override
-    public SSLEngineResult unwrap(ByteBuffer src, ByteBuffer dst)
-            throws SSLException
-    {
-        _unwrapCount++;
-
-        if(_nextException != null)
-        {
-            throw _nextException;
-        }
-
-        Status resultStatus;
-        final int consumed;
-        final int produced;
-
-        if (src.remaining() >= SHORT_ENCODED_CHUNK_SIZE)
-        {
-            src.mark();
-
-            char begin = (char)src.get();
-            char nextChar = (char)src.get(); // Could be - or >
-            final int readSoFar = 2;
-            final char capitalisedChar;
-
-            if (nextChar != ENCODED_TEXT_END)
-            {
-                int remainingBytesForMaxLengthPacket = MAX_ENCODED_CHUNK_SIZE - readSoFar;
-                if (src.remaining() < remainingBytesForMaxLengthPacket )
-                {
-                    src.reset();
-                    resultStatus = Status.BUFFER_UNDERFLOW;
-                    return new SSLEngineResult(resultStatus, HandshakeStatus.NOT_HANDSHAKING, 0, 0);
-                }
-                else
-                {
-                    char beginInner = nextChar;
-                    capitalisedChar = (char)src.get();
-                    char endInner = (char)src.get();
-                    char end = (char)src.get();
-                    consumed = MAX_ENCODED_CHUNK_SIZE;
-                    validateEncoded(begin, beginInner, capitalisedChar, endInner, end);
-                }
-            }
-            else
-            {
-                assertEquals("Unexpected begin", Character.toString(ENCODED_TEXT_BEGIN), Character.toString(begin));
-                capitalisedChar = 'Z';
-                consumed = SHORT_ENCODED_CHUNK_SIZE;;
-            }
-
-            char lowerCaseChar = Character.toLowerCase(capitalisedChar);
-            dst.put((byte)lowerCaseChar);
-            dst.put((byte)CLEARTEXT_PADDING);
-            produced = CLEAR_CHUNK_SIZE;
-
-            resultStatus = Status.OK;
-        }
-        else
-        {
-            resultStatus = Status.BUFFER_UNDERFLOW;
-            consumed = 0;
-            produced = 0;
-        }
-
-        return new SSLEngineResult(resultStatus, HandshakeStatus.NOT_HANDSHAKING, consumed, produced);
-    }
-
-    @Override
-    public int getEffectiveApplicationBufferSize()
-    {
-        return getApplicationBufferSize();
-    }
-
-    private int getApplicationBufferSize()
-    {
-        return _applicationBufferSize;
-    }
-
-    @Override
-    public int getPacketBufferSize()
-    {
-        return _packetBufferSize;
-    }
-
-    public void setApplicationBufferSize(int value)
-    {
-        _applicationBufferSize = value;
-    }
-
-    public void setPacketBufferSize(int value)
-    {
-        _packetBufferSize = value;
-    }
-
-    @Override
-    public String getProtocol()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public HandshakeStatus getHandshakeStatus()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Runnable getDelegatedTask()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getCipherSuite()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-
-    private void validateEncoded(char begin, char beginInner, char capitalisedChar, char endInner, char end)
-    {
-        assertEquals("Unexpected begin", Character.toString(ENCODED_TEXT_BEGIN), Character.toString(begin));
-        assertEquals("Unexpected begin inner", Character.toString(ENCODED_TEXT_INNER_CHAR), Character.toString(beginInner));
-        assertEquals("Unexpected end inner", Character.toString(ENCODED_TEXT_INNER_CHAR), Character.toString(endInner));
-        assertEquals("Unexpected end", Character.toString(ENCODED_TEXT_END), Character.toString(end));
-        assertTrue("Encoded character " + capitalisedChar + " must be capital", Character.isUpperCase(capitalisedChar));
-    }
-
-    private void validateClear(char uncapitalisedChar, char underscore)
-    {
-        assertTrue("Clear text character " + uncapitalisedChar + " must be lowercase", Character.isLowerCase(uncapitalisedChar));
-        assertEquals("Unexpected clear text pad", Character.toString(CLEARTEXT_PADDING), Character.toString(underscore));
-    }
-
-    @Override
-    public boolean getUseClientMode()
-    {
-        return true;
-    }
-
-    public void rejectNextEncodedPacket(SSLException nextException)
-    {
-        _nextException = nextException;
-    }
-
-    int getUnwrapCount() {
-        return _unwrapCount;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java
deleted file mode 100644
index 366feb3..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/RememberingTransportInput.java
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- *
- * 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.qpid.proton.engine.impl.ssl;
-
-import java.nio.ByteBuffer;
-
-import org.apache.qpid.proton.engine.TransportException;
-import org.apache.qpid.proton.engine.impl.TransportInput;
-
-class RememberingTransportInput implements TransportInput
-{
-    private StringBuilder _receivedInput = new StringBuilder();
-    private String _nextError;
-    private int _inputBufferSize = 1024;
-    private ByteBuffer _buffer;
-    private int _processCount = 0;
-    private Integer _zeroCapacityAtCount = null;
-    private int _capacityCount = 0;
-
-    String getAcceptedInput()
-    {
-        return _receivedInput.toString();
-    }
-
-    @Override
-    public String toString()
-    {
-        return "[RememberingTransportInput receivedInput (length " + _receivedInput.length() + ") is:" + _receivedInput.toString() + "]";
-    }
-
-    @Override
-    public int capacity()
-    {
-        initIntermediateBuffer();
-
-        _capacityCount++;
-        if(_zeroCapacityAtCount != null && _capacityCount >= _zeroCapacityAtCount) {
-            return 0;
-        }
-
-        return _buffer.remaining();
-    }
-
-    @Override
-    public int position()
-    {
-        initIntermediateBuffer();
-        return _buffer.position();
-    }
-
-    @Override
-    public ByteBuffer tail()
-    {
-        initIntermediateBuffer();
-        return _buffer;
-    }
-
-    @Override
-    public void process() throws TransportException
-    {
-        _processCount++;
-
-        initIntermediateBuffer();
-
-        if(_nextError != null)
-        {
-            throw new TransportException(_nextError);
-        }
-
-        _buffer.flip();
-        byte[] receivedInputBuffer = new byte[_buffer.remaining()];
-        _buffer.get(receivedInputBuffer);
-        _buffer.compact();
-        _receivedInput.append(new String(receivedInputBuffer));
-    }
-
-    @Override
-    public void close_tail()
-    {
-        // do nothing
-    }
-
-    public void rejectNextInput(String nextError)
-    {
-        _nextError = nextError;
-    }
-
-    /**
-     * If called before the object is otherwise used, the intermediate input buffer will be
-     * initiated to the given size. If called after use, an ISE will be thrown.
-     *
-     * @param inputBufferSize size of the intermediate input buffer
-     * @throws IllegalStateException if the buffer was already initialised
-     */
-    public void setInputBufferSize(int inputBufferSize) throws IllegalStateException
-    {
-        if (_buffer != null)
-        {
-            throw new IllegalStateException("Intermediate input buffer already initialised");
-        }
-
-        _inputBufferSize = inputBufferSize;
-    }
-
-    private void initIntermediateBuffer()
-    {
-        if (_buffer == null)
-        {
-            _buffer = ByteBuffer.allocate(_inputBufferSize);
-        }
-    }
-
-    int getProcessCount()
-    {
-        return _processCount;
-    }
-
-    int getCapacityCount()
-    {
-        return _capacityCount;
-    }
-
-    /**
-     * Sets a point at which calls to capacity will return 0 regardless of the actual buffer state.
-     *
-     * @param zeroCapacityAtCount number of calls to capacity at which zero starts being returned.
-     */
-    void setZeroCapacityAtCount(Integer zeroCapacityAtCount)
-    {
-        if(zeroCapacityAtCount != null && zeroCapacityAtCount < 1) {
-            throw new IllegalArgumentException("Value must be null, or at least 1");
-        }
-        _zeroCapacityAtCount = zeroCapacityAtCount;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java
deleted file mode 100644
index 6ee1582..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SimpleSslTransportWrapperTest.java
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- *
- * 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.qpid.proton.engine.impl.ssl;
-
-import static org.apache.qpid.proton.engine.impl.ByteBufferUtils.pour;
-import static org.apache.qpid.proton.engine.impl.TransportTestHelper.assertByteBufferContentEquals;
-import static org.apache.qpid.proton.engine.impl.TransportTestHelper.pourBufferToString;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.nio.ByteBuffer;
-import java.nio.charset.StandardCharsets;
-
-import javax.net.ssl.SSLException;
-
-import org.apache.qpid.proton.engine.Transport;
-import org.apache.qpid.proton.engine.TransportException;
-import org.junit.Before;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-/**
- * TODO unit test handshaking
- * TODO unit test closing
- * TODO unit test graceful handling of SSLEngine.wrap throwing an SSLException
- */
-public class SimpleSslTransportWrapperTest
-{
-    private RememberingTransportInput _underlyingInput;
-    private CannedTransportOutput _underlyingOutput;
-    private SimpleSslTransportWrapper _sslWrapper;
-    private CapitalisingDummySslEngine _dummySslEngine;
-
-    @Rule
-    public ExpectedException _expectedException = ExpectedException.none();
-
-    @Before
-    public void setUp()
-    {
-        _underlyingInput = new RememberingTransportInput();
-        _underlyingOutput = new CannedTransportOutput();
-        _dummySslEngine = new CapitalisingDummySslEngine();
-        _sslWrapper = new SimpleSslTransportWrapper(_dummySslEngine, _underlyingInput, _underlyingOutput);
-    }
-
-    @Test
-    public void testInputDecodesOnePacket()
-    {
-        String encodedBytes = "<-A->";
-
-        putBytesIntoTransport(encodedBytes);
-
-        assertEquals("a_", _underlyingInput.getAcceptedInput());
-        assertEquals(CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE, _sslWrapper.capacity());
-        assertEquals(2, _dummySslEngine.getUnwrapCount());// 1 packet, 1 underflow
-        assertEquals(1, _underlyingInput.getProcessCount());
-    }
-
-    /**
-     * Note that this only feeds 1 encoded packet in at a time due to default settings of the dummy engine,
-     * See {@link #testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInputRequiringMultipleUnwraps}
-     * for a related test that passes multiple encoded packets into the ssl wrapper at once.
-     */
-    @Test
-    public void testInputWithMultiplePackets()
-    {
-        String encodedBytes = "<-A-><-B-><-C-><>";
-
-        putBytesIntoTransport(encodedBytes);
-
-        assertEquals("a_b_c_z_", _underlyingInput.getAcceptedInput());
-        assertEquals(CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE, _sslWrapper.capacity());
-        assertEquals(8, _dummySslEngine.getUnwrapCount()); // (1 decode + 1 underflow) * 4 packets
-        assertEquals(4, _underlyingInput.getProcessCount()); // 1 process per decoded packet
-    }
-
-    @Test
-    public void testInputIncompletePacket_isNotPassedToUnderlyingInputUntilCompleted()
-    {
-        String incompleteEncodedBytes = "<-A-><-B-><-C"; // missing the trailing '>' to cause the underflow
-        String remainingEncodedBytes = "-><-D->";
-
-        putBytesIntoTransport(incompleteEncodedBytes);
-        assertEquals("a_b_", _underlyingInput.getAcceptedInput());
-        assertEquals(5, _dummySslEngine.getUnwrapCount()); // 2 * (1 decode + 1 underflow) + 1 underflow
-        assertEquals(2, _underlyingInput.getProcessCount()); // 1 process per decoded packet
-
-        putBytesIntoTransport(remainingEncodedBytes);
-        assertEquals("a_b_c_d_", _underlyingInput.getAcceptedInput());
-        assertEquals(4, _underlyingInput.getProcessCount()); // earlier + 2
-        assertEquals(9, _dummySslEngine.getUnwrapCount()); // Earlier + 2 * (1 decode + 1 underflow)
-                                                           // due to way the bytes are fed in across
-                                                           // boundary of encoded packets
-    }
-
-    /**
-     * As per {@link #testInputIncompletePacket_isNotPassedToUnderlyingInputUntilCompleted()}
-     * but this time it takes TWO chunks to complete the "dangling" packet.
-     */
-    @Test
-    public void testInputIncompletePacketInThreeParts()
-    {
-        String firstEncodedBytes = "<-A-><-B-><-";
-        String secondEncodedBytes = "C"; // Sending this causes the impl to have to hold the data without producing more input yet
-        String thirdEncodedBytes = "-><-D->";
-
-        putBytesIntoTransport(firstEncodedBytes);
-        assertEquals("a_b_", _underlyingInput.getAcceptedInput());
-        assertEquals(5, _dummySslEngine.getUnwrapCount()); // 2 * (1 decode + 1 underflow) + 1 underflow
-        assertEquals(2, _underlyingInput.getProcessCount()); // 1 process per decoded packet
-
-        putBytesIntoTransport(secondEncodedBytes);
-        assertEquals("a_b_", _underlyingInput.getAcceptedInput());
-        assertEquals(6, _dummySslEngine.getUnwrapCount()); // earlier + 1 underflow
-        assertEquals(2, _underlyingInput.getProcessCount()); // as earlier
-
-        putBytesIntoTransport(thirdEncodedBytes);
-        assertEquals("a_b_c_d_", _underlyingInput.getAcceptedInput());
-        assertEquals(4, _underlyingInput.getProcessCount()); // 1 process per decoded packet
-        assertEquals(10, _dummySslEngine.getUnwrapCount()); // Earlier + (decode + underflow) * 2
-                                                           // due to way the bytes are fed in across
-                                                           // boundary of encoded packets
-    }
-
-    /**
-     * Tests that when a small underlying input buffer (1 byte here) is used, all of the encoded
-     * data packet (5 bytes each here) can be processed despite multiple attempts being required to
-     * pass the decoded bytes (2 bytes here) to the underlying input layer for processing.
-     */
-    @Test
-    public void testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInputRequiringMultipleUnderlyingProcesses()
-    {
-        int underlyingInputBufferSize = 1;
-        int encodedPacketSize = 5;
-
-        _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
-        assertEquals("Unexpected underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
-
-        assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
-
-        byte[] bytes = "<-A-><-B->".getBytes(StandardCharsets.UTF_8);
-        ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
-
-        assertEquals("Unexpected initial capacity", encodedPacketSize, _sslWrapper.capacity());
-
-        // Process the first 'encoded packet' (<-A->)
-        int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
-        assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
-        assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 1, encodedByteSource.position());
-        assertEquals("Unexpected capacity", 0, _sslWrapper.capacity());
-        _sslWrapper.process();
-        assertEquals("Unexpected capacity", encodedPacketSize, _sslWrapper.capacity());
-
-        assertEquals("unexpected underlying output after first wrapper process", "a_", _underlyingInput.getAcceptedInput());
-        assertEquals("unexpected underlying process count after first wrapper process", 2 , _underlyingInput.getProcessCount());
-
-        // Process the second 'encoded packet' (<-B->)
-        numberPoured = pour(encodedByteSource, _sslWrapper.tail());
-        assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
-        assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 2, encodedByteSource.position());
-        assertEquals("Unexpected capacity", 0, _sslWrapper.capacity());
-        _sslWrapper.process();
-        assertEquals("Unexpected capacity", encodedPacketSize, _sslWrapper.capacity());
-
-        assertEquals("unexpected underlying output after second wrapper process", "a_b_", _underlyingInput.getAcceptedInput());
-        assertEquals("unexpected underlying process count after second wrapper process", 4 , _underlyingInput.getProcessCount());
-    }
-
-    /**
-     * Tests that when a small underlying input buffer (1 byte here) is used, all of the encoded
-     * data packets (20 bytes total here) can be processed despite multiple unwraps being required
-     * to process a given set of input (3 packets, 15 bytes here) and then as a result also multiple
-     * attempts to pass the decoded packet (2 bytes here) to the underlying input layer for processing.
-     */
-    @Test
-    public void testUnderlyingInputUsingSmallBuffer_receivesAllDecodedInputRequiringMultipleUnwraps()
-    {
-        int underlyingInputBufferSize = 1;
-        int encodedPacketSize = 5;
-        int sslEngineBufferSize = 15;
-
-        assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
-
-        _underlyingOutput = new CannedTransportOutput();
-        _underlyingInput = new RememberingTransportInput();
-        _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
-        assertEquals("Unexpected underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
-
-        // Create a dummy ssl engine that has buffers that holds multiple encoded/decoded
-        // packets, but still can't fit all of the input
-        _dummySslEngine = new CapitalisingDummySslEngine();
-        _dummySslEngine.setApplicationBufferSize(sslEngineBufferSize);
-        _dummySslEngine.setPacketBufferSize(sslEngineBufferSize);
-
-        _sslWrapper = new SimpleSslTransportWrapper(_dummySslEngine, _underlyingInput, _underlyingOutput);
-
-        byte[] bytes = "<-A-><-B-><-C-><-D->".getBytes(StandardCharsets.UTF_8);
-        ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
-
-        assertEquals("Unexpected initial capacity", sslEngineBufferSize, _sslWrapper.capacity());
-
-        // Process the first three 'encoded packets' (<-A-><-B-><-C->). This will require 3 'proper' unwraps, and
-        // as each decoded packet is 2 bytes, each of those will require 2 underlying input processes.
-        int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
-        assertEquals("Unexpected number of bytes poured into the wrapper input buffer", sslEngineBufferSize, numberPoured);
-        assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 3, encodedByteSource.position());
-        assertEquals("Unexpected capacity", 0, _sslWrapper.capacity());
-
-        _sslWrapper.process();
-
-        assertEquals("a_b_c_", _underlyingInput.getAcceptedInput());
-        assertEquals("Unexpected capacity", sslEngineBufferSize, _sslWrapper.capacity());
-        assertEquals("unexpected underlying process count after wrapper process", 6 , _underlyingInput.getProcessCount());
-        assertEquals(4, _dummySslEngine.getUnwrapCount()); // 3 decodes + 1 underflow
-
-        // Process the fourth 'encoded packet' (<-D->)
-        numberPoured = pour(encodedByteSource, _sslWrapper.tail());
-        assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
-        assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize * 4, encodedByteSource.position());
-        assertEquals("Unexpected capacity", sslEngineBufferSize - encodedPacketSize, _sslWrapper.capacity());
-
-        _sslWrapper.process();
-
-        assertEquals("a_b_c_d_", _underlyingInput.getAcceptedInput());
-        assertEquals("Unexpected capacity", sslEngineBufferSize, _sslWrapper.capacity());
-        assertEquals("unexpected underlying process count after second wrapper process", 8 , _underlyingInput.getProcessCount());
-        assertEquals(6, _dummySslEngine.getUnwrapCount()); // earlier + 1 decode + 1 underflow
-    }
-
-    /**
-     * Tests that an exception is thrown when the underlying input has zero capacity when the call
-     * with newly decoded input is initially made.
-     */
-    @Test (timeout = 5000)
-    public void testUnderlyingInputHasZeroCapacityInitially()
-    {
-        int underlyingInputBufferSize = 1;
-        int encodedPacketSize = 5;
-
-        assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
-
-        // Set the input to have a small buffer, but then return 0 from the 2nd capacity call onward.
-        _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
-        _underlyingInput.setZeroCapacityAtCount(2);
-        assertEquals("Unexpected initial underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
-        assertEquals("Unexpected underlying input capacity", 0, _underlyingInput.capacity());
-
-        // Now try decoding the input, should fail
-        byte[] bytes = "<-A->".getBytes(StandardCharsets.UTF_8);
-        ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
-
-        assertEquals("Unexpected initial wrapper capacity", encodedPacketSize, _sslWrapper.capacity());
-
-        int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
-        assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
-        assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize, encodedByteSource.position());
-        assertEquals("Unexpected wrapper capacity", 0, _sslWrapper.capacity());
-
-        try
-        {
-            _sslWrapper.process();
-            fail("Expected an exception");
-        }
-        catch (TransportException te)
-        {
-            // expected.
-        }
-
-        //Check we got no chars of decoded output.
-        assertEquals("", _underlyingInput.getAcceptedInput());
-        assertEquals("Unexpected wrapper capacity", -1, _sslWrapper.capacity());
-        assertEquals("unexpected underlying process count after wrapper process", 0 , _underlyingInput.getProcessCount());
-        assertEquals("unexpected underlying capacity count after wrapper process", 3, _underlyingInput.getCapacityCount());
-        assertEquals("unexpected underlying capacity after wrapper process", 0 , _underlyingInput.capacity());
-        assertEquals(1, _dummySslEngine.getUnwrapCount()); // 1 decode (then exception)
-    }
-
-    /**
-     * Tests that an exception is thrown when the underlying input has no capacity (but isn't closed)
-     * during the process of incrementally passing the decoded bytes to its smaller input buffer
-     * for processing.
-     */
-    @Test (timeout = 5000)
-    public void testUnderlyingInputHasZeroCapacityMidProcessing()
-    {
-        int underlyingInputBufferSize = 1;
-        int encodedPacketSize = 5;
-
-        assertEquals("Unexpected max encoded chunk size", encodedPacketSize, CapitalisingDummySslEngine.MAX_ENCODED_CHUNK_SIZE);
-
-        // Set the input to have a small buffer, but then return 0 from the 3rd capacity call onward.
-        _underlyingInput.setInputBufferSize(underlyingInputBufferSize);
-        _underlyingInput.setZeroCapacityAtCount(3);
-        assertEquals("Unexpected initial underlying input capacity", underlyingInputBufferSize, _underlyingInput.capacity());
-
-        // Now try decoding the input, should fail
-        byte[] bytes = "<-A->".getBytes(StandardCharsets.UTF_8);
-        ByteBuffer encodedByteSource = ByteBuffer.wrap(bytes);
-
-        assertEquals("Unexpected initial wrapper capacity", encodedPacketSize, _sslWrapper.capacity());
-
-        int numberPoured = pour(encodedByteSource, _sslWrapper.tail());
-        assertEquals("Unexpected number of bytes poured into the wrapper input buffer", encodedPacketSize, numberPoured);
-        assertEquals("Unexpected position in encoded source byte buffer", encodedPacketSize, encodedByteSource.position());
-        assertEquals("Unexpected wrapper capacity", 0, _sslWrapper.capacity());
-
-        try
-        {
-            _sslWrapper.process();
-            fail("Expected an exception");
-        }
-        catch (TransportException te)
-        {
-            // expected.
-        }
-
-        //Check we got the first char (a) of decoded output, but not the second (_).
-        assertEquals("a", _underlyingInput.getAcceptedInput());
-        assertEquals("Unexpected wrapper capacity", -1, _sslWrapper.capacity());
-        assertEquals("unexpected underlying process count after wrapper process", 1 , _underlyingInput.getProcessCount());
-        assertEquals("unexpected underlying capacity count after wrapper process", 3, _underlyingInput.getCapacityCount());
-        assertEquals("unexpected underlying capacity after wrapper process", 0 , _underlyingInput.capacity());
-        assertEquals(1, _dummySslEngine.getUnwrapCount()); // 1 decode (then exception)
-    }
-
-    @Test
-    public void testSslUnwrapThrowsException_returnsErrorResultAndRefusesFurtherInput() throws Exception
-    {
-        SSLException sslException = new SSLException("unwrap exception");
-        _dummySslEngine.rejectNextEncodedPacket(sslException);
-
-        _sslWrapper.tail().put("<-A->".getBytes(StandardCharsets.UTF_8));
-        _sslWrapper.process();
-        assertEquals(_sslWrapper.capacity(), Transport.END_OF_STREAM);
-    }
-
-    @Test
-    public void testUnderlyingInputReturnsErrorResult_returnsErrorResultAndRefusesFurtherInput() throws Exception
-    {
-        String underlyingErrorDescription = "dummy underlying error";
-        _underlyingInput.rejectNextInput(underlyingErrorDescription);
-
-        _sslWrapper.tail().put("<-A->".getBytes(StandardCharsets.UTF_8));
-
-        try {
-            _sslWrapper.process();
-            fail("no exception");
-        } catch (TransportException e) {
-            assertEquals(underlyingErrorDescription, e.getMessage());
-        }
-    }
-
-    @Test
-    public void testHeadIsReadOnly()
-    {
-        _underlyingOutput.setOutput("");
-        assertTrue(_sslWrapper.head().isReadOnly());
-    }
-
-    @Test
-    public void testOutputEncodesOnePacket()
-    {
-        _underlyingOutput.setOutput("a_");
-
-        ByteBuffer outputBuffer = _sslWrapper.head();
-
-        assertByteBufferContentEquals("<-A->".getBytes(StandardCharsets.UTF_8), outputBuffer);
-    }
-
-    @Test
-    public void testOutputEncodesMultiplePackets()
-    {
-        _underlyingOutput.setOutput("a_b_c_");
-
-        assertEquals("<-A-><-B-><-C->", getAllBytesFromTransport());
-    }
-
-    @Test
-    public void testOutputEncodesMultiplePacketsOfVaryingSize()
-    {
-        _underlyingOutput.setOutput("z_a_b_");
-
-        assertEquals("<><-A-><-B->", getAllBytesFromTransport());
-    }
-
-    @Test
-    public void testClientConsumesEncodedOutputInMultipleChunks()
-    {
-        _underlyingOutput.setOutput("a_b_");
-
-        {
-            ByteBuffer buffer = _sslWrapper.head();
-            String output = pourBufferToString(buffer, 2);
-            assertEquals("<-", output);
-            _sslWrapper.pop(buffer.position());
-        }
-
-        {
-            ByteBuffer buffer = _sslWrapper.head();
-            String output = pourBufferToString(buffer, 3);
-            assertEquals("A->", output);
-            _sslWrapper.pop(buffer.position());
-        }
-
-        assertEquals("<-B->", getAllBytesFromTransport());
-    }
-
-    @Test
-    public void testNoOutputToEncode()
-    {
-        _underlyingOutput.setOutput("");
-
-        assertFalse(_sslWrapper.head().hasRemaining());
-    }
-
-    private void putBytesIntoTransport(String encodedBytes)
-    {
-        ByteBuffer byteBuffer = ByteBuffer.wrap(encodedBytes.getBytes(StandardCharsets.UTF_8));
-        while(byteBuffer.hasRemaining())
-        {
-            int numberPoured = pour(byteBuffer, _sslWrapper.tail());
-            assertTrue("We should be able to pour some bytes into the input buffer",
-                    numberPoured > 0);
-            _sslWrapper.process();
-        }
-    }
-
-    private String getAllBytesFromTransport()
-    {
-        StringBuilder readBytes = new StringBuilder();
-        while (true)
-        {
-            int pending = _sslWrapper.pending();
-            if (pending > 0) {
-                ByteBuffer buffer = _sslWrapper.head();
-                readBytes.append(pourBufferToString(buffer));
-                _sslWrapper.pop(pending);
-                continue;
-            } else {
-                break;
-            }
-        }
-
-        return readBytes.toString();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java
deleted file mode 100644
index 84ba8cb..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslEngineFacadeFactoryTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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.qpid.proton.engine.impl.ssl;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.net.URL;
-
-import org.junit.Test;
-
-public class SslEngineFacadeFactoryTest {
-
-    private static final String PASSWORD = "unittest";
-
-    @Test
-    public void testCertifcateLoad() {
-        String ipFile = resolveFilename("cert.pem.txt");
-        SslEngineFacadeFactory factory = new SslEngineFacadeFactory();
-
-        assertNotNull("Certificate was NULL", factory.readCertificate(ipFile));
-    }
-
-    @Test
-    public void testLoadKey() {
-        String keyFile = resolveFilename("key.pem.txt");
-        SslEngineFacadeFactory factory = new SslEngineFacadeFactory();
-
-        assertNotNull("Key was NULL", factory.readPrivateKey(keyFile, PASSWORD));
-    }
-
-    @Test
-    public void testLoadUnencryptedPrivateKey(){
-        String keyFile = resolveFilename("private-key-clear.pem.txt");
-        SslEngineFacadeFactory factory = new SslEngineFacadeFactory();
-
-        assertNotNull("Key was NULL", factory.readPrivateKey(keyFile, null));
-    }
-
-    @Test
-    public void testLoadUnencryptedPKCS8PrivateKey(){
-        String keyFile = resolveFilename("private-key-clear-pkcs8.pem.txt");
-        SslEngineFacadeFactory factory = new SslEngineFacadeFactory();
-
-        assertNotNull("Key was NULL", factory.readPrivateKey(keyFile, null));
-    }
-
-    private String resolveFilename(String testFilename) {
-        URL resourceUri = this.getClass().getResource(testFilename);
-
-        assertNotNull("Failed to load file: " + testFilename, resourceUri);
-
-        String fName = resourceUri.getPath();
-
-        return fName;
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslHandshakeSniffingTransportWrapperTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslHandshakeSniffingTransportWrapperTest.java b/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslHandshakeSniffingTransportWrapperTest.java
deleted file mode 100644
index 3a14837..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/engine/impl/ssl/SslHandshakeSniffingTransportWrapperTest.java
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- *
- * 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.qpid.proton.engine.impl.ssl;
-
-import static org.apache.qpid.proton.engine.impl.TransportTestHelper.assertByteBufferContentEquals;
-import static org.junit.Assert.assertEquals;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.verifyZeroInteractions;
-import static org.mockito.Mockito.when;
-
-import java.nio.ByteBuffer;
-
-import org.apache.qpid.proton.engine.TransportException;
-import org.apache.qpid.proton.engine.impl.TransportWrapper;
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.rules.ExpectedException;
-
-public class SslHandshakeSniffingTransportWrapperTest
-{
-    private static final byte[] EXAMPLE_SSL_V3_HANDSHAKE_BYTES = new byte[] {0x16, 0x03, 0x02, 0x00, 0x31};
-    private static final byte[] EXAMPLE_SSL_V2_HANDSHAKE_BYTES = new byte[] {0x00, 0x00, 0x01, 0x03, 0x00};
-
-    private SslTransportWrapper _secureTransportWrapper = mock(SslTransportWrapper.class);
-    private TransportWrapper _plainTransportWrapper = mock(TransportWrapper.class);
-    private SslTransportWrapper _sniffingWrapper = new SslHandshakeSniffingTransportWrapper(_secureTransportWrapper, _plainTransportWrapper);
-
-    @Rule
-    public ExpectedException _expectedException = ExpectedException.none();
-
-    @Test
-    public void testGetInputBufferGetOutputBufferWithNonSsl()
-    {
-        testInputAndOutput("INPUT".getBytes(), _plainTransportWrapper);
-    }
-
-    @Test
-    public void testWithSSLv2()
-    {
-        testInputAndOutput(EXAMPLE_SSL_V2_HANDSHAKE_BYTES, _secureTransportWrapper);
-    }
-
-    @Test
-    public void testWithSSLv3TLS()
-    {
-        testInputAndOutput(EXAMPLE_SSL_V3_HANDSHAKE_BYTES, _secureTransportWrapper);
-    }
-
-    private void testInputAndOutput(byte[] input, TransportWrapper transportThatShouldBeUsed)
-    {
-        byte[] output = "OUTPUT".getBytes();
-
-        ByteBuffer underlyingInputBuffer = ByteBuffer.allocate(1024);
-        ByteBuffer underlyingOutputBuffer = ByteBuffer.wrap(output);
-
-        // set up underlying transport
-        when(transportThatShouldBeUsed.tail()).thenReturn(underlyingInputBuffer);
-        when(transportThatShouldBeUsed.head()).thenReturn(underlyingOutputBuffer);
-
-        // do input and verify underlying calls were made
-        ByteBuffer inputBuffer = _sniffingWrapper.tail();
-        inputBuffer.put(input);
-        _sniffingWrapper.process();
-
-        verify(transportThatShouldBeUsed).tail();
-        verify(transportThatShouldBeUsed).process();
-
-        // check the wrapped input actually received the expected bytes
-        underlyingInputBuffer.flip();
-        assertByteBufferContentEquals(input, underlyingInputBuffer);
-
-        // do output and check we get the correct transport's output
-        ByteBuffer outputBuffer = _sniffingWrapper.head();
-        verify(transportThatShouldBeUsed).head();
-
-        assertByteBufferContentEquals(output, outputBuffer);
-        int consumed = outputBuffer.position();
-        _sniffingWrapper.pop(consumed);
-        verify(transportThatShouldBeUsed).pop(consumed);
-
-        verifyZeroInteractionsWithOtherTransport(transportThatShouldBeUsed);
-    }
-
-    @Test
-    public void testTooFewBytesToMakeDetermination()
-    {
-        byte[] sourceBuffer = new byte[] {0x00};
-
-        try
-        {
-            _sniffingWrapper.tail().put(sourceBuffer);
-            _sniffingWrapper.close_tail();
-
-            _expectedException.expect(TransportException.class);
-            _sniffingWrapper.process();
-        }
-        finally
-        {
-            verifyZeroInteractions(_secureTransportWrapper, _plainTransportWrapper);
-        }
-    }
-
-    @Test
-    public void testGetSslAttributesWhenProtocolIsNotYetDetermined_returnNull()
-    {
-        assertEquals("Cipher name should be null", null, _sniffingWrapper.getCipherName());
-        assertEquals("Protocol name should be null", null, _sniffingWrapper.getProtocolName());
-        verifyZeroInteractions(_secureTransportWrapper, _plainTransportWrapper);
-    }
-
-    @Test
-    public void testGetSslAttributesWhenUsingNonSsl_returnNull()
-    {
-        testGetSslAttributes("INPUT".getBytes(), _plainTransportWrapper, null, null);
-    }
-
-    /**
-     * Tests {@link SslHandshakeSniffingTransportWrapper#getCipherName()}
-     * and {@link SslHandshakeSniffingTransportWrapper#getProtocolName()}.
-     */
-    @Test
-    public void testGetSslAttributesWhenUsingSsl()
-    {
-        String cipherName = "testCipherName";
-        String protocolName = "testProtocolName";
-        when(_secureTransportWrapper.getCipherName()).thenReturn(cipherName);
-        when(_secureTransportWrapper.getProtocolName()).thenReturn(protocolName);
-
-        testGetSslAttributes(EXAMPLE_SSL_V2_HANDSHAKE_BYTES, _secureTransportWrapper, cipherName, protocolName);
-    }
-
-    private void testGetSslAttributes(
-            byte[] input, TransportWrapper transportThatShouldBeUsed,
-            String expectedCipherName, String expectedProtocolName)
-    {
-        ByteBuffer underlyingInputBuffer = ByteBuffer.allocate(1024);
-        when(transportThatShouldBeUsed.tail()).thenReturn(underlyingInputBuffer);
-
-        _sniffingWrapper.tail().put(input);
-        _sniffingWrapper.process();
-
-        assertEquals(expectedCipherName, _sniffingWrapper.getCipherName());
-        assertEquals(expectedProtocolName, _sniffingWrapper.getProtocolName());
-
-        verifyZeroInteractionsWithOtherTransport(transportThatShouldBeUsed);
-    }
-
-    private void verifyZeroInteractionsWithOtherTransport(TransportWrapper transportThatShouldBeUsed)
-    {
-        final TransportWrapper transportThatShouldNotBeUsed;
-        if(transportThatShouldBeUsed == _plainTransportWrapper)
-        {
-            transportThatShouldNotBeUsed = _secureTransportWrapper;
-        }
-        else
-        {
-            transportThatShouldNotBeUsed = _plainTransportWrapper;
-        }
-
-        verifyZeroInteractions(transportThatShouldNotBeUsed);
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/message/impl/MessageImplTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/message/impl/MessageImplTest.java b/proton-j/src/test/java/org/apache/qpid/proton/message/impl/MessageImplTest.java
deleted file mode 100644
index 6070745..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/message/impl/MessageImplTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- *
- * 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.qpid.proton.message.impl;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-
-import java.nio.ByteBuffer;
-
-import org.apache.qpid.proton.amqp.Binary;
-import org.apache.qpid.proton.amqp.messaging.Data;
-import org.apache.qpid.proton.message.Message;
-import org.junit.Test;
-
-public class MessageImplTest
-{
-    private static final long DATA_SECTION_ULONG_DESCRIPTOR = 0x0000000000000075L;
-
-    @Test
-    public void testEncodeOfMessageWithSmallDataBodyOnly()
-    {
-        doMessageEncodingWithDataBodySectionTestImpl(5);
-    }
-
-    @Test
-    public void testEncodeOfMessageWithLargerDataBodyOnly()
-    {
-        doMessageEncodingWithDataBodySectionTestImpl(1024);
-    }
-
-    void doMessageEncodingWithDataBodySectionTestImpl(int bytesLength)
-    {
-        byte[] bytes = generateByteArray(bytesLength);
-
-        byte[] expectedBytes = generateExpectedDataSectionBytes(bytes);
-        byte[] encodedBytes = new byte[expectedBytes.length];
-
-        Message msg = Message.Factory.create();
-        msg.setBody(new Data(new Binary(bytes)));
-
-        int encodedLength = msg.encode(encodedBytes, 0, encodedBytes.length);
-
-        assertArrayEquals("Encoded bytes do not match expectation", expectedBytes, encodedBytes);
-        assertEquals("Encoded length different than expected length", encodedLength, encodedBytes.length);
-    }
-
-    private byte[] generateByteArray(int bytesLength)
-    {
-        byte[] bytes = new byte[bytesLength];
-        for(int i = 0; i < bytesLength; i++)
-        {
-            bytes [i] = (byte) (i % 10);
-        }
-
-        return bytes;
-    }
-
-    /*
-     * http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-messaging-v1.0-os.html#type-data
-     * http://docs.oasis-open.org/amqp/core/v1.0/os/amqp-core-types-v1.0-os.html
-     *
-     * ulong encodings:
-     *  <encoding code="0x80" category="fixed" width="8" label="64-bit unsigned integer in network byte order"/>
-     *  <encoding name="smallulong" code="0x53" category="fixed" width="1" label="unsigned long value in the range 0 to 255 inclusive"/>
-     *  <encoding name="ulong0" code="0x44" category="fixed" width="0" label="the ulong value 0"/>
-     *
-     * binary encodings:
-     *  <encoding name="vbin8" code="0xa0" category="variable" width="1" label="up to 2^8 - 1 octets of binary data"/>
-     *  <encoding name="vbin32" code="0xb0" category="variable" width="4" label="up to 2^32 - 1 octets of binary data"/>
-     */
-    byte[] generateExpectedDataSectionBytes(final byte[] payloadBytes)
-    {
-        int dataBytesLength = 1;         // 0x00 for described-type constructor start
-        dataBytesLength += 1;            // smallulong encoding format for data section descriptor
-        dataBytesLength += 1;            // smallulong 8bit value
-        dataBytesLength += 1;            // vbin variable-width binary encoding format.
-        if (payloadBytes.length > 255)
-        {
-            dataBytesLength += 4;        // 32bit length field.
-        }
-        else
-        {
-            dataBytesLength += 1;        // 8bit length field.
-        }
-        dataBytesLength += payloadBytes.length; // section payload length.
-
-        ByteBuffer buffer = ByteBuffer.allocate(dataBytesLength);
-
-        buffer.put((byte) 0x00);                    // 0x00 for described-type constructor start
-        buffer.put((byte) 0x53);                    // smallulong encoding format for data section descriptor
-        buffer.put((byte) DATA_SECTION_ULONG_DESCRIPTOR); // smallulong 8bit value
-        if (payloadBytes.length > 255)
-        {
-            buffer.put((byte) 0xb0);                // vbin32 variable-width binary encoding format.
-            buffer.putInt(payloadBytes.length);     // 32bit length field.
-        }
-        else
-        {
-            buffer.put((byte) 0xa0);                // vbin8 variable-width binary encoding format.
-            buffer.put((byte) payloadBytes.length); // 8bit length field.
-        }
-        buffer.put(payloadBytes);                   // The actual content of given length.
-
-        assertEquals("Unexpected buffer position", dataBytesLength, buffer.position());
-
-        return buffer.array();
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/messenger/impl/AddressTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/messenger/impl/AddressTest.java b/proton-j/src/test/java/org/apache/qpid/proton/messenger/impl/AddressTest.java
deleted file mode 100644
index 77154b6..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/messenger/impl/AddressTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * 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.qpid.proton.messenger.impl;
-
-import static org.junit.Assert.*;
-
-import org.junit.Test;
-
-public class AddressTest {
-
-    @SuppressWarnings("deprecation")
-    private void testParse(String url, String scheme, String user, String pass, String host, String port, String name)
-    {
-        Address address = new Address(url);
-        assertEquals(scheme, address.getScheme());
-        assertEquals(user, address.getUser());
-        assertEquals(pass, address.getPass());
-        assertEquals(host, address.getHost());
-        assertEquals(port, address.getPort());
-        assertEquals(url, address.toString());
-    }
-
-    @Test
-    public void addressTests()
-    {
-        testParse("host", null, null, null, "host", null, null);
-        testParse("host:423", null, null, null, "host", "423", null);
-        testParse("user@host", null, "user", null, "host", null, null);
-        testParse("user:1243^&^:pw@host:423", null, "user", "1243^&^:pw", "host", "423", null);
-        testParse("user:1243^&^:pw@host:423/Foo.bar:90087", null, "user", "1243^&^:pw", "host", "423", "Foo.bar:90087");
-        testParse("user:1243^&^:pw@host:423/Foo.bar:90087@somewhere", null, "user", "1243^&^:pw", "host", "423", "Foo.bar:90087@somewhere");
-        testParse("[::1]", null, null, null, "::1", null, null);
-        testParse("[::1]:amqp", null, null, null, "::1", "amqp", null);
-        testParse("user@[::1]", null, "user", null, "::1", null, null);
-        testParse("user@[::1]:amqp", null, "user", null, "::1", "amqp", null);
-        testParse("user:1243^&^:pw@[::1]:amqp", null, "user", "1243^&^:pw", "::1", "amqp", null);
-        testParse("user:1243^&^:pw@[::1]:amqp/Foo.bar:90087", null, "user", "1243^&^:pw", "::1", "amqp", "Foo.bar:90087");
-        testParse("user:1243^&^:pw@[::1:amqp/Foo.bar:90087", null, "user", "1243^&^:pw", "[", ":1:amqp", "Foo.bar:90087");
-        testParse("user:1243^&^:pw@::1]:amqp/Foo.bar:90087", null, "user", "1243^&^:pw", "", ":1]:amqp", "Foo.bar:90087");
-        testParse("amqp://user@[::1]", "amqp", "user", null, "::1", null, null);
-        testParse("amqp://user@[::1]:amqp", "amqp", "user", null, "::1", "amqp", null);
-        testParse("amqp://user@[1234:52:0:1260:f2de:f1ff:fe59:8f87]:amqp", "amqp", "user", null, "1234:52:0:1260:f2de:f1ff:fe59:8f87", "amqp", null);
-        testParse("amqp://user:1243^&^:pw@[::1]:amqp", "amqp", "user", "1243^&^:pw", "::1", "amqp", null);
-        testParse("amqp://user:1243^&^:pw@[::1]:amqp/Foo.bar:90087", "amqp", "user", "1243^&^:pw", "::1", "amqp", "Foo.bar:90087");
-        testParse("amqp://host", "amqp", null, null, "host", null, null);
-        testParse("amqp://user@host", "amqp", "user", null, "host", null, null);
-        testParse("amqp://user@host/path:%", "amqp", "user", null, "host", null, "path:%");
-        testParse("amqp://user@host:5674/path:%", "amqp", "user", null, "host", "5674", "path:%");
-        testParse("amqp://user@host/path:%", "amqp", "user", null, "host", null, "path:%");
-        testParse("amqp://bigbird@host/queue@host", "amqp", "bigbird", null, "host", null, "queue@host");
-        testParse("amqp://host/queue@host", "amqp", null, null, "host", null, "queue@host");
-        testParse("amqp://host:9765/queue@host", "amqp", null, null, "host", "9765", "queue@host");
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/reactor/ReactorTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/reactor/ReactorTest.java b/proton-j/src/test/java/org/apache/qpid/proton/reactor/ReactorTest.java
deleted file mode 100644
index 387446e..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/reactor/ReactorTest.java
+++ /dev/null
@@ -1,692 +0,0 @@
-/*
- *
- * 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.qpid.proton.reactor;
-
-import static org.junit.Assert.assertArrayEquals;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-
-import java.io.IOException;
-import java.net.ServerSocket;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-
-import junit.framework.AssertionFailedError;
-
-import org.apache.qpid.proton.Proton;
-import org.apache.qpid.proton.engine.BaseHandler;
-import org.apache.qpid.proton.engine.Connection;
-import org.apache.qpid.proton.engine.Delivery;
-import org.apache.qpid.proton.engine.Event;
-import org.apache.qpid.proton.engine.Event.Type;
-import org.apache.qpid.proton.engine.Handler;
-import org.apache.qpid.proton.engine.HandlerException;
-import org.apache.qpid.proton.engine.Sender;
-import org.apache.qpid.proton.engine.Session;
-import org.apache.qpid.proton.reactor.impl.AcceptorImpl;
-import org.apache.qpid.proton.reactor.impl.LeakTestReactor;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class ReactorTest {
-
-    public ReactorFactory reactorFactory;
-    private Reactor reactor;
-
-    private static interface ReactorFactory {
-        Reactor newReactor() throws IOException;
-    }
-
-    // Parameterize the tests, and run them once with a reactor obtained by calling
-    // 'Proton.reactor()' and once with the LeakTestReactor.
-    @Parameters
-    public static Collection<ReactorFactory[]> data() throws IOException {
-        ReactorFactory classicReactor = new ReactorFactory() {
-            @Override public Reactor newReactor() throws IOException {
-                return Proton.reactor();
-            }
-        };
-        ReactorFactory newLeakDetection = new ReactorFactory() {
-            @Override public Reactor newReactor() throws IOException {
-                return new LeakTestReactor();
-            }
-        };
-        return Arrays.asList(new ReactorFactory[][]{{classicReactor}, {newLeakDetection}});
-    }
-
-    public ReactorTest(ReactorFactory reactorFactory) {
-        this.reactorFactory = reactorFactory;
-    }
-
-    @Before
-    public void before() throws IOException {
-        reactor = reactorFactory.newReactor();
-    }
-
-    private void checkForLeaks() {
-        if (reactor instanceof LeakTestReactor) {
-            ((LeakTestReactor)reactor).assertNoLeaks();
-        }
-    }
-
-    @After
-    public void after() {
-        checkForLeaks();
-    }
-
-    /**
-     * Tests that creating a reactor and running it:
-     * <ul>
-     *   <li>Doesn't throw any exceptions.</li>
-     *   <li>Returns immediately from the run method (as there is no more work to do).</li>
-     * </ul>
-     * @throws IOException
-     */
-    @Test
-    public void runEmpty() throws IOException {
-        assertNotNull(reactor);
-        reactor.run();
-        reactor.free();
-    }
-
-    private static class TestHandler extends BaseHandler {
-        private final ArrayList<Type> actual = new ArrayList<Type>();
-
-        @Override
-        public void onUnhandled(Event event) {
-            assertNotNull(event.getReactor());
-            actual.add(event.getType());
-        }
-
-        public void assertEvents(Type...expected) {
-            assertArrayEquals(expected, actual.toArray());
-        }
-    }
-
-    /**
-     * Tests adding a handler to a reactor and running the reactor.  The
-     * expected behaviour is for the reactor to return, and a number of reactor-
-     * related events to have been delivered to the handler.
-     * @throws IOException
-     */
-    @Test
-    public void handlerRun() throws IOException {
-        Handler handler = reactor.getHandler();
-        assertNotNull(handler);
-        TestHandler testHandler = new TestHandler();
-        handler.add(testHandler);
-        reactor.run();
-        reactor.free();
-        testHandler.assertEvents(Type.REACTOR_INIT, Type.SELECTABLE_INIT, Type.SELECTABLE_UPDATED, Type.SELECTABLE_FINAL, Type.REACTOR_FINAL);
-    }
-
-    /**
-     * Tests basic operation of the Reactor.connection method by creating a
-     * connection from a reactor, then running the reactor.  The expected behaviour
-     * is for:
-     * <ul>
-     *   <li>The reactor to end immediately.</li>
-     *   <li>The handler associated with the connection receives an init event.</li>
-     *   <li>The connection is one of the reactor's children.</li>
-     * </ul>
-     * @throws IOException
-     */
-    @Test
-    public void connection() throws IOException {
-        TestHandler connectionHandler = new TestHandler();
-        Connection connection = reactor.connection(connectionHandler);
-        assertNotNull(connection);
-        assertTrue("connection should be one of the reactor's children", reactor.children().contains(connection));
-        reactor.setConnectionHost(connection, "127.0.0.1", 5672);
-        assertEquals("connection address configuration failed",
-                     reactor.getConnectionAddress(connection), "127.0.0.1:5672");
-        TestHandler reactorHandler = new TestHandler();
-        reactor.getHandler().add(reactorHandler);
-        reactor.run();
-        reactor.free();
-        reactorHandler.assertEvents(Type.REACTOR_INIT, Type.SELECTABLE_INIT, Type.SELECTABLE_UPDATED, Type.SELECTABLE_FINAL, Type.REACTOR_FINAL);
-        connectionHandler.assertEvents(Type.CONNECTION_INIT);
-    }
-
-    /**
-     * Tests operation of the Reactor.acceptor method by creating an acceptor
-     * which is immediately closed by the reactor.  The expected behaviour is for:
-     * <ul>
-     *   <li>The reactor to end immediately (as it has no more work to process).</li>
-     *   <li>The handler, associated with the acceptor, to receive no events.</li>
-     *   <li>For it's lifetime, the acceptor is one of the reactor's children.</li>
-     * </ul>
-     * @throws IOException
-     */
-    @Test
-    public void acceptor() throws IOException {
-        final Acceptor acceptor = reactor.acceptor("127.0.0.1", 0);
-        assertNotNull(acceptor);
-        assertTrue("acceptor should be one of the reactor's children", reactor.children().contains(acceptor));
-        TestHandler acceptorHandler = new TestHandler();
-        BaseHandler.setHandler(acceptor, acceptorHandler);
-        reactor.getHandler().add(new BaseHandler() {
-            @Override
-            public void onReactorInit(Event event) {
-                acceptor.close();
-            }
-        });
-        reactor.run();
-        reactor.free();
-        acceptorHandler.assertEvents();
-        assertFalse("acceptor should have been removed from the reactor's children", reactor.children().contains(acceptor));
-    }
-
-    private static class ServerHandler extends TestHandler {
-        private Acceptor acceptor;
-        public void setAcceptor(Acceptor acceptor) {
-            this.acceptor = acceptor;
-        }
-        @Override
-        public void onConnectionRemoteOpen(Event event) {
-            super.onConnectionRemoteOpen(event);
-            event.getConnection().open();
-        }
-        @Override
-        public void onConnectionRemoteClose(Event event) {
-            super.onConnectionRemoteClose(event);
-            acceptor.close();
-            event.getConnection().close();
-            event.getConnection().free();
-        }
-    }
-
-    /**
-     * Tests end to end behaviour of the reactor by creating an acceptor and then
-     * a connection (which connects to the port the acceptor is listening on).
-     * As soon as the connection is established, both the acceptor and connection
-     * are closed.  The events generated by the acceptor and the connection are
-     * compared to a set of expected events.
-     * @throws IOException
-     */
-    @Test
-    public void connect() throws IOException {
-        ServerHandler sh = new ServerHandler();
-        Acceptor acceptor = reactor.acceptor("127.0.0.1",  0, sh);
-        final int listeningPort = ((AcceptorImpl)acceptor).getPortNumber();
-        sh.setAcceptor(acceptor);
-
-        class ClientHandler extends TestHandler {
-            @Override
-            public void onConnectionInit(Event event) {
-                super.onConnectionInit(event);
-                event.getReactor().setConnectionHost(event.getConnection(),
-                                                     "127.0.0.1",
-                                                     listeningPort);
-                event.getConnection().open();
-            }
-            @Override
-            public void onConnectionRemoteOpen(Event event) {
-                super.onConnectionRemoteOpen(event);
-                event.getConnection().close();
-            }
-            @Override
-            public void onConnectionRemoteClose(Event event) {
-                super.onConnectionRemoteClose(event);
-                event.getConnection().free();
-            }
-        }
-        ClientHandler ch = new ClientHandler();
-        Connection connection = reactor.connection(ch);
-
-        assertTrue("acceptor should be one of the reactor's children", reactor.children().contains(acceptor));
-        assertTrue("connection should be one of the reactor's children", reactor.children().contains(connection));
-
-        reactor.run();
-        reactor.free();
-
-        assertFalse("acceptor should have been removed from the reactor's children", reactor.children().contains(acceptor));
-        assertFalse("connection should have been removed from the reactor's children", reactor.children().contains(connection));
-        sh.assertEvents(Type.CONNECTION_INIT, Type.CONNECTION_BOUND,
-                // XXX: proton-c generates a PN_TRANSPORT event here
-                Type.CONNECTION_REMOTE_OPEN, Type.CONNECTION_LOCAL_OPEN,
-                Type.TRANSPORT, Type.CONNECTION_REMOTE_CLOSE,
-                Type.TRANSPORT_TAIL_CLOSED, Type.CONNECTION_LOCAL_CLOSE,
-                Type.TRANSPORT, Type.TRANSPORT_HEAD_CLOSED,
-                Type.TRANSPORT_CLOSED, Type.CONNECTION_UNBOUND,
-                Type.CONNECTION_FINAL);
-
-        ch.assertEvents(Type.CONNECTION_INIT, Type.CONNECTION_LOCAL_OPEN,
-                Type.CONNECTION_BOUND,
-                // XXX: proton-c generates two PN_TRANSPORT events here
-                Type.CONNECTION_REMOTE_OPEN, Type.CONNECTION_LOCAL_CLOSE,
-                Type.TRANSPORT, Type.TRANSPORT_HEAD_CLOSED,
-                Type.CONNECTION_REMOTE_CLOSE, Type.TRANSPORT_TAIL_CLOSED,
-                Type.TRANSPORT_CLOSED, Type.CONNECTION_UNBOUND,
-                Type.CONNECTION_FINAL);
-
-    }
-
-    private String checkVhost(String vhost) throws IOException {
-
-        class ServerVhostHandler extends ServerHandler {
-            public String peerVhost;
-
-            @Override
-            public void onConnectionRemoteOpen(Event event) {
-                super.onConnectionRemoteOpen(event);
-                peerVhost = event.getConnection().getRemoteHostname();
-            }
-        }
-
-        class ClientVhostHandler extends TestHandler {
-            private int port;
-            private String vhost;
-
-            ClientVhostHandler(String vhost, int port) {
-                this.port = port;
-                this.vhost = vhost;
-            }
-
-            @Override
-            public void onConnectionInit(Event event) {
-                super.onConnectionInit(event);
-                event.getReactor().setConnectionHost(event.getConnection(),
-                                                     "127.0.0.1", port);
-                if (vhost != null) {
-                    event.getConnection().setHostname(vhost);
-                }
-                event.getConnection().open();
-            }
-            @Override
-            public void onConnectionRemoteOpen(Event event) {
-                super.onConnectionRemoteOpen(event);
-                event.getConnection().close();
-            }
-            @Override
-            public void onConnectionRemoteClose(Event event) {
-                super.onConnectionRemoteClose(event);
-                event.getConnection().free();
-            }
-        }
-        ServerVhostHandler sh = new ServerVhostHandler();
-        Acceptor acceptor = reactor.acceptor("127.0.0.1",  0, sh);
-        final int listeningPort = ((AcceptorImpl)acceptor).getPortNumber();
-        sh.setAcceptor(acceptor);
-
-        ClientVhostHandler ch = new ClientVhostHandler(vhost, listeningPort);
-        Connection connection = reactor.connection(ch);
-
-        reactor.run();
-        reactor.free();
-        checkForLeaks();
-
-        return sh.peerVhost;
-    }
-
-    /**
-     * Tests the virtual host default configuration - should be set to host
-     * used for the connection.
-     * @throws IOException
-     **/
-    @Test
-    public void checkVhostDefault() throws IOException {
-        String vhost = checkVhost(null);
-        assertEquals("The default virtual host is not correct",
-                     "127.0.0.1", vhost);
-    }
-
-    /**
-     * Tests the virtual host override - should be set to connection's
-     * hostname.
-     * @throws IOException
-     **/
-    @Test
-    public void checkVhostOverride() throws IOException {
-        String vhost = checkVhost("my.vhost");
-        assertEquals("The virtual host is not correct",
-                     "my.vhost", vhost);
-    }
-
-    /**
-     * Tests eliminating the virtual host configuration - expects no vhost for
-     * the connection.
-     * @throws IOException
-     **/
-    @Test
-    public void checkNoVhost() throws IOException {
-        String vhost = checkVhost("");
-        assertEquals("The virtual host is present",
-                     null, vhost);
-    }
-
-
-    private static class SinkHandler extends BaseHandler {
-        protected int received = 0;
-
-        @Override
-        public void onDelivery(Event event) {
-            Delivery dlv = event.getDelivery();
-            if (!dlv.isPartial()) {
-                dlv.settle();
-                ++received;
-            }
-        }
-    }
-
-    private static class SourceHandler extends BaseHandler {
-        private int remaining;
-
-        protected SourceHandler(int count) {
-            remaining = count;
-        }
-
-        @Override
-        public void onConnectionInit(Event event) {
-            Connection conn = event.getConnection();
-            Session ssn = conn.session();
-            Sender snd = ssn.sender("sender");
-            conn.open();
-            ssn.open();
-            snd.open();
-        }
-
-        @Override
-        public void onLinkFlow(Event event) {
-            Sender link = (Sender)event.getLink();
-            while (link.getCredit() > 0 && remaining > 0) {
-                Delivery dlv = link.delivery(new byte[0]);
-                assertNotNull(dlv);
-                dlv.settle();
-                link.advance();
-                --remaining;
-            }
-
-            if (remaining == 0) {
-                event.getConnection().close();
-            }
-        }
-
-        @Override
-        public void onConnectionRemoteClose(Event event) {
-            event.getConnection().free();
-        }
-    }
-
-    private void transfer(int count, int window) throws IOException {
-        reactor = reactorFactory.newReactor();
-        ServerHandler sh = new ServerHandler();
-        Acceptor acceptor = reactor.acceptor("127.0.0.1", 0, sh);
-        sh.setAcceptor(acceptor);
-        sh.add(new Handshaker());
-        // XXX: a window of 1 doesn't work unless the flowcontroller is
-        // added after the thing that settles the delivery
-        sh.add(new FlowController(window));
-        SinkHandler snk = new SinkHandler();
-        sh.add(snk);
-
-        SourceHandler src = new SourceHandler(count);
-        reactor.connectionToHost("127.0.0.1", ((AcceptorImpl)acceptor).getPortNumber(),
-                                 src);
-        reactor.run();
-        reactor.free();
-        assertEquals("Did not receive the expected number of messages", count, snk.received);
-        checkForLeaks();
-    }
-
-    @Test
-    public void transfer_0to64_2() throws IOException {
-        for (int i = 0; i < 64; ++i) {
-            transfer(i, 2);
-        }
-    }
-
-    @Test
-    public void transfer_1024_64() throws IOException {
-        transfer(1024, 64);
-    }
-
-    @Test
-    public void transfer_4096_1024() throws IOException {
-        transfer(4*1024, 1024);
-    }
-
-    @Test
-    public void schedule() throws IOException {
-        TestHandler reactorHandler = new TestHandler();
-        reactor.getHandler().add(reactorHandler);
-        TestHandler taskHandler = new TestHandler();
-        reactor.schedule(0, taskHandler);
-        reactor.run();
-        reactor.free();
-        reactorHandler.assertEvents(Type.REACTOR_INIT, Type.SELECTABLE_INIT, Type.SELECTABLE_UPDATED, Type.REACTOR_QUIESCED, Type.SELECTABLE_UPDATED,
-                Type.SELECTABLE_FINAL, Type.REACTOR_FINAL);
-        taskHandler.assertEvents(Type.TIMER_TASK);
-    }
-
-    private class BarfException extends RuntimeException {
-        private static final long serialVersionUID = -5891140258375562884L;
-    }
-
-    private class BarfOnSomethingHandler extends BaseHandler {
-        protected final BarfException exception;
-
-        protected BarfOnSomethingHandler(BarfException exception) {
-            this.exception = exception;
-        }
-    }
-
-    private class BarfOnReactorInit extends BarfOnSomethingHandler {
-
-        protected BarfOnReactorInit(BarfException exception) {
-            super(exception);
-        }
-
-        @Override
-        public void onReactorInit(Event e) {
-            throw exception;
-        }
-    }
-
-    private class BarfOnReactorFinal extends BarfOnSomethingHandler {
-
-        protected BarfOnReactorFinal(BarfException exception) {
-            super(exception);
-        }
-
-        @Override
-        public void onReactorFinal(Event event) {
-            throw exception;
-        }
-    }
-
-    private class BarfOnConnectionInit extends BarfOnSomethingHandler {
-
-        protected BarfOnConnectionInit(BarfException exception) {
-            super(exception);
-        }
-
-        @Override
-        public void onConnectionInit(Event e) {
-            throw exception;
-        }
-    }
-
-    private class BarfOnSessionInit extends BarfOnSomethingHandler {
-
-        protected BarfOnSessionInit(BarfException exception) {
-            super(exception);
-        }
-
-        @Override
-        public void onSessionInit(Event e) {
-            throw exception;
-        }
-    }
-
-    private class BarfOnLinkInit extends BarfOnSomethingHandler {
-
-        protected BarfOnLinkInit(BarfException exception) {
-            super(exception);
-        }
-
-        @Override
-        public void onLinkInit(Event e) {
-            throw exception;
-        }
-    }
-
-    private class BarfOnTask extends BarfOnSomethingHandler {
-
-        protected BarfOnTask(BarfException exception) {
-            super(exception);
-        }
-
-        @Override
-        public void onTimerTask(Event e) {
-            throw exception;
-        }
-    }
-
-    private void assertReactorRunBarfsOnHandler(Reactor reactor, BarfException expectedException, Handler expectedHandler) {
-        try {
-            reactor.run();
-            throw new AssertionFailedError("Reactor.run() should have thrown an exception");
-        } catch(HandlerException handlerException) {
-            assertSame("Linked exception does not match expected exception", expectedException, handlerException.getCause());
-            assertSame("Handler in exception does not match expected handler", expectedHandler, handlerException.getHandler());
-        }
-    }
-
-    @Test
-    public void barfInReactorFinal() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnReactorFinal(expectedBarf);
-        reactor.getGlobalHandler().add(expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnGlobalSet() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnReactorInit(expectedBarf);
-        reactor.setGlobalHandler(expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnGlobalAdd() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnReactorInit(expectedBarf);
-        reactor.getGlobalHandler().add(expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnReactorSet() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnReactorInit(expectedBarf);
-        reactor.setHandler(expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnReactorAdd() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnReactorInit(expectedBarf);
-        reactor.getHandler().add(expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnConnection() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnConnectionInit(expectedBarf);
-        reactor.connection(expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnSession() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnSessionInit(expectedBarf);
-        reactor.connection(expectedHandler).session();
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnLink() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnLinkInit(expectedBarf);
-        reactor.connection(expectedHandler).session().sender("barf");
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void barfOnSchedule() throws IOException {
-        BarfException expectedBarf = new BarfException();
-        Handler expectedHandler = new BarfOnTask(expectedBarf);
-        reactor.schedule(0, expectedHandler);
-        assertReactorRunBarfsOnHandler(reactor, expectedBarf, expectedHandler);
-        reactor.free();
-    }
-
-    @Test
-    public void connectionRefused() throws IOException {
-        final ServerSocket serverSocket = new ServerSocket(0, 0);
-
-        class ConnectionHandler extends TestHandler {
-            @Override
-            public void onConnectionInit(Event event) {
-                super.onConnectionInit(event);
-                Connection connection = event.getConnection();
-                connection.open();
-                try {
-                    serverSocket.close();
-                } catch(IOException e) {
-                    AssertionFailedError afe = new AssertionFailedError();
-                    afe.initCause(e);
-                    throw afe;
-                }
-            }
-        }
-        TestHandler connectionHandler = new ConnectionHandler();
-        reactor.connectionToHost("127.0.0.1", serverSocket.getLocalPort(), connectionHandler);
-        reactor.run();
-        reactor.free();
-        serverSocket.close();
-        connectionHandler.assertEvents(Type.CONNECTION_INIT, Type.CONNECTION_LOCAL_OPEN, Type.CONNECTION_BOUND, Type.TRANSPORT_ERROR, Type.TRANSPORT_TAIL_CLOSED,
-                Type.TRANSPORT_HEAD_CLOSED, Type.TRANSPORT_CLOSED, Type.CONNECTION_UNBOUND, Type.TRANSPORT);
-    }
-}

http://git-wip-us.apache.org/repos/asf/qpid-proton/blob/ccdcf329/proton-j/src/test/java/org/apache/qpid/proton/reactor/impl/AcceptorImplTest.java
----------------------------------------------------------------------
diff --git a/proton-j/src/test/java/org/apache/qpid/proton/reactor/impl/AcceptorImplTest.java b/proton-j/src/test/java/org/apache/qpid/proton/reactor/impl/AcceptorImplTest.java
deleted file mode 100644
index 9ac0538..0000000
--- a/proton-j/src/test/java/org/apache/qpid/proton/reactor/impl/AcceptorImplTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *
- * 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.qpid.proton.reactor.impl;
-
-import java.io.IOException;
-import java.nio.channels.ServerSocketChannel;
-
-import org.apache.qpid.proton.reactor.ReactorChild;
-import org.apache.qpid.proton.reactor.Selectable.Callback;
-import org.junit.Test;
-import org.mockito.Mockito;
-
-public class AcceptorImplTest {
-
-    /**
-     * Tests that if ServerSocketChannel.accept() throws an IOException the Acceptor will
-     * call Selectable.error() on it's underlying selector.
-     * @throws IOException
-     */
-    @Test
-    public void acceptThrowsException() throws IOException {
-        final Callback mockCallback = Mockito.mock(Callback.class);
-        final SelectableImpl selectable = new SelectableImpl();
-        selectable.onError(mockCallback);
-        ReactorImpl mockReactor = Mockito.mock(ReactorImpl.class);
-        class MockIO extends IOImpl {
-            @Override
-            public ServerSocketChannel serverSocketChannel() throws IOException {
-                ServerSocketChannel result = Mockito.mock(ServerSocketChannel.class);
-                Mockito.when(result.accept()).thenThrow(new IOException());
-                return result;
-            }
-        }
-        IO mockIO = new MockIO();
-        Mockito.when(mockReactor.getIO()).thenReturn(mockIO);
-        Mockito.when(mockReactor.selectable(Mockito.any(ReactorChild.class))).thenReturn(selectable);
-        new AcceptorImpl(mockReactor, "host", 1234, null);
-        selectable.readable();
-        Mockito.verify(mockCallback).run(selectable);
-    }
-
-    /**
-     * Tests that if ServerSocketChannel.accept() returns <code>null</code> the Acceptor will
-     * throw a ReactorInternalException (because the acceptor's underlying selectable should
-     * not have been marked as readable, if there is no connection to accept).
-     * @throws IOException
-     */
-    @Test(expected=ReactorInternalException.class)
-    public void acceptReturnsNull() throws IOException {
-        final Callback mockCallback = Mockito.mock(Callback.class);
-        final SelectableImpl selectable = new SelectableImpl();
-        selectable.onError(mockCallback);
-        ReactorImpl mockReactor = Mockito.mock(ReactorImpl.class);
-        class MockIO extends IOImpl {
-            @Override
-            public ServerSocketChannel serverSocketChannel() throws IOException {
-                ServerSocketChannel result = Mockito.mock(ServerSocketChannel.class);
-                Mockito.when(result.accept()).thenReturn(null);
-                return result;
-            }
-        }
-        IO mockIO = new MockIO();
-        Mockito.when(mockReactor.getIO()).thenReturn(mockIO);
-        Mockito.when(mockReactor.selectable(Mockito.any(ReactorChild.class))).thenReturn(selectable);
-        new AcceptorImpl(mockReactor, "host", 1234, null);
-        selectable.readable();
-    }
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org