@Test
    void defaultTcpUserTimeoutApplied() {
        assumeThat(Flags.transportType()).isEqualTo(TransportType.EPOLL);

        // default tcp user timeout applied
        final int lingerMillis = 1000;
        final int idleTimeoutMillis = 12_000;
        Server server = Server.builder()
                              .service("/", (ctx, req) -> HttpResponse.of(HttpStatus.OK))
                              .idleTimeoutMillis(idleTimeoutMillis)
                              .childChannelOption(SO_LINGER, lingerMillis)
                              .build();
        Map<ChannelOption<?>, Object> childChannelOptions =
                (Map<ChannelOption<?>, Object>) server.config().childChannelOptions();
        assertThat(childChannelOptions)
                .containsExactly(entry(TCP_USER_TIMEOUT, idleTimeoutMillis + TCP_USER_TIMEOUT_BUFFER_MILLIS),
                                 entry(SO_LINGER, lingerMillis));

        // user defined value is respected
        final int userDefinedValue = 30_000;
        server = Server.builder()
                       .service("/", (ctx, req) -> HttpResponse.of(HttpStatus.OK))
                       .idleTimeoutMillis(idleTimeoutMillis)
                       .childChannelOption(TCP_USER_TIMEOUT, userDefinedValue)
                       .childChannelOption(SO_LINGER, lingerMillis)
                       .build();
        childChannelOptions = (Map<ChannelOption<?>, Object>) server.config().childChannelOptions();
        assertThat(childChannelOptions)
                .containsExactly(entry(TCP_USER_TIMEOUT, userDefinedValue),
                                 entry(SO_LINGER, lingerMillis));
    }
Makes sure that {@link ServerBuilder#decorator(DecoratingHttpServiceFunction)} works at every service and
virtual hosts and {@link VirtualHostBuilder#decorator(DecoratingHttpServiceFunction)} works only at
its own services.
core/src/test/java/com/linecorp/armeria/server/ServerBuilderTest.java