Refactor `AbstractSimpleTransportTestCase` and `MockTransportService` to not use `Version.transportVersion` 
test/framework/src/main/java/org/elasticsearch/transport/AbstractSimpleTransportTestCase.java
TransportRequestOptions.Type.BULK,
                TransportRequestOptions.Type.PING,
                TransportRequestOptions.Type.RECOVERY,
                TransportRequestOptions.Type.REG,
                TransportRequestOptions.Type.STATE
            );
            final ConnectTransportException e = expectThrows(
                ConnectTransportException.class,
                () -> openConnection(service, nodeA, builder.build())
            );
            assertThat(e, hasToString(containsString(("a channel closed while connecting"))));
            assertTrue(connectionClosedListenerCalled.get());
        }
    }
    public void testFailToSendTransportException() throws InterruptedException {
        TransportException exception = doFailToSend(new TransportException("fail to send"));
        assertThat(exception.getMessage(), equalTo("fail to send"));
        assertThat(exception.getCause(), nullValue());
    }
    public void testFailToSendIllegalStateException() throws InterruptedException {
        TransportException exception = doFailToSend(new IllegalStateException("fail to send"));
        assertThat(exception, instanceOf(SendRequestTransportException.class));
        assertThat(exception.getMessage(), containsString("fail-to-send-action"));
        assertThat(exception.getCause(), instanceOf(IllegalStateException.class));
        assertThat(exception.getCause().getMessage(), equalTo("fail to send"));
    }
    public void testChannelToString() {
        final String ACTION = "internal:action";
        serviceA.registerRequestHandler(ACTION, ThreadPool.Names.SAME, TransportRequest.Empty::new, (request, channel, task) -> {
            assertThat(