# Copyright 2022 gRPC authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # Format of each entry: # name: name of the experiment # description: description of the experiment # expiry: when is the next time this experiment *must* be updated # (date, YYYY/MM/DD) # test_tags: a set of bazel tags, that if a test declares them signals # that that test should be run with this experiment enabled in CI # allow_in_fuzzing_config: optional boolean (true if not specified) # if false, this experiment will not be included in fuzzers that # explore the config space # requires: A list of names of experiments that this experiment depends on. # Defaults to the empty list. # If any of the experiments in the required list is determined to # be disabled at runtime, this experiment is disabled at runtime. # uses_polling: optional boolean (false if not specified) that indicates that # this experiment should be tested with all different polling # engines. # # Well known test tags: # core_end2end_test: all tests, fixtures in the core end2end suite # endpoint_test: endpoint related iomgr tests # flow_control_test: tests pertaining explicitly to flow control # hpack_test: hpack encode/decode tests # promise_test: tests around the promise architecture # resource_quota_test: tests known to exercse resource quota # This file only defines the experiments. Refer to rollouts.yaml for the rollout # state of each experiment. - name: call_status_override_on_cancellation description: Avoid overriding call status of successfully finished calls if it races with cancellation. expiry: 2024/04/01 owner: vigneshbabu@google.com test_tags: [] - name: call_v3 description: Promise-based call version 3. expiry: 2024/06/01 owner: ctiller@google.com test_tags: [] - name: canary_client_privacy description: If set, canary client privacy expiry: 2024/08/01 owner: alishananda@google.com test_tags: [] allow_in_fuzzing_config: false - name: chaotic_good description: If set, enable the chaotic good load transport (this is mostly here for testing) expiry: 2024/09/09 owner: ctiller@google.com requires: [promise_based_client_call, promise_based_server_call] test_tags: [core_end2end_test] - name: client_privacy description: If set, client privacy expiry: 2024/08/01 owner: alishananda@google.com test_tags: [] allow_in_fuzzing_config: false - name: event_engine_client description: Use EventEngine clients instead of iomgr's grpc_tcp_client expiry: 2024/07/01 owner: hork@google.com test_tags: ["core_end2end_test", "event_engine_client_test"] uses_polling: true - name: event_engine_dns description: If set, use EventEngine DNSResolver for client channel resolution expiry: 2024/07/01 owner: yijiem@google.com test_tags: ["cancel_ares_query_test", "resolver_component_tests_runner_invoker"] allow_in_fuzzing_config: false uses_polling: true - name: event_engine_listener description: Use EventEngine listeners instead of iomgr's grpc_tcp_server expiry: 2024/07/01 owner: vigneshbabu@google.com test_tags: ["core_end2end_test", "event_engine_listener_test"] uses_polling: true - name: free_large_allocator description: If set, return all free bytes from a "big" allocator expiry: 2024/08/01 owner: alishananda@google.com test_tags: [resource_quota_test] - name: http2_stats_fix description: Fix on HTTP2 outgoing data stats reporting expiry: 2024/03/31 owner: yashkt@google.com test_tags: [] - name: keepalive_fix description: Allows overriding keepalive_permit_without_calls. Refer https://github.com/grpc/grpc/pull/33428 for more information. expiry: 2024/06/30 owner: yashkt@google.com test_tags: [] allow_in_fuzzing_config: false - name: keepalive_server_fix description: Allows overriding keepalive_permit_without_calls for servers. Refer https://github.com/grpc/grpc/pull/33917 for more information. expiry: 2024/12/31 owner: yashkt@google.com test_tags: [] allow_in_fuzzing_config: false - name: monitoring_experiment description: Placeholder experiment to prove/disprove our monitoring is working expiry: never-ever owner: ctiller@google.com test_tags: [] - name: multiping description: Allow more than one ping to be in flight at a time by default. expiry: 2024/06/15 owner: ctiller@google.com test_tags: [flow_control_test] - name: peer_state_based_framing description: If set, the max sizes of frames sent to lower layers is controlled based on the peer's memory pressure which is reflected in its max http2 frame size. expiry: 2024/08/01 owner: vigneshbabu@google.com test_tags: ["flow_control_test"] - name: pending_queue_cap description: In the sync & async apis (but not the callback api), cap the number of received but unrequested requests in the server for each call type. A received message is one that was read from the wire on the server. A requested message is one explicitly requested by the application using grpc_server_request_call or grpc_server_request_registered_call (or their wrappers in the C++ API). expiry: 2024/05/05 owner: ctiller@google.com test_tags: [] - name: promise_based_client_call description: If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based) expiry: 2024/06/14 owner: ctiller@google.com test_tags: ["core_end2end_test", "lame_client_test"] requires: ["event_engine_listener", "event_engine_client"] - name: promise_based_inproc_transport description: Use promises for the in-process transport. expiry: 2024/06/06 owner: ctiller@google.com test_tags: [] allow_in_fuzzing_config: false # experiment currently crashes if enabled requires: [promise_based_client_call, promise_based_server_call] - name: promise_based_server_call description: If set, use the new gRPC promise based call code when it's appropriate (ie when all filters in a stack are promise based) expiry: 2024/06/14 owner: ctiller@google.com test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "logging_test"] - name: rstpit description: On RST_STREAM on a server, reduce MAX_CONCURRENT_STREAMS for a short duration expiry: 2024/08/03 owner: ctiller@google.com test_tags: [flow_control_test] - name: schedule_cancellation_over_write description: Allow cancellation op to be scheduled over a write expiry: 2024/04/01 owner: vigneshbabu@google.com test_tags: [] - name: server_privacy description: If set, server privacy expiry: 2024/08/01 owner: alishananda@google.com test_tags: [] allow_in_fuzzing_config: false - name: tcp_frame_size_tuning description: If set, enables TCP to use RPC size estimation made by higher layers. TCP would not indicate completion of a read operation until a specified number of bytes have been read over the socket. Buffers are also allocated according to estimated RPC sizes. expiry: 2024/08/01 owner: vigneshbabu@google.com test_tags: ["endpoint_test", "flow_control_test"] - name: tcp_rcv_lowat description: Use SO_RCVLOWAT to avoid wakeups on the read path. expiry: 2024/08/01 owner: vigneshbabu@google.com test_tags: ["endpoint_test", "flow_control_test"] - name: trace_record_callops description: Enables tracing of call batch initiation and completion. expiry: 2024/04/01 owner: vigneshbabu@google.com test_tags: [] - name: unconstrained_max_quota_buffer_size description: Discard the cap on the max free pool size for one memory allocator expiry: 2024/09/01 owner: ctiller@google.com test_tags: [resource_quota_test] - name: work_serializer_clears_time_cache description: Have the work serializer clear the time cache when it dispatches work. expiry: 2024/07/01 owner: ctiller@google.com test_tags: [] - name: work_serializer_dispatch description: Have the work serializer dispatch work to event engine for every callback, instead of running things inline in the first thread that successfully enqueues work. expiry: 2024/06/30 owner: ysseung@google.com test_tags: ["core_end2end_test", "cpp_end2end_test", "xds_end2end_test", "lb_unit_test"]