More strict testing of handshake behaviour
Motiviation: We should ensure we not need any extra wrap / unwrap calls during handshake once the handshake was signaled as finished Modifications: More strict testing Result: Better testing of handshake behaviour
This commit is contained in:
parent
bcc778ff51
commit
e090178de3
@ -911,59 +911,65 @@ public abstract class SSLEngineTest {
|
|||||||
int cTOsPos = cTOs.position();
|
int cTOsPos = cTOs.position();
|
||||||
int sTOcPos = sTOc.position();
|
int sTOcPos = sTOc.position();
|
||||||
|
|
||||||
clientResult = clientEngine.wrap(empty, cTOs);
|
if (!clientHandshakeFinished) {
|
||||||
runDelegatedTasks(clientResult, clientEngine);
|
clientResult = clientEngine.wrap(empty, cTOs);
|
||||||
serverResult = serverEngine.wrap(empty, sTOc);
|
runDelegatedTasks(clientResult, clientEngine);
|
||||||
runDelegatedTasks(serverResult, serverEngine);
|
assertEquals(empty.remaining(), clientResult.bytesConsumed());
|
||||||
|
assertEquals(cTOs.position() - cTOsPos, clientResult.bytesProduced());
|
||||||
|
|
||||||
// Verify that the consumed and produced number match what is in the buffers now.
|
if (isHandshakeFinished(clientResult)) {
|
||||||
assertEquals(empty.remaining(), clientResult.bytesConsumed());
|
clientHandshakeFinished = true;
|
||||||
assertEquals(empty.remaining(), serverResult.bytesConsumed());
|
}
|
||||||
assertEquals(cTOs.position() - cTOsPos, clientResult.bytesProduced());
|
}
|
||||||
assertEquals(sTOc.position() - sTOcPos, serverResult.bytesProduced());
|
|
||||||
|
if (!serverHandshakeFinished) {
|
||||||
|
serverResult = serverEngine.wrap(empty, sTOc);
|
||||||
|
runDelegatedTasks(serverResult, serverEngine);
|
||||||
|
assertEquals(empty.remaining(), serverResult.bytesConsumed());
|
||||||
|
assertEquals(sTOc.position() - sTOcPos, serverResult.bytesProduced());
|
||||||
|
|
||||||
|
if (isHandshakeFinished(serverResult)) {
|
||||||
|
serverHandshakeFinished = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
cTOs.flip();
|
cTOs.flip();
|
||||||
sTOc.flip();
|
sTOc.flip();
|
||||||
|
|
||||||
// Verify that we only had one SSLEngineResult.HandshakeStatus.FINISHED
|
|
||||||
if (isHandshakeFinished(clientResult)) {
|
|
||||||
assertFalse(clientHandshakeFinished);
|
|
||||||
clientHandshakeFinished = true;
|
|
||||||
}
|
|
||||||
if (isHandshakeFinished(serverResult)) {
|
|
||||||
assertFalse(serverHandshakeFinished);
|
|
||||||
serverHandshakeFinished = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
cTOsPos = cTOs.position();
|
cTOsPos = cTOs.position();
|
||||||
sTOcPos = sTOc.position();
|
sTOcPos = sTOc.position();
|
||||||
|
|
||||||
int clientAppReadBufferPos = clientAppReadBuffer.position();
|
if (!clientHandshakeFinished) {
|
||||||
int serverAppReadBufferPos = serverAppReadBuffer.position();
|
int clientAppReadBufferPos = clientAppReadBuffer.position();
|
||||||
|
clientResult = clientEngine.unwrap(sTOc, clientAppReadBuffer);
|
||||||
|
|
||||||
clientResult = clientEngine.unwrap(sTOc, clientAppReadBuffer);
|
runDelegatedTasks(clientResult, clientEngine);
|
||||||
runDelegatedTasks(clientResult, clientEngine);
|
assertEquals(sTOc.position() - sTOcPos, clientResult.bytesConsumed());
|
||||||
serverResult = serverEngine.unwrap(cTOs, serverAppReadBuffer);
|
assertEquals(clientAppReadBuffer.position() - clientAppReadBufferPos, clientResult.bytesProduced());
|
||||||
runDelegatedTasks(serverResult, serverEngine);
|
|
||||||
|
|
||||||
// Verify that the consumed and produced number match what is in the buffers now.
|
if (isHandshakeFinished(clientResult)) {
|
||||||
assertEquals(sTOc.position() - sTOcPos, clientResult.bytesConsumed());
|
clientHandshakeFinished = true;
|
||||||
assertEquals(cTOs.position() - cTOsPos, serverResult.bytesConsumed());
|
}
|
||||||
assertEquals(clientAppReadBuffer.position() - clientAppReadBufferPos, clientResult.bytesProduced());
|
} else {
|
||||||
assertEquals(serverAppReadBuffer.position() - serverAppReadBufferPos, serverResult.bytesProduced());
|
assertFalse(sTOc.hasRemaining());
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!serverHandshakeFinished) {
|
||||||
|
int serverAppReadBufferPos = serverAppReadBuffer.position();
|
||||||
|
serverResult = serverEngine.unwrap(cTOs, serverAppReadBuffer);
|
||||||
|
runDelegatedTasks(serverResult, serverEngine);
|
||||||
|
assertEquals(cTOs.position() - cTOsPos, serverResult.bytesConsumed());
|
||||||
|
assertEquals(serverAppReadBuffer.position() - serverAppReadBufferPos, serverResult.bytesProduced());
|
||||||
|
|
||||||
|
if (isHandshakeFinished(serverResult)) {
|
||||||
|
serverHandshakeFinished = true;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
assertFalse(cTOs.hasRemaining());
|
||||||
|
}
|
||||||
|
|
||||||
cTOs.compact();
|
|
||||||
sTOc.compact();
|
sTOc.compact();
|
||||||
|
cTOs.compact();
|
||||||
// Verify that we only had one SSLEngineResult.HandshakeStatus.FINISHED
|
|
||||||
if (isHandshakeFinished(clientResult)) {
|
|
||||||
assertFalse(clientHandshakeFinished);
|
|
||||||
clientHandshakeFinished = true;
|
|
||||||
}
|
|
||||||
if (isHandshakeFinished(serverResult)) {
|
|
||||||
assertFalse(serverHandshakeFinished);
|
|
||||||
serverHandshakeFinished = true;
|
|
||||||
}
|
|
||||||
} while (!clientHandshakeFinished || !serverHandshakeFinished);
|
} while (!clientHandshakeFinished || !serverHandshakeFinished);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user