@Test
    void serviceOptionsShouldOverrideServerBuilder() {
        final HttpService httpService1 = new HttpService() {
            @Override
            public HttpResponse serve(ServiceRequestContext ctx, HttpRequest req) {
                return HttpResponse.of("OK");
            }

            @Override
            public ServiceOptions options() {
                return SERVICE_OPTIONS;
            }
        };

        final long defaultRequestTimeoutMillis = 30001;
        final long defaultMaxRequestLength = 30002;
        final long defaultRequestAutoAbortDelayMillis = 30003;
        try (Server server = Server.builder()
                                   .service("/test", httpService1)
                                   .requestTimeoutMillis(defaultRequestTimeoutMillis)
                                   .maxRequestLength(defaultMaxRequestLength)
                                   .requestAutoAbortDelayMillis(defaultRequestAutoAbortDelayMillis)
                                   .build()) {

            final ServiceConfig sc1 = server.serviceConfigs()
                                            .stream()
                                            .filter(s -> s.route().paths().contains("/test"))
                                            .findFirst().get();
            assertThat(sc1.requestTimeoutMillis()).isEqualTo(SERVICE_OPTIONS.requestTimeoutMillis());
            assertThat(sc1.maxRequestLength()).isEqualTo(SERVICE_OPTIONS.maxRequestLength());
            assertThat(sc1.requestAutoAbortDelayMillis()).isEqualTo(
                    SERVICE_OPTIONS.requestAutoAbortDelayMillis());
        }
    }
The priority of configurations from highest to lowest:
1. ServiceBinderBuilder
2. ServiceOptions (if exists)
3. VirtualHostBuilder
4. ServerBuilder
core/src/test/java/com/linecorp/armeria/server/ServiceOptionsTest.java