private void verifyVersionMessageFails(ProtocolVersion.NewConnectionClientVersion versionRequest) throws Exception { ByteArrayInputStream inputStream = MessageUtil.writeMessageDelimitedToInputStream(versionRequest); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); try { protocolVersionHandler.handleVersionMessage(inputStream, outputStream, mock(ClientStatistics.class)); fail("Invalid version should throw IOException"); } catch (IOException e) { // expected if version verification fails } ProtocolVersion.VersionAcknowledgement versionResponse = ProtocolVersion.VersionAcknowledgement .parseDelimitedFrom(new ByteArrayInputStream(outputStream.toByteArray())); assertFalse(versionResponse.getVersionAccepted()); }
@Test public void testCurrentVersionVersionMessageSucceeds() throws Exception { ProtocolVersion.NewConnectionClientVersion versionRequest = generateVersionMessageRequest(ProtocolVersion.MajorVersions.CURRENT_MAJOR_VERSION_VALUE, ProtocolVersion.MinorVersions.CURRENT_MINOR_VERSION_VALUE); ByteArrayInputStream inputStream = MessageUtil.writeMessageDelimitedToInputStream(versionRequest); ByteArrayOutputStream outputStream = new ByteArrayOutputStream(); assertTrue(protocolVersionHandler.handleVersionMessage(inputStream, outputStream, mock(ClientStatistics.class))); ProtocolVersion.VersionAcknowledgement versionResponse = ProtocolVersion.VersionAcknowledgement .parseDelimitedFrom(new ByteArrayInputStream(outputStream.toByteArray())); assertTrue(versionResponse.getVersionAccepted()); assertEquals(ProtocolVersion.MajorVersions.CURRENT_MAJOR_VERSION_VALUE, versionResponse.getServerMajorVersion()); assertEquals(ProtocolVersion.MinorVersions.CURRENT_MINOR_VERSION_VALUE, versionResponse.getServerMinorVersion()); }