@ParameterizedTest
    @ArgumentsSource(SerializationFormatProvider.class)
    void testSync_HelloService_hello_with_null(SerializationFormat defaultSerializationFormat)
            throws Exception {
        final HelloService.Client client = new HelloService.Client.Factory().getClient(
                inProto(defaultSerializationFormat), outProto(defaultSerializationFormat));
        client.send_hello(null);
        assertThat(out.length()).isGreaterThan(0);

        final THttpService service = THttpService.of(
                (HelloService.Iface) name -> String.valueOf(name != null), defaultSerializationFormat);

        invoke(service);

        assertThat(client.recv_hello()).isEqualTo("false");
    }
Tests {@link ThriftCallService} and {@link THttpService}.
<p>
The test methods have the following naming convention:

<pre><i>TestType</i>_<i>ServiceName</i>_<i>MethodName</i>[_<i>AdditionalInfo</i>]()</pre>

.. where each field has the following meaning:
<ul>
    <li>{@code TestType}
    <ul>
        <li>{@code Sync} tests an invocation of synchronous service. i.e. {@code *.Iface}</li>
        <li>{@code Async} tests an invocation of asynchronous service. i.e. {@code *.AsyncIface}</li>
        <li>{@code Identity} tests if the results of synchronous and asynchronous operations are identical
            at protocol level.</li>
        <li>{@code MultipleInheritance} tests the case where a service implementation implements
            multiple interfaces.</li>
    </ul></li>
    <li>{@code ServiceName} - the class name of the service being tested</li>
    <li>{@code MethodName} - the name of the method in the service being tested</li>
    <li>(Optional) {@code AdditionalInfo} - specified when a service method has more than one test case</li>
</ul>
</p>
thrift/thrift0.13/src/test/java/com/linecorp/armeria/server/thrift/ThriftServiceTest.java